diff --git a/.c8rc.json b/.c8rc.json deleted file mode 100644 index 987f3f7b..00000000 --- a/.c8rc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "reporter": [ - "lcov" - ], - "include": [ - "lib/**/*.js" - ], - "exclude": [ - "lib/test/**/*.js" - ] -} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09b9e339..d58afefa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: include: - executeLint: true - node: 20 + node: lts/* os: ubuntu-latest fail-fast: false @@ -44,11 +44,6 @@ jobs: node-version: ${{ matrix.node }} cache: yarn - # - name: Install ESLint ${{ matrix.eslint }} - # if: ${{ matrix.eslint != 9 }} - # run: | - # yarn add -D eslint@${{ matrix.eslint }} eslint-plugin-unicorn@56 - - name: Install Dependencies run: yarn --immutable diff --git a/README.md b/README.md index 1be1e311..62174275 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,22 @@ -

- - CI status - - - npm version - - - license - - - Coverage Status - - - Total npm downloads - -

+# eslint-plugin-jsx-a11y-x -Get professional support for eslint-plugin-jsx-a11y-x on Tidelift +[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/es-tooling/eslint-plugin-jsx-a11y-x/ci.yml?branch=main)](https://github.com/es-tooling/eslint-plugin-jsx-a11y-x/actions/workflows/ci.yml?query=branch%3Amain) +[![Codecov](https://img.shields.io/codecov/c/github/es-tooling/eslint-plugin-jsx-a11y-x.svg)](https://codecov.io/gh/es-tooling/eslint-plugin-jsx-a11y-x) +[![type-coverage](https://img.shields.io/badge/dynamic/json.svg?label=type-coverage&prefix=%E2%89%A5&suffix=%&query=$.typeCoverage.atLeast&uri=https%3A%2F%2Fraw.githubusercontent.com%2Fes-tooling%2Feslint-plugin-jsx-a11y-x%2Fmain%2Fpackage.json)](https://github.com/plantain-00/type-coverage) +[![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/es-tooling/eslint-plugin-jsx-a11y-x)](https://coderabbit.ai) +[![npm](https://img.shields.io/npm/v/eslint-plugin-jsx-a11y-x.svg)](https://www.npmjs.com/package/eslint-plugin-jsx-a11y-x) +[![GitHub Release](https://img.shields.io/github/release/es-tooling/eslint-plugin-jsx-a11y-x)](https://github.com/es-tooling/eslint-plugin-jsx-a11y-x/releases) -# eslint-plugin-jsx-a11y-x +[![Conventional Commits](https://img.shields.io/badge/conventional%20commits-1.0.0-yellow.svg)](https://conventionalcommits.org) +[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovatebot.com) +[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) +[![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier) +[![changesets](https://img.shields.io/badge/maintained%20with-changesets-176de3.svg)](https://github.com/changesets/changesets) Static AST checker for accessibility rules on JSX elements. +Get professional support for eslint-plugin-jsx-a11y-x on Tidelift + ## Why? This plugin does a static evaluation of the JSX to spot accessibility issues in React apps. Because it only catches errors in static code, use it in combination with [@axe-core/react](https://github.com/dequelabs/axe-core-npm/tree/develop/packages/react) to test the accessibility of the rendered DOM. Consider these tools just as one step of a larger a11y testing process and always test your apps with assistive technology. diff --git a/__tests__/index-test.js b/__tests__/index.spec.js similarity index 54% rename from __tests__/index-test.js rename to __tests__/index.spec.js index 3a22cbba..521bc10d 100644 --- a/__tests__/index-test.js +++ b/__tests__/index.spec.js @@ -2,7 +2,6 @@ import fs from 'fs'; import path from 'path'; -import test from 'tape'; import plugin from '../src'; @@ -10,49 +9,32 @@ const rules = fs .readdirSync(path.resolve(__dirname, '../src/rules/')) .map(f => path.basename(f, '.js')); -test('all rule files should be exported by the plugin', t => { +test('all rule files should be exported by the plugin', () => { rules.forEach(ruleName => { - t.equal( - plugin.rules[ruleName], + expect(plugin.rules[ruleName]).toBe( require(path.join('../src/rules', ruleName)), - `exports ${ruleName}`, ); }); - - t.end(); }); -test('configurations', t => { - t.notEqual( - plugin.configs.recommended, - undefined, - "exports a 'recommended' configuration", - ); - - t.end(); +test('configurations', () => { + expect(plugin.configs.recommended).not.toBe(undefined); }); -test('schemas', t => { +test('schemas', () => { rules.forEach(ruleName => { const rule = require(path.join('../src/rules', ruleName)); const schema = rule.meta && rule.meta.schema && rule.meta.schema[0]; const { type } = schema; - t.equal(type, 'object', `${ruleName} exports a schema with type object`); + expect(type).toBe('object'); }); - - t.end(); }); -test('plugin referentially equal to prevent flat config issues', t => { +test('plugin referentially equal to prevent flat config issues', () => { const keys = Object.keys(plugin.flatConfigs); for (let i = 0; i < keys.length; i += 1) { const config = plugin.flatConfigs[keys[i]]; - t.equal( - plugin, - config.plugins['jsx-a11y-x'], - `${config.name}'s plugin reference is referentially equal to the top-level export`, - ); + expect(plugin).toBe(config.plugins['jsx-a11y-x']); } - t.end(); }); diff --git a/__tests__/src/rules/accessible-emoji-test.js b/__tests__/src/rules/accessible-emoji.spec.js similarity index 100% rename from __tests__/src/rules/accessible-emoji-test.js rename to __tests__/src/rules/accessible-emoji.spec.js diff --git a/__tests__/src/rules/alt-text-test.js b/__tests__/src/rules/alt-text.spec.js similarity index 100% rename from __tests__/src/rules/alt-text-test.js rename to __tests__/src/rules/alt-text.spec.js diff --git a/__tests__/src/rules/anchor-ambiguous-text-test.js b/__tests__/src/rules/anchor-ambiguous-text.spec.js similarity index 100% rename from __tests__/src/rules/anchor-ambiguous-text-test.js rename to __tests__/src/rules/anchor-ambiguous-text.spec.js diff --git a/__tests__/src/rules/anchor-has-content-test.js b/__tests__/src/rules/anchor-has-content.spec.js similarity index 100% rename from __tests__/src/rules/anchor-has-content-test.js rename to __tests__/src/rules/anchor-has-content.spec.js diff --git a/__tests__/src/rules/anchor-is-valid-test.js b/__tests__/src/rules/anchor-is-valid.spec.js similarity index 100% rename from __tests__/src/rules/anchor-is-valid-test.js rename to __tests__/src/rules/anchor-is-valid.spec.js diff --git a/__tests__/src/rules/aria-activedescendant-has-tabindex-test.js b/__tests__/src/rules/aria-activedescendant-has-tabindex.spec.js similarity index 100% rename from __tests__/src/rules/aria-activedescendant-has-tabindex-test.js rename to __tests__/src/rules/aria-activedescendant-has-tabindex.spec.js diff --git a/__tests__/src/rules/aria-props-test.js b/__tests__/src/rules/aria-props.spec.js similarity index 100% rename from __tests__/src/rules/aria-props-test.js rename to __tests__/src/rules/aria-props.spec.js diff --git a/__tests__/src/rules/aria-proptypes-test.js b/__tests__/src/rules/aria-proptypes.spec.js similarity index 98% rename from __tests__/src/rules/aria-proptypes-test.js rename to __tests__/src/rules/aria-proptypes.spec.js index 161a74fa..e54d6172 100644 --- a/__tests__/src/rules/aria-proptypes-test.js +++ b/__tests__/src/rules/aria-proptypes.spec.js @@ -9,7 +9,6 @@ import { aria } from 'aria-query'; import { RuleTester } from 'eslint'; -import test from 'tape'; import parserOptionsMapper from '../../__util__/parserOptionsMapper'; import parsers from '../../__util__/helpers/parsers'; @@ -57,14 +56,8 @@ tokens from the following: ${permittedValues}.`, } }; -test('validityCheck', t => { - t.equal( - validityCheck(null, null), - false, - 'is false for an unknown expected type', - ); - - t.end(); +test('validityCheck', () => { + expect(validityCheck(null, null)).toBe(false); }); ruleTester.run('aria-proptypes', rule, { diff --git a/__tests__/src/rules/aria-role-test.js b/__tests__/src/rules/aria-role.spec.js similarity index 100% rename from __tests__/src/rules/aria-role-test.js rename to __tests__/src/rules/aria-role.spec.js diff --git a/__tests__/src/rules/aria-unsupported-elements-test.js b/__tests__/src/rules/aria-unsupported-elements.spec.js similarity index 100% rename from __tests__/src/rules/aria-unsupported-elements-test.js rename to __tests__/src/rules/aria-unsupported-elements.spec.js diff --git a/__tests__/src/rules/autocomplete-valid-test.js b/__tests__/src/rules/autocomplete-valid.spec.js similarity index 100% rename from __tests__/src/rules/autocomplete-valid-test.js rename to __tests__/src/rules/autocomplete-valid.spec.js diff --git a/__tests__/src/rules/click-events-have-key-events-test.js b/__tests__/src/rules/click-events-have-key-events.spec.js similarity index 100% rename from __tests__/src/rules/click-events-have-key-events-test.js rename to __tests__/src/rules/click-events-have-key-events.spec.js diff --git a/__tests__/src/rules/control-has-associated-label-test.js b/__tests__/src/rules/control-has-associated-label.spec.js similarity index 100% rename from __tests__/src/rules/control-has-associated-label-test.js rename to __tests__/src/rules/control-has-associated-label.spec.js diff --git a/__tests__/src/rules/heading-has-content-test.js b/__tests__/src/rules/heading-has-content.spec.js similarity index 100% rename from __tests__/src/rules/heading-has-content-test.js rename to __tests__/src/rules/heading-has-content.spec.js diff --git a/__tests__/src/rules/html-has-lang-test.js b/__tests__/src/rules/html-has-lang.spec.js similarity index 100% rename from __tests__/src/rules/html-has-lang-test.js rename to __tests__/src/rules/html-has-lang.spec.js diff --git a/__tests__/src/rules/iframe-has-title-test.js b/__tests__/src/rules/iframe-has-title.spec.js similarity index 100% rename from __tests__/src/rules/iframe-has-title-test.js rename to __tests__/src/rules/iframe-has-title.spec.js diff --git a/__tests__/src/rules/img-redundant-alt-test.js b/__tests__/src/rules/img-redundant-alt.spec.js similarity index 100% rename from __tests__/src/rules/img-redundant-alt-test.js rename to __tests__/src/rules/img-redundant-alt.spec.js diff --git a/__tests__/src/rules/interactive-supports-focus-test.js b/__tests__/src/rules/interactive-supports-focus.spec.js similarity index 100% rename from __tests__/src/rules/interactive-supports-focus-test.js rename to __tests__/src/rules/interactive-supports-focus.spec.js diff --git a/__tests__/src/rules/label-has-associated-control-test.js b/__tests__/src/rules/label-has-associated-control.spec.js similarity index 100% rename from __tests__/src/rules/label-has-associated-control-test.js rename to __tests__/src/rules/label-has-associated-control.spec.js diff --git a/__tests__/src/rules/label-has-for-test.js b/__tests__/src/rules/label-has-for.spec.js similarity index 100% rename from __tests__/src/rules/label-has-for-test.js rename to __tests__/src/rules/label-has-for.spec.js diff --git a/__tests__/src/rules/lang-test.js b/__tests__/src/rules/lang.spec.js similarity index 100% rename from __tests__/src/rules/lang-test.js rename to __tests__/src/rules/lang.spec.js diff --git a/__tests__/src/rules/media-has-caption-test.js b/__tests__/src/rules/media-has-caption.spec.js similarity index 100% rename from __tests__/src/rules/media-has-caption-test.js rename to __tests__/src/rules/media-has-caption.spec.js diff --git a/__tests__/src/rules/mouse-events-have-key-events-test.js b/__tests__/src/rules/mouse-events-have-key-events.spec.js similarity index 100% rename from __tests__/src/rules/mouse-events-have-key-events-test.js rename to __tests__/src/rules/mouse-events-have-key-events.spec.js diff --git a/__tests__/src/rules/no-access-key-test.js b/__tests__/src/rules/no-access-key.spec.js similarity index 100% rename from __tests__/src/rules/no-access-key-test.js rename to __tests__/src/rules/no-access-key.spec.js diff --git a/__tests__/src/rules/no-aria-hidden-on-focusable-test.js b/__tests__/src/rules/no-aria-hidden-on-focusable.spec.js similarity index 100% rename from __tests__/src/rules/no-aria-hidden-on-focusable-test.js rename to __tests__/src/rules/no-aria-hidden-on-focusable.spec.js diff --git a/__tests__/src/rules/no-autofocus-test.js b/__tests__/src/rules/no-autofocus.spec.js similarity index 100% rename from __tests__/src/rules/no-autofocus-test.js rename to __tests__/src/rules/no-autofocus.spec.js diff --git a/__tests__/src/rules/no-distracting-elements-test.js b/__tests__/src/rules/no-distracting-elements.spec.js similarity index 100% rename from __tests__/src/rules/no-distracting-elements-test.js rename to __tests__/src/rules/no-distracting-elements.spec.js diff --git a/__tests__/src/rules/no-interactive-element-to-noninteractive-role-test.js b/__tests__/src/rules/no-interactive-element-to-noninteractive-role.spec.js similarity index 100% rename from __tests__/src/rules/no-interactive-element-to-noninteractive-role-test.js rename to __tests__/src/rules/no-interactive-element-to-noninteractive-role.spec.js diff --git a/__tests__/src/rules/no-noninteractive-element-interactions-test.js b/__tests__/src/rules/no-noninteractive-element-interactions.spec.js similarity index 100% rename from __tests__/src/rules/no-noninteractive-element-interactions-test.js rename to __tests__/src/rules/no-noninteractive-element-interactions.spec.js diff --git a/__tests__/src/rules/no-noninteractive-element-to-interactive-role-test.js b/__tests__/src/rules/no-noninteractive-element-to-interactive-role.spec.js similarity index 100% rename from __tests__/src/rules/no-noninteractive-element-to-interactive-role-test.js rename to __tests__/src/rules/no-noninteractive-element-to-interactive-role.spec.js diff --git a/__tests__/src/rules/no-noninteractive-tabindex-test.js b/__tests__/src/rules/no-noninteractive-tabindex.spec.js similarity index 100% rename from __tests__/src/rules/no-noninteractive-tabindex-test.js rename to __tests__/src/rules/no-noninteractive-tabindex.spec.js diff --git a/__tests__/src/rules/no-onchange-test.js b/__tests__/src/rules/no-onchange.spec.js similarity index 100% rename from __tests__/src/rules/no-onchange-test.js rename to __tests__/src/rules/no-onchange.spec.js diff --git a/__tests__/src/rules/no-redundant-roles-test.js b/__tests__/src/rules/no-redundant-roles.spec.js similarity index 100% rename from __tests__/src/rules/no-redundant-roles-test.js rename to __tests__/src/rules/no-redundant-roles.spec.js diff --git a/__tests__/src/rules/no-static-element-interactions-test.js b/__tests__/src/rules/no-static-element-interactions.spec.js similarity index 100% rename from __tests__/src/rules/no-static-element-interactions-test.js rename to __tests__/src/rules/no-static-element-interactions.spec.js diff --git a/__tests__/src/rules/prefer-tag-over-role-test.js b/__tests__/src/rules/prefer-tag-over-role.spec.js similarity index 100% rename from __tests__/src/rules/prefer-tag-over-role-test.js rename to __tests__/src/rules/prefer-tag-over-role.spec.js diff --git a/__tests__/src/rules/role-has-required-aria-props-test.js b/__tests__/src/rules/role-has-required-aria-props.spec.js similarity index 100% rename from __tests__/src/rules/role-has-required-aria-props-test.js rename to __tests__/src/rules/role-has-required-aria-props.spec.js diff --git a/__tests__/src/rules/role-supports-aria-props-test.js b/__tests__/src/rules/role-supports-aria-props.spec.js similarity index 100% rename from __tests__/src/rules/role-supports-aria-props-test.js rename to __tests__/src/rules/role-supports-aria-props.spec.js diff --git a/__tests__/src/rules/scope-test.js b/__tests__/src/rules/scope.spec.js similarity index 100% rename from __tests__/src/rules/scope-test.js rename to __tests__/src/rules/scope.spec.js diff --git a/__tests__/src/rules/tabindex-no-positive-test.js b/__tests__/src/rules/tabindex-no-positive.spec.js similarity index 100% rename from __tests__/src/rules/tabindex-no-positive-test.js rename to __tests__/src/rules/tabindex-no-positive.spec.js diff --git a/__tests__/src/util/attributesComparator-test.js b/__tests__/src/util/attributesComparator.spec.js similarity index 53% rename from __tests__/src/util/attributesComparator-test.js rename to __tests__/src/util/attributesComparator.spec.js index d9a0b709..48218447 100644 --- a/__tests__/src/util/attributesComparator-test.js +++ b/__tests__/src/util/attributesComparator.spec.js @@ -1,30 +1,18 @@ -import test from 'tape'; - import attributesComparator from '../../../src/util/attributesComparator'; import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; import JSXElementMock from '../../../__mocks__/JSXElementMock'; -test('attributesComparator', t => { - t.equal( - attributesComparator(), - true, - 'baseAttributes are undefined and attributes are undefined -> true', - ); +test('attributesComparator', () => { + expect(attributesComparator()).toBe(true); - t.equal( - attributesComparator([], []), - true, - 'baseAttributes are empty and attributes are empty -> true', - ); + expect(attributesComparator([], [])).toBe(true); - t.equal( + expect( attributesComparator( [], [JSXAttributeMock('foo', 0), JSXAttributeMock('bar', 'baz')], ), - true, - 'baseAttributes are empty and attributes have values -> true', - ); + ).toBe(true); const baseAttributes = [ { @@ -41,53 +29,39 @@ test('attributesComparator', t => { }, ]; - t.equal( - attributesComparator(baseAttributes, []), - false, - 'baseAttributes have values and attributes are empty -> false', - ); + expect(attributesComparator(baseAttributes, [])).toBe(false); - t.equal( + expect( attributesComparator(baseAttributes, [ JSXElementMock(), JSXAttributeMock('biz', 2), JSXAttributeMock('ziff', 'opo'), JSXAttributeMock('far', 'lolz'), ]), - false, - 'baseAttributes have values and attributes have values, and the values are different -> false', - ); + ).toBe(false); - t.equal( + expect( attributesComparator(baseAttributes, [ JSXAttributeMock('biz', 1), JSXAttributeMock('fizz', 'pop'), JSXAttributeMock('goo', 'gazz'), ]), - false, - 'baseAttributes have values and attributes have values, and the values are a subset -> false', - ); + ).toBe(false); - t.equal( + expect( attributesComparator(baseAttributes, [ JSXAttributeMock('biz', 1), JSXAttributeMock('fizz', 'pop'), JSXAttributeMock('fuzz', 'lolz'), ]), - true, - 'baseAttributes have values and attributes have values, and the values are the same -> true', - ); + ).toBe(true); - t.equal( + expect( attributesComparator(baseAttributes, [ JSXAttributeMock('biz', 1), JSXAttributeMock('fizz', 'pop'), JSXAttributeMock('fuzz', 'lolz'), JSXAttributeMock('dar', 'tee'), ]), - true, - 'baseAttributes have values and attributes have values, and the values are a superset -> true', - ); - - t.end(); + ).toBe(true); }); diff --git a/__tests__/src/util/getAccessibleChildText-test.js b/__tests__/src/util/getAccessibleChildText.spec.js similarity index 70% rename from __tests__/src/util/getAccessibleChildText-test.js rename to __tests__/src/util/getAccessibleChildText.spec.js index db9db1de..d3089317 100644 --- a/__tests__/src/util/getAccessibleChildText-test.js +++ b/__tests__/src/util/getAccessibleChildText.spec.js @@ -1,21 +1,18 @@ -import test from 'tape'; import { elementType } from 'jsx-ast-utils-x'; import getAccessibleChildText from '../../../src/util/getAccessibleChildText'; import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; import JSXElementMock from '../../../__mocks__/JSXElementMock'; -test('getAccessibleChildText', t => { - t.equal( +test('getAccessibleChildText', () => { + expect( getAccessibleChildText( JSXElementMock('a', [JSXAttributeMock('aria-label', 'foo')]), elementType, ), - 'foo', - 'returns the aria-label when present', - ); + ).toBe('foo'); - t.equal( + expect( getAccessibleChildText( JSXElementMock( 'a', @@ -24,29 +21,23 @@ test('getAccessibleChildText', t => { ), elementType, ), - 'foo', - 'returns the aria-label instead of children', - ); + ).toBe('foo'); - t.equal( + expect( getAccessibleChildText( JSXElementMock('a', [JSXAttributeMock('aria-hidden', 'true')]), elementType, ), - '', - 'skips elements with aria-hidden=true', - ); + ).toBe(''); - t.equal( + expect( getAccessibleChildText( JSXElementMock('a', [], [{ type: 'JSXText', value: 'bar' }]), elementType, ), - 'bar', - 'returns literal value for JSXText child', - ); + ).toBe('bar'); - t.equal( + expect( getAccessibleChildText( JSXElementMock( 'a', @@ -60,11 +51,9 @@ test('getAccessibleChildText', t => { ), elementType, ), - 'a sensible label', - 'returns alt text for img child', - ); + ).toBe('a sensible label'); - t.equal( + expect( getAccessibleChildText( JSXElementMock( 'a', @@ -73,38 +62,30 @@ test('getAccessibleChildText', t => { ), elementType, ), - '', - 'returns blank when alt tag is used on arbitrary element', - ); + ).toBe(''); - t.equal( + expect( getAccessibleChildText( JSXElementMock('a', [], [{ type: 'Literal', value: 'bar' }]), elementType, ), - 'bar', - 'returns literal value for JSXText child', - ); + ).toBe('bar'); - t.equal( + expect( getAccessibleChildText( JSXElementMock('a', [], [{ type: 'Literal', value: ' bar ' }]), elementType, ), - 'bar', - 'returns trimmed literal value for JSXText child', - ); + ).toBe('bar'); - t.equal( + expect( getAccessibleChildText( JSXElementMock('a', [], [{ type: 'Literal', value: 'foo bar' }]), elementType, ), - 'foo bar', - 'returns space-collapsed literal value for JSXText child', - ); + ).toBe('foo bar'); - t.equal( + expect( getAccessibleChildText( JSXElementMock( 'a', @@ -113,11 +94,9 @@ test('getAccessibleChildText', t => { ), elementType, ), - 'foo bar baz foo bar', - 'returns punctuation-stripped literal value for JSXText child', - ); + ).toBe('foo bar baz foo bar'); - t.equal( + expect( getAccessibleChildText( JSXElementMock( 'a', @@ -126,11 +105,9 @@ test('getAccessibleChildText', t => { ), elementType, ), - 'bar', - 'returns recursive value for JSXElement child', - ); + ).toBe('bar'); - t.equal( + expect( getAccessibleChildText( JSXElementMock( 'a', @@ -145,11 +122,9 @@ test('getAccessibleChildText', t => { ), elementType, ), - '', - 'skips children with aria-hidden-true', - ); + ).toBe(''); - t.equal( + expect( getAccessibleChildText( JSXElementMock( 'a', @@ -161,11 +136,9 @@ test('getAccessibleChildText', t => { ), elementType, ), - 'foo bar', - 'joins multiple children properly - no spacing', - ); + ).toBe('foo bar'); - t.equal( + expect( getAccessibleChildText( JSXElementMock( 'a', @@ -177,11 +150,9 @@ test('getAccessibleChildText', t => { ), elementType, ), - 'foo bar', - 'joins multiple children properly - with spacing', - ); + ).toBe('foo bar'); - t.equal( + expect( getAccessibleChildText( JSXElementMock( 'a', @@ -194,9 +165,5 @@ test('getAccessibleChildText', t => { ), elementType, ), - 'foo bar', - 'skips unknown elements', - ); - - t.end(); + ).toBe('foo bar'); }); diff --git a/__tests__/src/util/getComputedRole-test.js b/__tests__/src/util/getComputedRole-test.js deleted file mode 100644 index df440496..00000000 --- a/__tests__/src/util/getComputedRole-test.js +++ /dev/null @@ -1,50 +0,0 @@ -import test from 'tape'; - -import getComputedRole from '../../../src/util/getComputedRole'; -import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; - -test('getComputedRole', t => { - t.equal( - getComputedRole('div', [JSXAttributeMock('role', 'button')]), - 'button', - 'explicit role + valid role -> returns the role', - ); - - t.equal( - getComputedRole('li', [JSXAttributeMock('role', 'beeswax')]), - 'listitem', - 'explicit role + invalid role + has implicit -> returns the implicit role', - ); - - t.equal( - getComputedRole('div', [JSXAttributeMock('role', 'beeswax')]), - null, - 'explicit role + invalid role + lacks implicit -> returns null', - ); - - t.equal( - getComputedRole('li', []), - 'listitem', - 'explicit role + no role + has implicit -> returns the implicit role', - ); - - t.equal( - getComputedRole('div', []), - null, - 'explicit role + no role + lacks implicit -> returns null', - ); - - t.equal( - getComputedRole('li', [JSXAttributeMock('role', 'beeswax')]), - 'listitem', - 'implicit role + has implicit -> returns the implicit role', - ); - - t.equal( - getComputedRole('div', []), - null, - 'implicit role + lacks implicit -> returns null', - ); - - t.end(); -}); diff --git a/__tests__/src/util/getComputedRole.spec.js b/__tests__/src/util/getComputedRole.spec.js new file mode 100644 index 00000000..cbe84ab7 --- /dev/null +++ b/__tests__/src/util/getComputedRole.spec.js @@ -0,0 +1,26 @@ +import getComputedRole from '../../../src/util/getComputedRole'; +import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; + +test('getComputedRole', () => { + expect(getComputedRole('div', [JSXAttributeMock('role', 'button')])).toBe( + 'button', + ); + + expect(getComputedRole('li', [JSXAttributeMock('role', 'beeswax')])).toBe( + 'listitem', + ); + + expect(getComputedRole('div', [JSXAttributeMock('role', 'beeswax')])).toBe( + null, + ); + + expect(getComputedRole('li', [])).toBe('listitem'); + + expect(getComputedRole('div', [])).toBe(null); + + expect(getComputedRole('li', [JSXAttributeMock('role', 'beeswax')])).toBe( + 'listitem', + ); + + expect(getComputedRole('div', [])).toBe(null); +}); diff --git a/__tests__/src/util/getElementType-test.js b/__tests__/src/util/getElementType-test.js deleted file mode 100644 index 9c2c0f64..00000000 --- a/__tests__/src/util/getElementType-test.js +++ /dev/null @@ -1,178 +0,0 @@ -import test from 'tape'; - -import getElementType from '../../../src/util/getElementType'; -import JSXElementMock from '../../../__mocks__/JSXElementMock'; -import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; - -test('getElementType', t => { - t.test('no settings in context', st => { - const elementType = getElementType({ settings: {} }); - - st.equal( - elementType(JSXElementMock('input').openingElement), - 'input', - 'returns the exact tag name for a DOM element', - ); - - st.equal( - elementType(JSXElementMock('CustomInput').openingElement), - 'CustomInput', - 'returns the exact tag name for a custom element', - ); - - st.equal( - elementType(JSXElementMock('toString').openingElement), - 'toString', - 'returns the exact tag name for names that are in Object.prototype', - ); - - st.equal( - elementType( - JSXElementMock('span', [JSXAttributeMock('as', 'h1')]).openingElement, - ), - 'span', - 'returns the default tag name provided', - ); - - st.end(); - }); - - t.test('components settings in context', st => { - const elementType = getElementType({ - settings: { - 'jsx-a11y-x': { - components: { - CustomInput: 'input', - }, - }, - }, - }); - - st.equal( - elementType(JSXElementMock('input').openingElement), - 'input', - 'returns the exact tag name for a DOM element', - ); - - st.equal( - elementType(JSXElementMock('CustomInput').openingElement), - 'input', - 'returns the mapped tag name for a custom element', - ); - - st.equal( - elementType(JSXElementMock('CityInput').openingElement), - 'CityInput', - 'returns the exact tag name for a custom element not in the components map', - ); - - st.equal( - elementType( - JSXElementMock('span', [JSXAttributeMock('as', 'h1')]).openingElement, - ), - 'span', - 'return the default tag name since not polymorphicPropName was provided', - ); - - st.end(); - }); - - t.test('polymorphicPropName settings in context', st => { - const elementType = getElementType({ - settings: { - 'jsx-a11y-x': { - polymorphicPropName: 'asChild', - components: { - CustomButton: 'button', - }, - }, - }, - }); - - st.equal( - elementType( - JSXElementMock('span', [JSXAttributeMock('asChild', 'h1')]) - .openingElement, - ), - 'h1', - 'returns the tag name provided by the polymorphic prop, "asChild", defined in the settings', - ); - - st.equal( - elementType( - JSXElementMock('CustomButton', [JSXAttributeMock('asChild', 'a')]) - .openingElement, - ), - 'a', - 'returns the tag name provided by the polymorphic prop, "asChild", defined in the settings instead of the component mapping tag', - ); - - st.equal( - elementType( - JSXElementMock('CustomButton', [JSXAttributeMock('as', 'a')]) - .openingElement, - ), - 'button', - 'returns the tag name provided by the componnet mapping if the polymorphic prop, "asChild", defined in the settings is not set', - ); - - st.end(); - }); - - t.test( - 'polymorphicPropName settings and explicitly defined polymorphicAllowList in context', - st => { - const elementType = getElementType({ - settings: { - 'jsx-a11y-x': { - polymorphicPropName: 'asChild', - polymorphicAllowList: ['Box', 'Icon'], - components: { - Box: 'div', - Icon: 'svg', - }, - }, - }, - }); - - st.equal( - elementType( - JSXElementMock('Spinner', [JSXAttributeMock('asChild', 'img')]) - .openingElement, - ), - 'Spinner', - 'does not use the polymorphic prop if polymorphicAllowList is defined, but element is not part of polymorphicAllowList', - ); - - st.equal( - elementType( - JSXElementMock('Icon', [JSXAttributeMock('asChild', 'img')]) - .openingElement, - ), - 'img', - 'uses the polymorphic prop if it is in explicitly defined polymorphicAllowList', - ); - - st.equal( - elementType( - JSXElementMock('Box', [JSXAttributeMock('asChild', 'span')]) - .openingElement, - ), - 'span', - 'returns the tag name provided by the polymorphic prop, "asChild", defined in the settings instead of the component mapping tag', - ); - - st.equal( - elementType( - JSXElementMock('Box', [JSXAttributeMock('as', 'a')]).openingElement, - ), - 'div', - 'returns the tag name provided by the component mapping if the polymorphic prop, "asChild", defined in the settings is not set', - ); - - st.end(); - }, - ); - - t.end(); -}); diff --git a/__tests__/src/util/getElementType.spec.js b/__tests__/src/util/getElementType.spec.js new file mode 100644 index 00000000..1ee46513 --- /dev/null +++ b/__tests__/src/util/getElementType.spec.js @@ -0,0 +1,163 @@ +import getElementType from '../../../src/util/getElementType'; +import JSXElementMock from '../../../__mocks__/JSXElementMock'; +import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; + +describe('getElementType', () => { + test('no settings in context', () => { + const elementType = getElementType({ settings: {} }); + + expect(elementType(JSXElementMock('input').openingElement)).toBe( + 'input', + 'returns the exact tag name for a DOM element', + ); + + expect(elementType(JSXElementMock('CustomInput').openingElement)).toBe( + 'CustomInput', + 'returns the exact tag name for a custom element', + ); + + expect(elementType(JSXElementMock('toString').openingElement)).toBe( + 'toString', + 'returns the exact tag name for names that are in Object.prototype', + ); + + expect( + elementType( + JSXElementMock('span', [JSXAttributeMock('as', 'h1')]).openingElement, + ), + ).toBe('span', 'returns the default tag name provided'); + }); + + test('components settings in context', () => { + const elementType = getElementType({ + settings: { + 'jsx-a11y-x': { + components: { + CustomInput: 'input', + }, + }, + }, + }); + + expect(elementType(JSXElementMock('input').openingElement)).toBe( + 'input', + 'returns the exact tag name for a DOM element', + ); + + expect(elementType(JSXElementMock('CustomInput').openingElement)).toBe( + 'input', + 'returns the mapped tag name for a custom element', + ); + + expect(elementType(JSXElementMock('CityInput').openingElement)).toBe( + 'CityInput', + 'returns the exact tag name for a custom element not in the components map', + ); + + expect( + elementType( + JSXElementMock('span', [JSXAttributeMock('as', 'h1')]).openingElement, + ), + ).toBe( + 'span', + 'return the default tag name since not polymorphicPropName was provided', + ); + }); + + test('polymorphicPropName settings in context', () => { + const elementType = getElementType({ + settings: { + 'jsx-a11y-x': { + polymorphicPropName: 'asChild', + components: { + CustomButton: 'button', + }, + }, + }, + }); + + expect( + elementType( + JSXElementMock('span', [JSXAttributeMock('asChild', 'h1')]) + .openingElement, + ), + ).toBe( + 'h1', + 'returns the tag name provided by the polymorphic prop, "asChild", defined in the settings', + ); + + expect( + elementType( + JSXElementMock('CustomButton', [JSXAttributeMock('asChild', 'a')]) + .openingElement, + ), + ).toBe( + 'a', + 'returns the tag name provided by the polymorphic prop, "asChild", defined in the settings instead of the component mapping tag', + ); + + expect( + elementType( + JSXElementMock('CustomButton', [JSXAttributeMock('as', 'a')]) + .openingElement, + ), + ).toBe( + 'button', + 'returns the tag name provided by the componnet mapping if the polymorphic prop, "asChild", defined in the settings is not set', + ); + }); + + test('polymorphicPropName settings and explicitly defined polymorphicAllowList in context', () => { + const elementType = getElementType({ + settings: { + 'jsx-a11y-x': { + polymorphicPropName: 'asChild', + polymorphicAllowList: ['Box', 'Icon'], + components: { + Box: 'div', + Icon: 'svg', + }, + }, + }, + }); + + expect( + elementType( + JSXElementMock('Spinner', [JSXAttributeMock('asChild', 'img')]) + .openingElement, + ), + ).toBe( + 'Spinner', + 'does not use the polymorphic prop if polymorphicAllowList is defined, but element is not part of polymorphicAllowList', + ); + + expect( + elementType( + JSXElementMock('Icon', [JSXAttributeMock('asChild', 'img')]) + .openingElement, + ), + ).toBe( + 'img', + 'uses the polymorphic prop if it is in explicitly defined polymorphicAllowList', + ); + + expect( + elementType( + JSXElementMock('Box', [JSXAttributeMock('asChild', 'span')]) + .openingElement, + ), + ).toBe( + 'span', + 'returns the tag name provided by the polymorphic prop, "asChild", defined in the settings instead of the component mapping tag', + ); + + expect( + elementType( + JSXElementMock('Box', [JSXAttributeMock('as', 'a')]).openingElement, + ), + ).toBe( + 'div', + 'returns the tag name provided by the component mapping if the polymorphic prop, "asChild", defined in the settings is not set', + ); + }); +}); diff --git a/__tests__/src/util/getExplicitRole-test.js b/__tests__/src/util/getExplicitRole-test.js deleted file mode 100644 index fd468c0c..00000000 --- a/__tests__/src/util/getExplicitRole-test.js +++ /dev/null @@ -1,22 +0,0 @@ -import test from 'tape'; - -import getExplicitRole from '../../../src/util/getExplicitRole'; -import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; - -test('getExplicitRole', t => { - t.equal( - getExplicitRole('div', [JSXAttributeMock('role', 'button')]), - 'button', - 'valid role returns the role', - ); - - t.equal( - getExplicitRole('div', [JSXAttributeMock('role', 'beeswax')]), - null, - 'invalid role returns null', - ); - - t.equal(getExplicitRole('div', []), null, 'no role returns null'); - - t.end(); -}); diff --git a/__tests__/src/util/getExplicitRole.spec.js b/__tests__/src/util/getExplicitRole.spec.js new file mode 100644 index 00000000..b3fab819 --- /dev/null +++ b/__tests__/src/util/getExplicitRole.spec.js @@ -0,0 +1,14 @@ +import getExplicitRole from '../../../src/util/getExplicitRole'; +import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; + +test('getExplicitRole', () => { + expect(getExplicitRole('div', [JSXAttributeMock('role', 'button')])).toBe( + 'button', + ); + + expect(getExplicitRole('div', [JSXAttributeMock('role', 'beeswax')])).toBe( + null, + ); + + expect(getExplicitRole('div', [])).toBe(null); +}); diff --git a/__tests__/src/util/getImplicitRole-test.js b/__tests__/src/util/getImplicitRole-test.js deleted file mode 100644 index deef0a37..00000000 --- a/__tests__/src/util/getImplicitRole-test.js +++ /dev/null @@ -1,15 +0,0 @@ -import test from 'tape'; - -import getImplicitRole from '../../../src/util/getImplicitRole'; - -test('getImplicitRole', t => { - t.equal( - getImplicitRole('li', []), - 'listitem', - 'has implicit, returns implicit role', - ); - - t.equal(getImplicitRole('div', []), null, 'lacks implicit, returns null'); - - t.end(); -}); diff --git a/__tests__/src/util/getImplicitRole.spec.js b/__tests__/src/util/getImplicitRole.spec.js new file mode 100644 index 00000000..ee852f8d --- /dev/null +++ b/__tests__/src/util/getImplicitRole.spec.js @@ -0,0 +1,7 @@ +import getImplicitRole from '../../../src/util/getImplicitRole'; + +test('getImplicitRole', () => { + expect(getImplicitRole('li', [])).toBe('listitem'); + + expect(getImplicitRole('div', [])).toBe(null); +}); diff --git a/__tests__/src/util/getSuggestion-test.js b/__tests__/src/util/getSuggestion-test.js deleted file mode 100644 index 765abf9c..00000000 --- a/__tests__/src/util/getSuggestion-test.js +++ /dev/null @@ -1,37 +0,0 @@ -import test from 'tape'; - -import getSuggestion from '../../../src/util/getSuggestion'; - -test('spell check suggestion API', t => { - t.deepEqual( - [], - getSuggestion('foo'), - 'returns no suggestions given empty word and no dictionary', - ); - - t.deepEqual( - getSuggestion('foo'), - [], - 'returns no suggestions given real word and no dictionary', - ); - - t.deepEqual( - getSuggestion('fo', ['foo', 'bar', 'baz']), - ['foo'], - 'returns correct suggestion given real word and a dictionary', - ); - - t.deepEqual( - getSuggestion('theer', ['there', 'their', 'foo', 'bar']), - ['there', 'their'], - 'returns multiple correct suggestions given real word and a dictionary', - ); - - t.deepEqual( - getSuggestion('theer', ['there', 'their', 'foo', 'bar'], 1), - ['there'], - 'returns correct # of suggestions given the limit argument', - ); - - t.end(); -}); diff --git a/__tests__/src/util/getSuggestion.spec.js b/__tests__/src/util/getSuggestion.spec.js new file mode 100644 index 00000000..71b74666 --- /dev/null +++ b/__tests__/src/util/getSuggestion.spec.js @@ -0,0 +1,18 @@ +import getSuggestion from '../../../src/util/getSuggestion'; + +test('spell check suggestion API', () => { + expect([]).toEqual(getSuggestion('foo')); + + expect(getSuggestion('foo')).toEqual([]); + + expect(getSuggestion('fo', ['foo', 'bar', 'baz'])).toEqual(['foo']); + + expect(getSuggestion('theer', ['there', 'their', 'foo', 'bar'])).toEqual([ + 'there', + 'their', + ]); + + expect(getSuggestion('theer', ['there', 'their', 'foo', 'bar'], 1)).toEqual([ + 'there', + ]); +}); diff --git a/__tests__/src/util/getTabIndex-test.js b/__tests__/src/util/getTabIndex-test.js deleted file mode 100644 index 926656b0..00000000 --- a/__tests__/src/util/getTabIndex-test.js +++ /dev/null @@ -1,81 +0,0 @@ -import test from 'tape'; - -import getTabIndex from '../../../src/util/getTabIndex'; -import IdentifierMock from '../../../__mocks__/IdentifierMock'; -import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; - -test('getTabIndex', t => { - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', 0)), - 0, - 'tabIndex is defined as zero -> zero', - ); - - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', 1)), - 1, - 'tabIndex is defined as a positive integer -> returns it', - ); - - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', -1)), - -1, - 'tabIndex is defined as a negative integer -> returns it', - ); - - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', '')), - undefined, - 'tabIndex is defined as an empty string -> undefined', - ); - - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', 9.1)), - undefined, - 'tabIndex is defined as a float -> undefined', - ); - - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', '0')), - 0, - 'tabIndex is defined as a string which converts to a number -> returns the integer', - ); - - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', '0a')), - undefined, - 'tabIndex is defined as a string which is NaN -> returns undefined', - ); - - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', true)), - undefined, - 'tabIndex is defined as true -> returns undefined', - ); - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', false)), - undefined, - 'tabIndex is defined as false -> returns undefined', - ); - - t.equal( - typeof getTabIndex(JSXAttributeMock('tabIndex', () => 0)), - 'function', - 'tabIndex is defined as a function expression -> returns the correct type', - ); - - const name = 'identName'; - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', IdentifierMock(name), true)), - name, - 'tabIndex is defined as a variable expression -> returns the Identifier name', - ); - - t.equal( - getTabIndex(JSXAttributeMock('tabIndex', undefined)), - undefined, - 'tabIndex is not defined -> returns undefined', - ); - - t.end(); -}); diff --git a/__tests__/src/util/getTabIndex.spec.js b/__tests__/src/util/getTabIndex.spec.js new file mode 100644 index 00000000..137b6ad3 --- /dev/null +++ b/__tests__/src/util/getTabIndex.spec.js @@ -0,0 +1,33 @@ +import getTabIndex from '../../../src/util/getTabIndex'; +import IdentifierMock from '../../../__mocks__/IdentifierMock'; +import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; + +test('getTabIndex', () => { + expect(getTabIndex(JSXAttributeMock('tabIndex', 0))).toBe(0); + + expect(getTabIndex(JSXAttributeMock('tabIndex', 1))).toBe(1); + + expect(getTabIndex(JSXAttributeMock('tabIndex', -1))).toBe(-1); + + expect(getTabIndex(JSXAttributeMock('tabIndex', ''))).toBe(undefined); + + expect(getTabIndex(JSXAttributeMock('tabIndex', 9.1))).toBe(undefined); + + expect(getTabIndex(JSXAttributeMock('tabIndex', '0'))).toBe(0); + + expect(getTabIndex(JSXAttributeMock('tabIndex', '0a'))).toBe(undefined); + + expect(getTabIndex(JSXAttributeMock('tabIndex', true))).toBe(undefined); + expect(getTabIndex(JSXAttributeMock('tabIndex', false))).toBe(undefined); + + expect(typeof getTabIndex(JSXAttributeMock('tabIndex', () => 0))).toBe( + 'function', + ); + + const name = 'identName'; + expect( + getTabIndex(JSXAttributeMock('tabIndex', IdentifierMock(name), true)), + ).toBe(name); + + expect(getTabIndex(JSXAttributeMock('tabIndex', undefined))).toBe(undefined); +}); diff --git a/__tests__/src/util/hasAccessibleChild-test.js b/__tests__/src/util/hasAccessibleChild.spec.js similarity index 68% rename from __tests__/src/util/hasAccessibleChild-test.js rename to __tests__/src/util/hasAccessibleChild.spec.js index f2df739f..19b74f5d 100644 --- a/__tests__/src/util/hasAccessibleChild-test.js +++ b/__tests__/src/util/hasAccessibleChild.spec.js @@ -1,4 +1,3 @@ -import test from 'tape'; import { elementType } from 'jsx-ast-utils-x'; import hasAccessibleChild from '../../../src/util/hasAccessibleChild'; @@ -6,14 +5,12 @@ import JSXElementMock from '../../../__mocks__/JSXElementMock'; import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; import JSXExpressionContainerMock from '../../../__mocks__/JSXExpressionContainerMock'; -test('hasAccessibleChild', t => { - t.equal( - hasAccessibleChild(JSXElementMock('div', []), elementType), +test('hasAccessibleChild', () => { + expect(hasAccessibleChild(JSXElementMock('div', []), elementType)).toBe( false, - 'has no children and does not set dangerouslySetInnerHTML -> false', ); - t.equal( + expect( hasAccessibleChild( JSXElementMock( 'div', @@ -22,11 +19,9 @@ test('hasAccessibleChild', t => { ), elementType, ), - true, - 'has no children and sets dangerouslySetInnerHTML -> true', - ); + ).toBe(true); - t.equal( + expect( hasAccessibleChild( JSXElementMock( 'div', @@ -40,20 +35,16 @@ test('hasAccessibleChild', t => { ), elementType, ), - true, - 'has children + Literal child -> true', - ); + ).toBe(true); - t.equal( + expect( hasAccessibleChild( JSXElementMock('div', [], [JSXElementMock('div', [])]), elementType, ), - true, - 'has children + visible JSXElement child -> true', - ); + ).toBe(true); - t.equal( + expect( hasAccessibleChild( JSXElementMock( 'div', @@ -67,11 +58,9 @@ test('hasAccessibleChild', t => { ), elementType, ), - true, - 'has children + JSText element -> true', - ); + ).toBe(true); - t.equal( + expect( hasAccessibleChild( JSXElementMock( 'div', @@ -80,11 +69,9 @@ test('hasAccessibleChild', t => { ), elementType, ), - false, - 'has children + hidden child JSXElement -> false', - ); + ).toBe(false); - t.equal( + expect( hasAccessibleChild( JSXElementMock( 'div', @@ -98,11 +85,9 @@ test('hasAccessibleChild', t => { ), elementType, ), - true, - 'defined JSXExpressionContainer -> true', - ); + ).toBe(true); - t.equal( + expect( hasAccessibleChild( JSXElementMock( 'div', @@ -116,11 +101,9 @@ test('hasAccessibleChild', t => { ), elementType, ), - false, - 'has children + undefined JSXExpressionContainer -> false', - ); + ).toBe(false); - t.equal( + expect( hasAccessibleChild( JSXElementMock( 'div', @@ -133,20 +116,16 @@ test('hasAccessibleChild', t => { ), elementType, ), - false, - 'unknown child type -> false', - ); + ).toBe(false); - t.equal( + expect( hasAccessibleChild( JSXElementMock('div', [JSXAttributeMock('children', true)], []), elementType, ), - true, - 'children passed as a prop -> true', - ); + ).toBe(true); - t.equal( + expect( hasAccessibleChild( JSXElementMock( 'div', @@ -155,11 +134,9 @@ test('hasAccessibleChild', t => { ), elementType, ), - false, - 'has chidren -> hidden child input JSXElement -> false', - ); + ).toBe(false); - t.equal( + expect( hasAccessibleChild( JSXElementMock( 'div', @@ -168,11 +145,9 @@ test('hasAccessibleChild', t => { ), elementType, ), - true, - 'has children + custom JSXElement of type hidden -> true', - ); + ).toBe(true); - t.equal( + expect( hasAccessibleChild( JSXElementMock( 'div', @@ -181,9 +156,5 @@ test('hasAccessibleChild', t => { ), () => 'input', ), - false, - 'custom JSXElement mapped to input if type is hidden -> false', - ); - - t.end(); + ).toBe(false); }); diff --git a/__tests__/src/util/implicitRoles/input-test.js b/__tests__/src/util/implicitRoles/input-test.js deleted file mode 100644 index a85f21eb..00000000 --- a/__tests__/src/util/implicitRoles/input-test.js +++ /dev/null @@ -1,87 +0,0 @@ -import test from 'tape'; - -import JSXAttributeMock from '../../../../__mocks__/JSXAttributeMock'; -import getImplicitRoleForInput from '../../../../src/util/implicitRoles/input'; - -test('isAbstractRole', t => { - t.test('works for buttons', st => { - st.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'button')]), - 'button', - ); - - st.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'image')]), - 'button', - ); - - st.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'reset')]), - 'button', - ); - - st.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'submit')]), - 'button', - ); - - st.end(); - }); - - t.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'checkbox')]), - 'checkbox', - 'works for checkboxes', - ); - - t.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'radio')]), - 'radio', - 'works for radios', - ); - - t.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'range')]), - 'slider', - 'works for ranges', - ); - - t.test('works for textboxes', st => { - st.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'email')]), - 'textbox', - ); - st.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'password')]), - 'textbox', - ); - st.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'search')]), - 'textbox', - ); - st.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'tel')]), - 'textbox', - ); - st.equal( - getImplicitRoleForInput([JSXAttributeMock('type', 'url')]), - 'textbox', - ); - - st.end(); - }); - - t.equal( - getImplicitRoleForInput([JSXAttributeMock('type', '')]), - 'textbox', - 'works for the default case', - ); - - t.equal( - getImplicitRoleForInput([JSXAttributeMock('type', true)]), - 'textbox', - 'works for the true case', - ); - - t.end(); -}); diff --git a/__tests__/src/util/implicitRoles/input.spec.js b/__tests__/src/util/implicitRoles/input.spec.js new file mode 100644 index 00000000..12f5b5f3 --- /dev/null +++ b/__tests__/src/util/implicitRoles/input.spec.js @@ -0,0 +1,60 @@ +import JSXAttributeMock from '../../../../__mocks__/JSXAttributeMock'; +import getImplicitRoleForInput from '../../../../src/util/implicitRoles/input'; + +describe('isAbstractRole', () => { + test('works for buttons', () => { + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'button')])).toBe( + 'button', + ); + + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'image')])).toBe( + 'button', + ); + + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'reset')])).toBe( + 'button', + ); + + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'submit')])).toBe( + 'button', + ); + }); + + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'checkbox')])).toBe( + 'checkbox', + ); + + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'radio')])).toBe( + 'radio', + ); + + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'range')])).toBe( + 'slider', + ); + + test('works for textboxes', () => { + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'email')])).toBe( + 'textbox', + ); + expect( + getImplicitRoleForInput([JSXAttributeMock('type', 'password')]), + ).toBe('textbox'); + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'search')])).toBe( + 'textbox', + ); + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'tel')])).toBe( + 'textbox', + ); + expect(getImplicitRoleForInput([JSXAttributeMock('type', 'url')])).toBe( + 'textbox', + ); + }); + + expect(getImplicitRoleForInput([JSXAttributeMock('type', '')])).toBe( + 'textbox', + ); + + expect(getImplicitRoleForInput([JSXAttributeMock('type', true)])).toBe( + 'textbox', + ); +}); diff --git a/__tests__/src/util/implicitRoles/menu-test.js b/__tests__/src/util/implicitRoles/menu-test.js deleted file mode 100644 index fcc55b99..00000000 --- a/__tests__/src/util/implicitRoles/menu-test.js +++ /dev/null @@ -1,20 +0,0 @@ -import test from 'tape'; - -import JSXAttributeMock from '../../../../__mocks__/JSXAttributeMock'; -import getImplicitRoleForMenu from '../../../../src/util/implicitRoles/menu'; - -test('isAbstractRole', t => { - t.equal( - getImplicitRoleForMenu([JSXAttributeMock('type', 'toolbar')]), - 'toolbar', - 'works for toolbars', - ); - - t.equal( - getImplicitRoleForMenu([JSXAttributeMock('type', '')]), - '', - 'works for non-toolbars', - ); - - t.end(); -}); diff --git a/__tests__/src/util/implicitRoles/menu.spec.js b/__tests__/src/util/implicitRoles/menu.spec.js new file mode 100644 index 00000000..acc17f4d --- /dev/null +++ b/__tests__/src/util/implicitRoles/menu.spec.js @@ -0,0 +1,10 @@ +import JSXAttributeMock from '../../../../__mocks__/JSXAttributeMock'; +import getImplicitRoleForMenu from '../../../../src/util/implicitRoles/menu'; + +test('isAbstractRole', () => { + expect(getImplicitRoleForMenu([JSXAttributeMock('type', 'toolbar')])).toBe( + 'toolbar', + ); + + expect(getImplicitRoleForMenu([JSXAttributeMock('type', '')])).toBe(''); +}); diff --git a/__tests__/src/util/implicitRoles/menuitem-test.js b/__tests__/src/util/implicitRoles/menuitem-test.js deleted file mode 100644 index be789e85..00000000 --- a/__tests__/src/util/implicitRoles/menuitem-test.js +++ /dev/null @@ -1,38 +0,0 @@ -import test from 'tape'; - -import JSXAttributeMock from '../../../../__mocks__/JSXAttributeMock'; -import getImplicitRoleForMenuitem from '../../../../src/util/implicitRoles/menuitem'; - -test('isAbstractRole', t => { - t.equal( - getImplicitRoleForMenuitem([JSXAttributeMock('type', 'command')]), - 'menuitem', - 'works for menu items', - ); - - t.equal( - getImplicitRoleForMenuitem([JSXAttributeMock('type', 'checkbox')]), - 'menuitemcheckbox', - 'works for menu item checkboxes', - ); - - t.equal( - getImplicitRoleForMenuitem([JSXAttributeMock('type', 'radio')]), - 'menuitemradio', - 'works for menu item radios', - ); - - t.equal( - getImplicitRoleForMenuitem([JSXAttributeMock('type', '')]), - '', - 'works for non-toolbars', - ); - - t.equal( - getImplicitRoleForMenuitem([JSXAttributeMock('type', true)]), - '', - 'works for the true case', - ); - - t.end(); -}); diff --git a/__tests__/src/util/implicitRoles/menuitem.spec.js b/__tests__/src/util/implicitRoles/menuitem.spec.js new file mode 100644 index 00000000..83144d28 --- /dev/null +++ b/__tests__/src/util/implicitRoles/menuitem.spec.js @@ -0,0 +1,20 @@ +import JSXAttributeMock from '../../../../__mocks__/JSXAttributeMock'; +import getImplicitRoleForMenuitem from '../../../../src/util/implicitRoles/menuitem'; + +test('isAbstractRole', () => { + expect( + getImplicitRoleForMenuitem([JSXAttributeMock('type', 'command')]), + ).toBe('menuitem'); + + expect( + getImplicitRoleForMenuitem([JSXAttributeMock('type', 'checkbox')]), + ).toBe('menuitemcheckbox'); + + expect(getImplicitRoleForMenuitem([JSXAttributeMock('type', 'radio')])).toBe( + 'menuitemradio', + ); + + expect(getImplicitRoleForMenuitem([JSXAttributeMock('type', '')])).toBe(''); + + expect(getImplicitRoleForMenuitem([JSXAttributeMock('type', true)])).toBe(''); +}); diff --git a/__tests__/src/util/implicitRoles/select-test.js b/__tests__/src/util/implicitRoles/select.spec.js similarity index 53% rename from __tests__/src/util/implicitRoles/select-test.js rename to __tests__/src/util/implicitRoles/select.spec.js index 05e90136..96ccdc92 100644 --- a/__tests__/src/util/implicitRoles/select-test.js +++ b/__tests__/src/util/implicitRoles/select.spec.js @@ -1,154 +1,129 @@ -import test from 'tape'; - import JSXAttributeMock from '../../../../__mocks__/JSXAttributeMock'; import getImplicitRoleForSelect from '../../../../src/util/implicitRoles/select'; -test('isAbstractRole', t => { - t.test('works for combobox', st => { - st.equal(getImplicitRoleForSelect([]), 'combobox', 'defaults to combobox'); +describe('isAbstractRole', () => { + test('works for combobox', () => { + expect(getImplicitRoleForSelect([])).toBe( + 'combobox', + 'defaults to combobox', + ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('multiple', null)]), + expect(getImplicitRoleForSelect([JSXAttributeMock('multiple', null)])).toBe( 'combobox', 'is combobox when multiple attribute is set to not be present', ); - st.equal( + expect( getImplicitRoleForSelect([JSXAttributeMock('multiple', undefined)]), + ).toBe( 'combobox', 'is combobox when multiple attribute is set to not be present', ); - st.equal( + expect( getImplicitRoleForSelect([JSXAttributeMock('multiple', false)]), + ).toBe( 'combobox', 'is combobox when multiple attribute is set to boolean false', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('multiple', '')]), + expect(getImplicitRoleForSelect([JSXAttributeMock('multiple', '')])).toBe( 'combobox', 'is listbox when multiple attribute is falsey (empty string)', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', '1')]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', '1')])).toBe( 'combobox', 'is combobox when size is not greater than 1', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', 1)]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', 1)])).toBe( 'combobox', 'is combobox when size is not greater than 1', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', 0)]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', 0)])).toBe( 'combobox', 'is combobox when size is not greater than 1', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', '0')]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', '0')])).toBe( 'combobox', 'is combobox when size is not greater than 1', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', '-1')]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', '-1')])).toBe( 'combobox', 'is combobox when size is not greater than 1', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', '')]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', '')])).toBe( 'combobox', 'is combobox when size is a valid number', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', 'true')]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', 'true')])).toBe( 'combobox', 'is combobox when size is a valid number', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', true)]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', true)])).toBe( 'combobox', 'is combobox when size is a valid number', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', NaN)]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', NaN)])).toBe( 'combobox', 'is combobox when size is a valid number', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', '')]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', '')])).toBe( 'combobox', 'is combobox when size is a valid number', ); - st.equal( + expect( getImplicitRoleForSelect([JSXAttributeMock('size', undefined)]), - 'combobox', - 'is combobox when size is a valid number', - ); + ).toBe('combobox', 'is combobox when size is a valid number'); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', false)]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', false)])).toBe( 'combobox', 'is combobox when size is a valid number', ); - - st.end(); }); - t.test('works for listbox based on multiple attribute', st => { - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('multiple', true)]), + test('works for listbox based on multiple attribute', () => { + expect(getImplicitRoleForSelect([JSXAttributeMock('multiple', true)])).toBe( 'listbox', 'is listbox when multiple is boolean true', ); - st.equal( + expect( getImplicitRoleForSelect([JSXAttributeMock('multiple', 'multiple')]), - 'listbox', - 'is listbox when multiple is truthy (string)', - ); + ).toBe('listbox', 'is listbox when multiple is truthy (string)'); - st.equal( + expect( getImplicitRoleForSelect([JSXAttributeMock('multiple', 'true')]), + ).toBe( 'listbox', 'is listbox when multiple is truthy (string) - React will warn about this', ); - - st.end(); }); - t.test('works for listbox based on size attribute', st => { - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', 2)]), + test('works for listbox based on size attribute', () => { + expect(getImplicitRoleForSelect([JSXAttributeMock('size', 2)])).toBe( 'listbox', 'is listbox when size is greater than 1', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', '3')]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', '3')])).toBe( 'listbox', 'is listbox when size is greater than 1', ); - st.equal( - getImplicitRoleForSelect([JSXAttributeMock('size', 40)]), + expect(getImplicitRoleForSelect([JSXAttributeMock('size', 40)])).toBe( 'listbox', 'is listbox when size is greater than 1', ); - - st.end(); }); - - t.end(); }); diff --git a/__tests__/src/util/isAbstractRole-test.js b/__tests__/src/util/isAbstractRole.spec.js similarity index 59% rename from __tests__/src/util/isAbstractRole-test.js rename to __tests__/src/util/isAbstractRole.spec.js index cc6a6b2e..2275e161 100644 --- a/__tests__/src/util/isAbstractRole-test.js +++ b/__tests__/src/util/isAbstractRole.spec.js @@ -1,4 +1,3 @@ -import test from 'tape'; import { elementType } from 'jsx-ast-utils-x'; import isAbstractRole from '../../../src/util/isAbstractRole'; @@ -8,38 +7,26 @@ import { genNonAbstractRoleElements, } from '../../../__mocks__/genInteractives'; -test('isAbstractRole', t => { - t.equal( - isAbstractRole(undefined, []), - false, - 'does NOT identify JSX Components (no tagName) as abstract role elements', - ); +describe('isAbstractRole', () => { + expect(isAbstractRole(undefined, [])).toBe(false); - t.test('elements with an abstract role', st => { + test('elements with an abstract role', () => { genAbstractRoleElements().forEach(({ openingElement }) => { const { attributes } = openingElement; - st.equal( - isAbstractRole(elementType(openingElement), attributes), + expect(isAbstractRole(elementType(openingElement), attributes)).toBe( true, `identifies \`${genElementSymbol(openingElement)}\` as an abstract role element`, ); }); - - st.end(); }); - t.test('elements with a non-abstract role', st => { + test('elements with a non-abstract role', () => { genNonAbstractRoleElements().forEach(({ openingElement }) => { const { attributes } = openingElement; - st.equal( - isAbstractRole(elementType(openingElement), attributes), + expect(isAbstractRole(elementType(openingElement), attributes)).toBe( false, `does NOT identify \`${genElementSymbol(openingElement)}\` as an abstract role element`, ); }); - - st.end(); }); - - t.end(); }); diff --git a/__tests__/src/util/isContentEditable-test.js b/__tests__/src/util/isContentEditable.spec.js similarity index 80% rename from __tests__/src/util/isContentEditable-test.js rename to __tests__/src/util/isContentEditable.spec.js index 16b87a21..4cbceba8 100644 --- a/__tests__/src/util/isContentEditable-test.js +++ b/__tests__/src/util/isContentEditable.spec.js @@ -1,52 +1,48 @@ -import test from 'tape'; - import isContentEditable from '../../../src/util/isContentEditable'; import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; -test('isContentEditable - HTML5', t => { - t.equal( +describe('isContentEditable - HTML5', () => { + expect( isContentEditable('some tag', [ JSXAttributeMock('contentEditable', 'true'), ]), - true, - 'identifies HTML5 contentEditable elements', - ); + ).toBe(true); - t.test('not content editable', st => { - st.equal( + test('not content editable', () => { + expect( isContentEditable('some tag', [ JSXAttributeMock('contentEditable', null), ]), + ).toBe( false, 'does not identify HTML5 content editable elements with null as the value', ); - st.equal( + expect( isContentEditable('some tag', [ JSXAttributeMock('contentEditable', undefined), ]), + ).toBe( false, 'does not identify HTML5 content editable elements with undefined as the value', ); - st.equal( + expect( isContentEditable('some tag', [ JSXAttributeMock('contentEditable', true), ]), + ).toBe( false, 'does not identify HTML5 content editable elements with true as the value', ); - st.equal( + expect( isContentEditable('some tag', [ JSXAttributeMock('contentEditable', 'false'), ]), + ).toBe( false, 'does not identify HTML5 content editable elements with "false" as the value', ); - - st.end(); }); - - t.end(); }); diff --git a/__tests__/src/util/isDOMElement-test.js b/__tests__/src/util/isDOMElement.spec.js similarity index 54% rename from __tests__/src/util/isDOMElement-test.js rename to __tests__/src/util/isDOMElement.spec.js index 343e95cc..572d1955 100644 --- a/__tests__/src/util/isDOMElement-test.js +++ b/__tests__/src/util/isDOMElement.spec.js @@ -1,30 +1,20 @@ -import test from 'tape'; import { dom } from 'aria-query'; import { elementType } from 'jsx-ast-utils-x'; import isDOMElement from '../../../src/util/isDOMElement'; import JSXElementMock from '../../../__mocks__/JSXElementMock'; -test('isDOMElement', t => { - t.test('DOM elements', st => { +describe('isDOMElement', () => { + test('DOM elements', () => { dom.forEach((_, el) => { const element = JSXElementMock(el); - st.equal( - isDOMElement(elementType(element.openingElement)), + expect(isDOMElement(elementType(element.openingElement))).toBe( true, `identifies ${el} as a DOM element`, ); }); - - st.end(); }); - t.equal( - isDOMElement(JSXElementMock('CustomElement')), - false, - 'does not identify a custom element', - ); - - t.end(); + expect(isDOMElement(JSXElementMock('CustomElement'))).toBe(false); }); diff --git a/__tests__/src/util/isDisabledElement-test.js b/__tests__/src/util/isDisabledElement.spec.js similarity index 53% rename from __tests__/src/util/isDisabledElement-test.js rename to __tests__/src/util/isDisabledElement.spec.js index 5b627242..4f2c020a 100644 --- a/__tests__/src/util/isDisabledElement-test.js +++ b/__tests__/src/util/isDisabledElement.spec.js @@ -1,70 +1,54 @@ -import test from 'tape'; - import isDisabledElement from '../../../src/util/isDisabledElement'; import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; -test('isDisabledElement', t => { - t.test('HTML5', st => { - st.equal( - isDisabledElement([JSXAttributeMock('disabled', 'disabled')]), +describe('isDisabledElement', () => { + test('HTML5', () => { + expect(isDisabledElement([JSXAttributeMock('disabled', 'disabled')])).toBe( true, 'identifies HTML5 disabled elements', ); - st.equal( - isDisabledElement([JSXAttributeMock('disabled', null)]), + expect(isDisabledElement([JSXAttributeMock('disabled', null)])).toBe( true, 'identifies HTML5 disabled elements with null as the value', ); - st.equal( - isDisabledElement([JSXAttributeMock('disabled', undefined)]), + expect(isDisabledElement([JSXAttributeMock('disabled', undefined)])).toBe( false, 'does not identify HTML5 disabled elements with undefined as the value', ); - - st.end(); }); - t.test('ARIA', st => { - st.equal( - isDisabledElement([JSXAttributeMock('aria-disabled', 'true')]), + test('ARIA', () => { + expect(isDisabledElement([JSXAttributeMock('aria-disabled', 'true')])).toBe( true, 'does not identify ARIA disabled elements', ); - st.equal( - isDisabledElement([JSXAttributeMock('aria-disabled', true)]), + expect(isDisabledElement([JSXAttributeMock('aria-disabled', true)])).toBe( true, 'does not identify ARIA disabled elements', ); - st.equal( + expect( isDisabledElement([JSXAttributeMock('aria-disabled', 'false')]), - false, - 'does not identify ARIA disabled elements', - ); + ).toBe(false, 'does not identify ARIA disabled elements'); - st.equal( - isDisabledElement([JSXAttributeMock('aria-disabled', false)]), + expect(isDisabledElement([JSXAttributeMock('aria-disabled', false)])).toBe( false, 'does not identify ARIA disabled elements', ); - st.equal( - isDisabledElement([JSXAttributeMock('aria-disabled', null)]), + expect(isDisabledElement([JSXAttributeMock('aria-disabled', null)])).toBe( false, 'does not identify ARIA disabled elements with null as the value', ); - st.equal( + expect( isDisabledElement([JSXAttributeMock('aria-disabled', undefined)]), + ).toBe( false, 'does not identify ARIA disabled elements with undefined as the value', ); - - st.end(); }); - - t.end(); }); diff --git a/__tests__/src/util/isFocusable-test.js b/__tests__/src/util/isFocusable.spec.js similarity index 88% rename from __tests__/src/util/isFocusable-test.js rename to __tests__/src/util/isFocusable.spec.js index 22c71e05..b97c6102 100644 --- a/__tests__/src/util/isFocusable-test.js +++ b/__tests__/src/util/isFocusable.spec.js @@ -1,4 +1,3 @@ -import test from 'tape'; import { elementType } from 'jsx-ast-utils-x'; import isFocusable from '../../../src/util/isFocusable'; @@ -13,93 +12,96 @@ function mergeTabIndex(index, attributes) { return [].concat(attributes, JSXAttributeMock('tabIndex', index)); } -test('isFocusable', t => { - t.test('interactive elements', st => { +describe('isFocusable', () => { + test('interactive elements', () => { genInteractiveElements().forEach(({ openingElement }) => { - st.equal( + expect( isFocusable(elementType(openingElement), openingElement.attributes), + ).toBe( true, `identifies \`${genElementSymbol(openingElement)}\` as a focusable element`, ); - st.equal( + expect( isFocusable( elementType(openingElement), mergeTabIndex(-1, openingElement.attributes), ), + ).toBe( false, `does NOT identify \`${genElementSymbol(openingElement)}\` with tabIndex of -1 as a focusable element`, ); - st.equal( + expect( isFocusable( elementType(openingElement), mergeTabIndex(0, openingElement.attributes), ), + ).toBe( true, `identifies \`${genElementSymbol(openingElement)}\` with tabIndex of 0 as a focusable element`, ); - st.equal( + expect( isFocusable( elementType(openingElement), mergeTabIndex(1, openingElement.attributes), ), + ).toBe( true, `identifies \`${genElementSymbol(openingElement)}\` with tabIndex of 1 as a focusable element`, ); }); - - st.end(); }); - t.test('non-interactive elements', st => { + test('non-interactive elements', () => { genNonInteractiveElements().forEach(({ openingElement }) => { - st.equal( + expect( isFocusable(elementType(openingElement), openingElement.attributes), + ).toBe( false, `does NOT identify \`${genElementSymbol(openingElement)}\` as a focusable element`, ); - st.equal( + expect( isFocusable( elementType(openingElement), mergeTabIndex(-1, openingElement.attributes), ), + ).toBe( false, `does NOT identify \`${genElementSymbol(openingElement)}\` with tabIndex of -1 as a focusable element`, ); - st.equal( + expect( isFocusable( elementType(openingElement), mergeTabIndex(0, openingElement.attributes), ), + ).toBe( true, `identifies \`${genElementSymbol(openingElement)}\` with tabIndex of 0 as a focusable element`, ); - st.equal( + expect( isFocusable( elementType(openingElement), mergeTabIndex(1, openingElement.attributes), ), + ).toBe( true, `identifies \`${genElementSymbol(openingElement)}\` with tabIndex of 1 as a focusable element`, ); - st.equal( + expect( isFocusable( elementType(openingElement), mergeTabIndex('bogus', openingElement.attributes), ), + ).toBe( false, `does NOT identify \`${genElementSymbol(openingElement)}\` with tabIndex of 'bogus' as a focusable element`, ); }); - - st.end(); }); - - t.end(); }); diff --git a/__tests__/src/util/isInteractiveElement-test.js b/__tests__/src/util/isInteractiveElement.spec.js similarity index 73% rename from __tests__/src/util/isInteractiveElement-test.js rename to __tests__/src/util/isInteractiveElement.spec.js index 69284989..c063c401 100644 --- a/__tests__/src/util/isInteractiveElement-test.js +++ b/__tests__/src/util/isInteractiveElement.spec.js @@ -1,4 +1,3 @@ -import test from 'tape'; import { elementType } from 'jsx-ast-utils-x'; import isInteractiveElement from '../../../src/util/isInteractiveElement'; @@ -12,93 +11,78 @@ import { genNonInteractiveRoleElements, } from '../../../__mocks__/genInteractives'; -test('isInteractiveElement', t => { - t.equal( - isInteractiveElement(undefined, []), - false, - 'identifies them as interactive elements', - ); +describe('isInteractiveElement', () => { + expect(isInteractiveElement(undefined, [])).toBe(false); - t.test('interactive elements', st => { + test('interactive elements', () => { genInteractiveElements().forEach(({ openingElement }) => { - st.equal( + expect( isInteractiveElement( elementType(openingElement), openingElement.attributes, ), + ).toBe( true, `identifies \`${genElementSymbol(openingElement)}\` as an interactive element`, ); }); - - st.end(); }); - t.test('interactive role elements', st => { + test('interactive role elements', () => { genInteractiveRoleElements().forEach(({ openingElement }) => { - st.equal( + expect( isInteractiveElement( elementType(openingElement), openingElement.attributes, ), + ).toBe( false, `identifies \`${genElementSymbol(openingElement)}\` as an interactive element`, ); }); - - st.end(); }); - t.test('non-interactive elements', st => { + test('non-interactive elements', () => { genNonInteractiveElements().forEach(({ openingElement }) => { - st.equal( + expect( isInteractiveElement( elementType(openingElement), openingElement.attributes, ), + ).toBe( false, `identifies \`${genElementSymbol(openingElement)}\` as an interactive element`, ); }); - - st.end(); }); - t.test('non-interactive role elements', st => { + test('non-interactive role elements', () => { genNonInteractiveRoleElements().forEach(({ openingElement }) => { - st.equal( + expect( isInteractiveElement( elementType(openingElement), openingElement.attributes, ), + ).toBe( false, `identifies \`${genElementSymbol(openingElement)}\` as an interactive element`, ); }); - - st.end(); }); - t.test('indeterminate elements', st => { + test('indeterminate elements', () => { genIndeterminantInteractiveElements().forEach(({ openingElement }) => { - st.equal( + expect( isInteractiveElement( elementType(openingElement), openingElement.attributes, ), + ).toBe( false, `identifies \`${genElementSymbol(openingElement)}\` as an interactive element`, ); }); - - st.end(); }); - t.equal( - isInteractiveElement('CustomComponent', JSXElementMock()), - false, - 'JSX elements are not interactive', - ); - - t.end(); + expect(isInteractiveElement('CustomComponent', JSXElementMock())).toBe(false); }); diff --git a/__tests__/src/util/isInteractiveRole-test.js b/__tests__/src/util/isInteractiveRole.spec.js similarity index 53% rename from __tests__/src/util/isInteractiveRole-test.js rename to __tests__/src/util/isInteractiveRole.spec.js index 0987fd70..31d49703 100644 --- a/__tests__/src/util/isInteractiveRole-test.js +++ b/__tests__/src/util/isInteractiveRole.spec.js @@ -1,4 +1,3 @@ -import test from 'tape'; import { elementType } from 'jsx-ast-utils-x'; import isInteractiveRole from '../../../src/util/isInteractiveRole'; @@ -8,46 +7,30 @@ import { genNonInteractiveRoleElements, } from '../../../__mocks__/genInteractives'; -test('isInteractiveRole', t => { - t.equal( - isInteractiveRole(undefined, []), - false, - 'identifies JSX Components (no tagName) as interactive role elements', - ); +describe('isInteractiveRole', () => { + expect(isInteractiveRole(undefined, [])).toBe(false); - t.test('elements with a non-interactive role', st => { + test('elements with a non-interactive role', () => { genNonInteractiveRoleElements().forEach(({ openingElement }) => { const { attributes } = openingElement; - st.equal( - isInteractiveRole(elementType(openingElement), attributes), + expect(isInteractiveRole(elementType(openingElement), attributes)).toBe( false, `does NOT identify \`${genElementSymbol(openingElement)}\` as an interactive role element`, ); }); - - st.end(); }); - t.equal( - isInteractiveRole('div', []), - false, - 'does NOT identify elements without a role as interactive role elements', - ); + expect(isInteractiveRole('div', [])).toBe(false); - t.test('elements with an interactive role', st => { + test('elements with an interactive role', () => { genInteractiveRoleElements().forEach(({ openingElement }) => { const { attributes } = openingElement; - st.equal( - isInteractiveRole(elementType(openingElement), attributes), + expect(isInteractiveRole(elementType(openingElement), attributes)).toBe( true, `identifies \`${genElementSymbol(openingElement)}\` as an interactive role element`, ); }); - - st.end(); }); - - t.end(); }); diff --git a/__tests__/src/util/isNonInteractiveElement-test.js b/__tests__/src/util/isNonInteractiveElement.spec.js similarity index 76% rename from __tests__/src/util/isNonInteractiveElement-test.js rename to __tests__/src/util/isNonInteractiveElement.spec.js index 441b9d22..f8d2b6e5 100644 --- a/__tests__/src/util/isNonInteractiveElement-test.js +++ b/__tests__/src/util/isNonInteractiveElement.spec.js @@ -1,4 +1,3 @@ -import test from 'tape'; import { elementType } from 'jsx-ast-utils-x'; import isNonInteractiveElement from '../../../src/util/isNonInteractiveElement'; @@ -11,87 +10,76 @@ import { genNonInteractiveRoleElements, } from '../../../__mocks__/genInteractives'; -test('isNonInteractiveElement', t => { - t.equal( - isNonInteractiveElement(undefined, []), - false, - 'identifies JSX Components (no tagName) as non-interactive elements', - ); +describe('isNonInteractiveElement', () => { + expect(isNonInteractiveElement(undefined, [])).toBe(false); - t.test('non-interactive elements', st => { + test('non-interactive elements', () => { genNonInteractiveElements().forEach(({ openingElement }) => { - st.equal( + expect( isNonInteractiveElement( elementType(openingElement), openingElement.attributes, ), + ).toBe( true, `identifies \`${genElementSymbol(openingElement)}\` as a non-interactive element`, ); }); - - st.end(); }); - t.test('non-interactive role elements', st => { + test('non-interactive role elements', () => { genNonInteractiveRoleElements().forEach(({ openingElement }) => { - st.equal( + expect( isNonInteractiveElement( elementType(openingElement), openingElement.attributes, ), + ).toBe( false, `identifies \`${genElementSymbol(openingElement)}\` as a non-interactive element`, ); }); - - st.end(); }); - t.test('interactive elements', st => { + test('interactive elements', () => { genInteractiveElements().forEach(({ openingElement }) => { - st.equal( + expect( isNonInteractiveElement( elementType(openingElement), openingElement.attributes, ), + ).toBe( false, `identifies \`${genElementSymbol(openingElement)}\` as a non-interactive element`, ); }); - - st.end(); }); - t.test('interactive role elements', st => { + test('interactive role elements', () => { genInteractiveRoleElements().forEach(({ openingElement }) => { - st.equal( + expect( isNonInteractiveElement( elementType(openingElement), openingElement.attributes, ), + ).toBe( false, `identifies \`${genElementSymbol(openingElement)}\` as a non-interactive element`, ); }); - - st.end(); }); - t.test('indeterminate elements', st => { + test('indeterminate elements', () => { genIndeterminantInteractiveElements().forEach(({ openingElement }) => { - st.equal( + expect( isNonInteractiveElement( elementType(openingElement), openingElement.attributes, ), + ).toBe( false, `identifies \`${genElementSymbol(openingElement)}\` as a non-interactive element`, ); }); - - st.end(); }); - - t.end(); }); diff --git a/__tests__/src/util/isNonInteractiveRole-test.js b/__tests__/src/util/isNonInteractiveRole.spec.js similarity index 63% rename from __tests__/src/util/isNonInteractiveRole-test.js rename to __tests__/src/util/isNonInteractiveRole.spec.js index 37f3fbcf..34900d62 100644 --- a/__tests__/src/util/isNonInteractiveRole-test.js +++ b/__tests__/src/util/isNonInteractiveRole.spec.js @@ -1,4 +1,3 @@ -import test from 'tape'; import { elementType } from 'jsx-ast-utils-x'; import isNonInteractiveRole from '../../../src/util/isNonInteractiveRole'; @@ -8,46 +7,34 @@ import { genNonInteractiveRoleElements, } from '../../../__mocks__/genInteractives'; -test('isNonInteractiveRole', t => { - t.equal( - isNonInteractiveRole(undefined, []), - false, - 'identifies JSX Components (no tagName) as non-interactive elements', - ); +describe('isNonInteractiveRole', () => { + expect(isNonInteractiveRole(undefined, [])).toBe(false); - t.test('elements with a non-interactive role', st => { + test('elements with a non-interactive role', () => { genNonInteractiveRoleElements().forEach(({ openingElement }) => { const { attributes } = openingElement; - st.equal( + expect( isNonInteractiveRole(elementType(openingElement), attributes), + ).toBe( true, `identifies \`${genElementSymbol(openingElement)}\` as a non-interactive role element`, ); }); - - st.end(); }); - t.equal( - isNonInteractiveRole('div', []), - false, - 'does NOT identify elements without a role as non-interactive role elements', - ); + expect(isNonInteractiveRole('div', [])).toBe(false); - t.test('elements with an interactive role', st => { + test('elements with an interactive role', () => { genInteractiveRoleElements().forEach(({ openingElement }) => { const { attributes } = openingElement; - st.equal( + expect( isNonInteractiveRole(elementType(openingElement), attributes), + ).toBe( false, `does NOT identify \`${genElementSymbol(openingElement)}\` as a non-interactive role element`, ); }); - - st.end(); }); - - t.end(); }); diff --git a/__tests__/src/util/isNonLiteralProperty-test.js b/__tests__/src/util/isNonLiteralProperty.spec.js similarity index 56% rename from __tests__/src/util/isNonLiteralProperty-test.js rename to __tests__/src/util/isNonLiteralProperty.spec.js index f9c4fa7e..a14bb5cd 100644 --- a/__tests__/src/util/isNonLiteralProperty-test.js +++ b/__tests__/src/util/isNonLiteralProperty.spec.js @@ -1,5 +1,3 @@ -import test from 'tape'; - import isNonLiteralProperty from '../../../src/util/isNonLiteralProperty'; import IdentifierMock from '../../../__mocks__/IdentifierMock'; import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; @@ -11,57 +9,41 @@ const theProp = 'theProp'; const spread = JSXSpreadAttributeMock('theSpread'); -test('isNonLiteralProperty', t => { - t.equal( - isNonLiteralProperty([], theProp), - false, - 'does not identify them as non-literal role elements', - ); +test('isNonLiteralProperty', () => { + expect(isNonLiteralProperty([], theProp)).toBe(false); - t.equal( + expect( isNonLiteralProperty( [JSXAttributeMock(theProp, LiteralMock('theRole'))], theProp, ), - false, - 'does not identify elements with a literal property as non-literal role elements without spread operator', - ); + ).toBe(false); - t.equal( + expect( isNonLiteralProperty( [spread, JSXAttributeMock(theProp, LiteralMock('theRole'))], theProp, ), - false, - 'does not identify elements with a literal property as non-literal role elements with spread operator', - ); + ).toBe(false); - t.equal( + expect( isNonLiteralProperty( [JSXAttributeMock(theProp, JSXTextMock('theRole'))], theProp, ), - false, - 'identifies elements with a JSXText property as non-literal role elements', - ); + ).toBe(false); - t.equal( + expect( isNonLiteralProperty( [JSXAttributeMock(theProp, IdentifierMock('undefined'))], theProp, ), - false, - 'does not identify elements with a property of undefined as non-literal role elements', - ); + ).toBe(false); - t.equal( + expect( isNonLiteralProperty( [JSXAttributeMock(theProp, IdentifierMock('theIdentifier'))], theProp, ), - true, - 'identifies elements with an expression property as non-literal role elements', - ); - - t.end(); + ).toBe(true); }); diff --git a/__tests__/src/util/isSemanticRoleElement-test.js b/__tests__/src/util/isSemanticRoleElement.spec.js similarity index 74% rename from __tests__/src/util/isSemanticRoleElement-test.js rename to __tests__/src/util/isSemanticRoleElement.spec.js index 4e54c6ce..fb3e4562 100644 --- a/__tests__/src/util/isSemanticRoleElement-test.js +++ b/__tests__/src/util/isSemanticRoleElement.spec.js @@ -1,52 +1,42 @@ -import test from 'tape'; - import isSemanticRoleElement from '../../../src/util/isSemanticRoleElement'; import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; -test('isSemanticRoleElement', t => { - t.equal( +describe('isSemanticRoleElement', () => { + expect( isSemanticRoleElement('input', [ JSXAttributeMock('type', 'checkbox'), JSXAttributeMock('role', 'switch'), ]), - true, - 'identifies semantic role elements', - ); + ).toBe(true); - t.test('rejects non-semantics role elements', st => { - st.equal( + test('rejects non-semantics role elements', () => { + expect( isSemanticRoleElement('input', [ JSXAttributeMock('type', 'radio'), JSXAttributeMock('role', 'switch'), ]), - false, - ); + ).toBe(false); - st.equal( + expect( isSemanticRoleElement('input', [ JSXAttributeMock('type', 'text'), JSXAttributeMock('role', 'combobox'), ]), - false, - ); + ).toBe(false); - st.equal( + expect( isSemanticRoleElement('button', [ JSXAttributeMock('role', 'switch'), JSXAttributeMock('aria-pressed', 'true'), ]), - false, - ); + ).toBe(false); - st.equal( + expect( isSemanticRoleElement('input', [JSXAttributeMock('role', 'switch')]), - false, - ); - - st.end(); + ).toBe(false); }); - t.doesNotThrow(() => { + expect(() => { isSemanticRoleElement('input', [ JSXAttributeMock('type', 'checkbox'), JSXAttributeMock('role', 'checkbox'), @@ -61,7 +51,5 @@ test('isSemanticRoleElement', t => { }, }, ]); - }, 'does not throw on JSXSpreadAttribute'); - - t.end(); + }).not.toThrow(); }); diff --git a/__tests__/src/util/mayContainChildComponent-test.js b/__tests__/src/util/mayContainChildComponent.spec.js similarity index 68% rename from __tests__/src/util/mayContainChildComponent-test.js rename to __tests__/src/util/mayContainChildComponent.spec.js index 1dd6d997..a3d6e082 100644 --- a/__tests__/src/util/mayContainChildComponent-test.js +++ b/__tests__/src/util/mayContainChildComponent.spec.js @@ -1,12 +1,10 @@ -import test from 'tape'; - import mayContainChildComponent from '../../../src/util/mayContainChildComponent'; import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; import JSXElementMock from '../../../__mocks__/JSXElementMock'; import JSXExpressionContainerMock from '../../../__mocks__/JSXExpressionContainerMock'; -test('mayContainChildComponent', t => { - t.equal( +describe('mayContainChildComponent', () => { + expect( mayContainChildComponent( JSXElementMock( 'div', @@ -34,30 +32,24 @@ test('mayContainChildComponent', t => { 'FancyComponent', 5, ), - false, - 'no FancyComponent returns false', - ); + ).toBe(false); - t.test('contains an indicated component', st => { - st.equal( + test('contains an indicated component', () => { + expect( mayContainChildComponent( JSXElementMock('div', [], [JSXElementMock('input')]), 'input', ), - true, - 'returns true', - ); + ).toBe(true, 'returns true'); - st.equal( + expect( mayContainChildComponent( JSXElementMock('div', [], [JSXElementMock('FancyComponent')]), 'FancyComponent', ), - true, - 'returns true', - ); + ).toBe(true, 'returns true'); - st.equal( + expect( mayContainChildComponent( JSXElementMock( 'div', @@ -66,11 +58,12 @@ test('mayContainChildComponent', t => { ), 'FancyComponent', ), + ).toBe( false, 'FancyComponent is outside of default depth, should return false', ); - st.equal( + expect( mayContainChildComponent( JSXElementMock( 'div', @@ -80,11 +73,12 @@ test('mayContainChildComponent', t => { 'FancyComponent', 2, ), + ).toBe( true, 'FancyComponent is inside of custom depth, should return true', ); - st.equal( + expect( mayContainChildComponent( JSXElementMock( 'div', @@ -128,106 +122,78 @@ test('mayContainChildComponent', t => { 'FancyComponent', 6, ), - true, - 'deep nesting, returns true', - ); - - st.end(); + ).toBe(true, 'deep nesting, returns true'); }); - t.equal( + expect( mayContainChildComponent( JSXElementMock('div', [], [JSXExpressionContainerMock('mysteryBox')]), 'FancyComponent', ), - true, - 'Intederminate situations + expression container children - returns true', - ); + ).toBe(true); - t.test( - 'Glob name matching - component name contains question mark ? - match any single character', - st => { - st.equal( + describe('Glob name matching - component name contains question mark ? - match any single character', () => { + expect( + mayContainChildComponent( + JSXElementMock('div', [], [JSXElementMock('FancyComponent')]), + 'Fanc?Co??onent', + ), + ).toBe(true, 'returns true'); + + expect( + mayContainChildComponent( + JSXElementMock('div', [], [JSXElementMock('FancyComponent')]), + 'FancyComponent?', + ), + ).toBe(false, 'returns false'); + + test('component name contains asterisk * - match zero or more characters', () => { + expect( mayContainChildComponent( JSXElementMock('div', [], [JSXElementMock('FancyComponent')]), - 'Fanc?Co??onent', + 'Fancy*', ), - true, - 'returns true', - ); + ).toBe(true, 'returns true'); - st.equal( + expect( mayContainChildComponent( JSXElementMock('div', [], [JSXElementMock('FancyComponent')]), - 'FancyComponent?', + '*Component', ), - false, - 'returns false', - ); - - st.test( - 'component name contains asterisk * - match zero or more characters', - s2t => { - s2t.equal( - mayContainChildComponent( - JSXElementMock('div', [], [JSXElementMock('FancyComponent')]), - 'Fancy*', - ), - true, - 'returns true', - ); - - s2t.equal( - mayContainChildComponent( - JSXElementMock('div', [], [JSXElementMock('FancyComponent')]), - '*Component', - ), - true, - 'returns true', - ); - - s2t.equal( - mayContainChildComponent( - JSXElementMock('div', [], [JSXElementMock('FancyComponent')]), - 'Fancy*C*t', - ), - true, - 'returns true', - ); + ).toBe(true, 'returns true'); - s2t.end(); - }, - ); - - st.end(); - }, - ); + expect( + mayContainChildComponent( + JSXElementMock('div', [], [JSXElementMock('FancyComponent')]), + 'Fancy*C*t', + ), + ).toBe(true, 'returns true'); + }); + }); - t.test('using a custom elementType function', st => { - st.equal( + test('using a custom elementType function', () => { + expect( mayContainChildComponent( JSXElementMock('div', [], [JSXElementMock('CustomInput')]), 'input', 2, () => 'input', ), + ).toBe( true, 'returns true when the custom elementType returns the proper name', ); - st.equal( + expect( mayContainChildComponent( JSXElementMock('div', [], [JSXElementMock('CustomInput')]), 'input', 2, () => 'button', ), + ).toBe( false, 'returns false when the custom elementType returns a wrong name', ); - - st.end(); }); - - t.end(); }); diff --git a/__tests__/src/util/mayHaveAccessibleLabel-test.js b/__tests__/src/util/mayHaveAccessibleLabel.spec.js similarity index 76% rename from __tests__/src/util/mayHaveAccessibleLabel-test.js rename to __tests__/src/util/mayHaveAccessibleLabel.spec.js index 7a6fbf4d..d1f3ea84 100644 --- a/__tests__/src/util/mayHaveAccessibleLabel-test.js +++ b/__tests__/src/util/mayHaveAccessibleLabel.spec.js @@ -1,5 +1,3 @@ -import test from 'tape'; - import mayHaveAccessibleLabel from '../../../src/util/mayHaveAccessibleLabel'; import JSXAttributeMock from '../../../__mocks__/JSXAttributeMock'; import JSXElementMock from '../../../__mocks__/JSXElementMock'; @@ -8,8 +6,8 @@ import JSXSpreadAttributeMock from '../../../__mocks__/JSXSpreadAttributeMock'; import JSXTextMock from '../../../__mocks__/JSXTextMock'; import LiteralMock from '../../../__mocks__/LiteralMock'; -test('mayHaveAccessibleLabel', t => { - t.equal( +describe('mayHaveAccessibleLabel', () => { + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -36,12 +34,10 @@ test('mayHaveAccessibleLabel', t => { ), 5, ), - false, - 'no label returns false', - ); + ).toBe(false); - t.test('label via attributes', st => { - st.equal( + test('label via attributes', () => { + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -49,34 +45,32 @@ test('mayHaveAccessibleLabel', t => { [], ), ), - true, - 'aria-label returns true', - ); + ).toBe(true, 'aria-label returns true'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock('div', [JSXAttributeMock('aria-label', '')], []), ), - false, - 'aria-label without content returns false', - ); + ).toBe(false, 'aria-label without content returns false'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock('div', [JSXAttributeMock('aria-label', ' ')], []), ), + ).toBe( false, 'aria-label with only spaces whitespace, should return false', ); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock('div', [JSXAttributeMock('aria-label', '\n')], []), ), + ).toBe( false, 'aria-label with only newline whitespace, should return false', ); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -84,19 +78,15 @@ test('mayHaveAccessibleLabel', t => { [], ), ), - true, - 'aria-labelledby returns true', - ); + ).toBe(true, 'aria-labelledby returns true'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock('div', [JSXAttributeMock('aria-labelledby', '')], []), ), - false, - 'aria-labelledby without content returns false', - ); + ).toBe(false, 'aria-labelledby without content returns false'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -104,17 +94,16 @@ test('mayHaveAccessibleLabel', t => { [], ), ), + ).toBe( true, 'aria-labelledby with an expression container, should return true', ); - - st.end(); }); - t.test('label via custom label attribute', st => { + test('label via custom label attribute', () => { const customLabelProp = 'cowbell'; - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -124,43 +113,31 @@ test('mayHaveAccessibleLabel', t => { 1, [customLabelProp], ), - true, - 'aria-label returns true', - ); - - st.end(); + ).toBe(true, 'aria-label returns true'); }); - t.test('text label', st => { - st.equal( + test('text label', () => { + expect( mayHaveAccessibleLabel( JSXElementMock('div', [], [LiteralMock('A fancy label')]), ), - true, - 'Literal text, returns true', - ); + ).toBe(true, 'Literal text, returns true'); - st.equal( + expect( mayHaveAccessibleLabel(JSXElementMock('div', [], [LiteralMock(' ')])), - false, - 'Literal spaces whitespace, returns false', - ); + ).toBe(false, 'Literal spaces whitespace, returns false'); - st.equal( + expect( mayHaveAccessibleLabel(JSXElementMock('div', [], [LiteralMock('\n')])), - false, - 'Literal newline whitespace, returns false', - ); + ).toBe(false, 'Literal newline whitespace, returns false'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock('div', [], [JSXTextMock('A fancy label')]), ), - true, - 'JSXText, returns true', - ); + ).toBe(true, 'JSXText, returns true'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -168,11 +145,9 @@ test('mayHaveAccessibleLabel', t => { [JSXElementMock('div', [], [JSXTextMock('A fancy label')])], ), ), - false, - 'label is outside of default depth, returns false', - ); + ).toBe(false, 'label is outside of default depth, returns false'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -181,11 +156,9 @@ test('mayHaveAccessibleLabel', t => { ), 2, ), - true, - 'label is inside of custom depth, returns true', - ); + ).toBe(true, 'label is inside of custom depth, returns true'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -228,15 +201,11 @@ test('mayHaveAccessibleLabel', t => { ), 6, ), - true, - 'deep nesting, returns true', - ); - - st.end(); + ).toBe(true, 'deep nesting, returns true'); }); - t.test('image content', st => { - st.equal( + test('image content', () => { + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -244,11 +213,9 @@ test('mayHaveAccessibleLabel', t => { [JSXElementMock('img', [JSXAttributeMock('src', 'some/path')])], ), ), - false, - 'without alt, returns true', - ); + ).toBe(false, 'without alt, returns true'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -261,11 +228,9 @@ test('mayHaveAccessibleLabel', t => { ], ), ), - true, - 'with alt, returns true', - ); + ).toBe(true, 'with alt, returns true'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -278,23 +243,17 @@ test('mayHaveAccessibleLabel', t => { ], ), ), - true, - 'with aria-label, returns true', - ); - - st.end(); + ).toBe(true, 'with aria-label, returns true'); }); - t.test('Intederminate situations', st => { - st.equal( + test('Intederminate situations', () => { + expect( mayHaveAccessibleLabel( JSXElementMock('div', [], [JSXExpressionContainerMock('mysteryBox')]), ), - true, - 'expression container children, returns true', - ); + ).toBe(true, 'expression container children, returns true'); - st.equal( + expect( mayHaveAccessibleLabel( JSXElementMock( 'div', @@ -305,12 +264,6 @@ test('mayHaveAccessibleLabel', t => { [], ), ), - true, - 'spread operator in attributes, returns true', - ); - - st.end(); + ).toBe(true, 'spread operator in attributes, returns true'); }); - - t.end(); }); diff --git a/__tests__/src/util/parserOptionsMapper-test.js b/__tests__/src/util/parserOptionsMapper.spec.js similarity index 88% rename from __tests__/src/util/parserOptionsMapper-test.js rename to __tests__/src/util/parserOptionsMapper.spec.js index 0059f565..6f115d02 100644 --- a/__tests__/src/util/parserOptionsMapper-test.js +++ b/__tests__/src/util/parserOptionsMapper.spec.js @@ -1,12 +1,11 @@ import { version as eslintVersion } from 'eslint/package.json'; -import test from 'tape'; import semver from 'semver'; import parserOptionsMapper from '../../__util__/parserOptionsMapper'; const usingLegacy = semver.major(eslintVersion) < 9; -test('parserOptionsMapper', t => { +test('parserOptionsMapper', () => { const expectedResult = usingLegacy ? { code: '
', @@ -37,15 +36,13 @@ test('parserOptionsMapper', t => { settings: {}, }; - t.deepEqual( + expect( parserOptionsMapper({ code: '
', errors: [], options: {}, }), - expectedResult, - 'returns a test case object', - ); + ).toEqual(expectedResult); const expectedResult2 = usingLegacy ? { @@ -76,7 +73,7 @@ test('parserOptionsMapper', t => { }, settings: {}, }; - t.deepEqual( + expect( parserOptionsMapper({ code: '
', errors: [], @@ -85,9 +82,5 @@ test('parserOptionsMapper', t => { ecmaVersion: 5, }, }), - expectedResult2, - 'allows for overriding parserOptions', - ); - - t.end(); + ).toEqual(expectedResult2); }); diff --git a/__tests__/src/util/schemas-test.js b/__tests__/src/util/schemas-test.js deleted file mode 100644 index c691d200..00000000 --- a/__tests__/src/util/schemas-test.js +++ /dev/null @@ -1,39 +0,0 @@ -import test from 'tape'; - -import { - generateObjSchema, - arraySchema, - enumArraySchema, -} from '../../../src/util/schemas'; - -test('schemas', t => { - t.test('should generate an object schema with correct properties', st => { - const schema = generateObjSchema({ - foo: 'bar', - baz: arraySchema, - }); - const properties = schema.properties || {}; - - st.deepEqual(properties.foo, properties.foo, 'bar'); - st.deepEqual(properties.baz.type, 'array'); - - st.end(); - }); - - t.deepEqual( - enumArraySchema(), - { - additionalItems: false, - items: { - enum: [], - type: 'string', - }, - minItems: 0, - type: 'array', - uniqueItems: true, - }, - 'enumArraySchema works with no arguments', - ); - - t.end(); -}); diff --git a/__tests__/src/util/schemas.spec.js b/__tests__/src/util/schemas.spec.js new file mode 100644 index 00000000..517661cf --- /dev/null +++ b/__tests__/src/util/schemas.spec.js @@ -0,0 +1,29 @@ +import { + generateObjSchema, + arraySchema, + enumArraySchema, +} from '../../../src/util/schemas'; + +describe('schemas', () => { + test('should generate an object schema with correct properties', () => { + const schema = generateObjSchema({ + foo: 'bar', + baz: arraySchema, + }); + const properties = schema.properties || {}; + + expect(properties.foo).toBe('bar'); + expect(properties.baz.type).toBe('array'); + }); + + expect(enumArraySchema()).toEqual({ + additionalItems: false, + items: { + enum: [], + type: 'string', + }, + minItems: 0, + type: 'array', + uniqueItems: true, + }); +}); diff --git a/package.json b/package.json index 1806a640..6497d48d 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "jsx", "a11y", "eslint", - "eslint-plugin" + "eslint-plugin", + "eslint-plugin-jsx-a11y" ], "scripts": { "build": "premove lib && babel src --out-dir lib --copy-files", @@ -42,7 +43,7 @@ "test-example:flat-esm": "cd examples/flat-esm && yarn && yarn lint", "test-example:legacy": "cd examples/legacy && yarn && yarn lint", "test:examples": "yarn build && yarn test-example:legacy && yarn test-example:flat-esm && yarn test-example:flat-cjs", - "tests-only": "tape --require=@babel/register '__tests__/**/*.js'" + "tests-only": "jest --coverage" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0" @@ -65,11 +66,11 @@ "@babel/eslint-parser": "^7.25.9", "@babel/plugin-transform-flow-strip-types": "^7.25.9", "@babel/preset-env": "^7.27.2", - "@babel/register": "^7.25.9", "@changesets/changelog-github": "^0.5.1", "@changesets/cli": "^2.29.4", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.26.0", + "@types/jest": "^29.5.14", "babel-plugin-add-module-exports": "^1.0.4", "clean-pkg-json": "^1.3.0", "eslint": "^9.27.0", @@ -79,17 +80,23 @@ "eslint-plugin-eslint-plugin": "^6.4.0", "eslint-plugin-ft-flow": "^3.0.11", "eslint-plugin-import-x": "^4.11.1", + "eslint-plugin-jest": "^28.11.0", "estraverse": "^5.3.0", "hermes-eslint": "^0.28.1", "in-publish": "^2.0.1", "jackspeak": "=2.1.1", - "jscodeshift": "^17.0.0", + "jest": "^29.7.0", + "jscodeshift": "^17.3.0", "minimist": "^1.2.8", "npm-run-all2": "^8.0.2", "premove": "^4.0.0", "prettier": "^3.5.3", "semver": "^6.3.1", - "tape": "^5.9.0", "to-ast": "^1.0.0" + }, + "jest": { + "testMatch": [ + "**/__tests__/**/*.spec.*" + ] } } diff --git a/scripts/create-rule.js b/scripts/create-rule.js index 50c4f350..72fc94f1 100755 --- a/scripts/create-rule.js +++ b/scripts/create-rule.js @@ -1,4 +1,4 @@ -#!/usr/bin/env node --harmony +#!/usr/bin/env node const path = require('path'); const fs = require('fs'); const { exec } = require('child_process'); diff --git a/yarn.lock b/yarn.lock index fe153f1e..94350421 100644 --- a/yarn.lock +++ b/yarn.lock @@ -72,7 +72,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.27.1": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.27.1": version: 7.27.1 resolution: "@babel/code-frame@npm:7.27.1" dependencies: @@ -90,7 +90,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.24.7, @babel/core@npm:^7.26.0": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.7, @babel/core@npm:^7.26.0": version: 7.27.1 resolution: "@babel/core@npm:7.27.1" dependencies: @@ -127,7 +127,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.27.1": +"@babel/generator@npm:^7.27.1, @babel/generator@npm:^7.7.2": version: 7.27.1 resolution: "@babel/generator@npm:7.27.1" dependencies: @@ -249,7 +249,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.27.1": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.27.1 resolution: "@babel/helper-plugin-utils@npm:7.27.1" checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b @@ -334,7 +334,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.24.7, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2": version: 7.27.2 resolution: "@babel/parser@npm:7.27.2" dependencies: @@ -413,6 +413,50 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + languageName: node + linkType: hard + "@babel/plugin-syntax-flow@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-syntax-flow@npm:7.27.1" @@ -435,7 +479,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.27.1": +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" dependencies: @@ -446,7 +490,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.27.1": +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.27.1, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.27.1 resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" dependencies: @@ -457,7 +523,95 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1": +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.27.1 resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" dependencies: @@ -1214,7 +1368,7 @@ __metadata: languageName: node linkType: hard -"@babel/register@npm:^7.24.6, @babel/register@npm:^7.25.9": +"@babel/register@npm:^7.24.6": version: 7.27.1 resolution: "@babel/register@npm:7.27.1" dependencies: @@ -1236,7 +1390,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.27.1": +"@babel/template@npm:^7.27.1, @babel/template@npm:^7.3.3": version: 7.27.2 resolution: "@babel/template@npm:7.27.2" dependencies: @@ -1262,7 +1416,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.27.1, @babel/types@npm:^7.4.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.27.1 resolution: "@babel/types@npm:7.27.1" dependencies: @@ -1272,6 +1426,13 @@ __metadata: languageName: node linkType: hard +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + "@changesets/apply-release-plan@npm:^7.0.12": version: 7.0.12 resolution: "@changesets/apply-release-plan@npm:7.0.12" @@ -1702,6 +1863,175 @@ __metadata: languageName: node linkType: hard +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c + languageName: node + linkType: hard + +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/reporters": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-changed-files: "npm:^29.7.0" + jest-config: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-resolve-dependencies: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-ansi: "npm:^6.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 + languageName: node + linkType: hard + +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" + dependencies: + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + checksum: 10c0/c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@sinonjs/fake-timers": "npm:^10.0.2" + "@types/node": "npm:*" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c + languageName: node + linkType: hard + +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + jest-mock: "npm:^29.7.0" + checksum: 10c0/a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + collect-v8-coverage: "npm:^1.0.0" + exit: "npm:^0.1.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^4.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.1" + strip-ansi: "npm:^6.0.0" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -1711,6 +2041,78 @@ __metadata: languageName: node linkType: hard +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.18" + callsites: "npm:^3.0.0" + graceful-fs: "npm:^4.2.9" + checksum: 10c0/a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + collect-v8-coverage: "npm:^1.0.0" + checksum: 10c0/7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b + languageName: node + linkType: hard + +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + babel-plugin-istanbul: "npm:^6.1.1" + chalk: "npm:^4.0.0" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pirates: "npm:^4.0.4" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.2" + checksum: 10c0/7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.8 resolution: "@jridgewell/gen-mapping@npm:0.3.8" @@ -1743,7 +2145,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -1753,25 +2155,6 @@ __metadata: languageName: node linkType: hard -"@ljharb/resumer@npm:^0.1.3": - version: 0.1.3 - resolution: "@ljharb/resumer@npm:0.1.3" - dependencies: - "@ljharb/through": "npm:^2.3.13" - call-bind: "npm:^1.0.7" - checksum: 10c0/1a598cbaa7ee74ed31a1798649849b915f099c8720c8142edc0829a09df64116e6050fc8d49d6c4d69e0e6814a5e0bded4b8c6d5643c3739af5e8a49d770aa83 - languageName: node - linkType: hard - -"@ljharb/through@npm:^2.3.13": - version: 2.3.14 - resolution: "@ljharb/through@npm:2.3.14" - dependencies: - call-bind: "npm:^1.0.8" - checksum: 10c0/7c5c22ed668f51193b82e4a352c7a44f777f537ef47f37befb49032f4827a766ea74c2972e5a0185bdfe355431ae50722d9fb57fa63553ba36aa4aeb941f0e70 - languageName: node - linkType: hard - "@manypkg/find-root@npm:^1.1.0": version: 1.1.0 resolution: "@manypkg/find-root@npm:1.1.0" @@ -1926,6 +2309,24 @@ __metadata: languageName: node linkType: hard +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10c0/2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 + languageName: node + linkType: hard + "@taplo/core@npm:^0.2.0": version: 0.2.0 resolution: "@taplo/core@npm:0.2.0" @@ -1951,6 +2352,47 @@ __metadata: languageName: node linkType: hard +"@types/babel__core@npm:^7.1.14": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.27.0 + resolution: "@types/babel__generator@npm:7.27.0" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.7 + resolution: "@types/babel__traverse@npm:7.20.7" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/5386f0af44f8746b063b87418f06129a814e16bb2686965a575e9d7376b360b088b89177778d8c426012abc43dd1a2d8ec3218bfc382280c898682746ce2ffbd + languageName: node + linkType: hard + "@types/debug@npm:^4.0.0": version: 4.1.12 resolution: "@types/debug@npm:4.1.12" @@ -1967,6 +2409,50 @@ __metadata: languageName: node linkType: hard +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/235d2fc69741448e853333b7c3d1180a966dd2b8972c8cbcd6b2a0c6cd7f8d582ab2b8e58219dbc62cce8f1b40aa317ff78ea2201cdd8249da5025adebed6f0b + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jest@npm:^29.5.14": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10c0/18e0712d818890db8a8dab3d91e9ea9f7f19e3f83c2e50b312f557017dc81466207a71f3ed79cf4428e813ba939954fa26ffa0a9a7f153181ba174581b1c2aed + languageName: node + linkType: hard + "@types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" @@ -1990,6 +2476,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:*": + version: 22.15.21 + resolution: "@types/node@npm:22.15.21" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/f092bbccda2131c2b2c8f720338080aa0ef1d928f5f1062c03954a4f7dafa7ee3ed29bc3e51bd4e2584473b3d943c637a2b39ad7174898970818270187cf10c1 + languageName: node + linkType: hard + "@types/node@npm:^12.7.1": version: 12.20.55 resolution: "@types/node@npm:12.20.55" @@ -2004,6 +2499,13 @@ __metadata: languageName: node linkType: hard +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + "@types/unist@npm:*, @types/unist@npm:^3.0.0": version: 3.0.3 resolution: "@types/unist@npm:3.0.3" @@ -2011,10 +2513,26 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/scope-manager@npm:5.62.0" - dependencies: +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/d16937d7ac30dff697801c3d6f235be2166df42e4a88bf730fa6dc09201de3727c0a9500c59a672122313341de5f24e45ee0ff579c08ce91928e519090b7906b + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" + dependencies: "@typescript-eslint/types": "npm:5.62.0" "@typescript-eslint/visitor-keys": "npm:5.62.0" checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f @@ -2099,7 +2617,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^8.31.0": +"@typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.31.0": version: 8.32.1 resolution: "@typescript-eslint/utils@npm:8.32.1" dependencies: @@ -2336,6 +2854,15 @@ __metadata: languageName: node linkType: hard +"ansi-escapes@npm:^4.2.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -2373,7 +2900,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:~3.1.2": +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -2406,16 +2933,6 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": - version: 1.0.2 - resolution: "array-buffer-byte-length@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.3" - is-array-buffer: "npm:^3.0.5" - checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d - languageName: node - linkType: hard - "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -2423,34 +2940,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.every@npm:^1.1.6": - version: 1.1.7 - resolution: "array.prototype.every@npm:1.1.7" - dependencies: - call-bound: "npm:^1.0.2" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-object-atoms: "npm:^1.0.0" - is-string: "npm:^1.1.0" - checksum: 10c0/1e6c61601bb2831f86b4c6127030332a4ff396403c8932e9d7598f6c441df8e91dd2e71302bad50274cce2186c975a564ba5459df2bbf16cf04d3f53bf384a43 - languageName: node - linkType: hard - -"arraybuffer.prototype.slice@npm:^1.0.4": - version: 1.0.4 - resolution: "arraybuffer.prototype.slice@npm:1.0.4" - dependencies: - array-buffer-byte-length: "npm:^1.0.1" - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - is-array-buffer: "npm:^3.0.4" - checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06 - languageName: node - linkType: hard - "ast-types-flow@npm:^0.0.8": version: 0.0.8 resolution: "ast-types-flow@npm:0.0.8" @@ -2474,13 +2963,6 @@ __metadata: languageName: node linkType: hard -"async-function@npm:^1.0.0": - version: 1.0.0 - resolution: "async-function@npm:1.0.0" - checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 - languageName: node - linkType: hard - "atob@npm:^2.1.2": version: 2.1.2 resolution: "atob@npm:2.1.2" @@ -2490,15 +2972,6 @@ __metadata: languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" - dependencies: - possible-typed-array-names: "npm:^1.0.0" - checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 - languageName: node - linkType: hard - "axe-core@npm:^4.10.2": version: 4.10.3 resolution: "axe-core@npm:4.10.3" @@ -2513,6 +2986,23 @@ __metadata: languageName: node linkType: hard +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": "npm:^29.7.0" + "@types/babel__core": "npm:^7.1.14" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^29.6.3" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 10c0/2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 + languageName: node + linkType: hard + "babel-plugin-add-module-exports@npm:^1.0.4": version: 1.0.4 resolution: "babel-plugin-add-module-exports@npm:1.0.4" @@ -2520,6 +3010,31 @@ __metadata: languageName: node linkType: hard +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-instrument: "npm:^5.0.4" + test-exclude: "npm:^6.0.0" + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": "npm:^7.3.3" + "@babel/types": "npm:^7.3.3" + "@types/babel__core": "npm:^7.1.14" + "@types/babel__traverse": "npm:^7.0.6" + checksum: 10c0/7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs2@npm:^0.4.10": version: 0.4.13 resolution: "babel-plugin-polyfill-corejs2@npm:0.4.13" @@ -2556,6 +3071,43 @@ __metadata: languageName: node linkType: hard +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.1.0 + resolution: "babel-preset-current-node-syntax@npm:1.1.0" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/0b838d4412e3322cb4436f246e24e9c00bebcedfd8f00a2f51489db683bd35406bbd55a700759c28d26959c6e03f84dd6a1426f576f440267c1d7a73c5717281 + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -2635,6 +3187,15 @@ __metadata: languageName: node linkType: hard +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -2662,7 +3223,7 @@ __metadata: languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": version: 1.0.2 resolution: "call-bind-apply-helpers@npm:1.0.2" dependencies: @@ -2672,19 +3233,7 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": - version: 1.0.8 - resolution: "call-bind@npm:1.0.8" - dependencies: - call-bind-apply-helpers: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.2" - checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 - languageName: node - linkType: hard - -"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": +"call-bound@npm:^1.0.2": version: 1.0.4 resolution: "call-bound@npm:1.0.4" dependencies: @@ -2701,6 +3250,20 @@ __metadata: languageName: node linkType: hard +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001716": version: 1.0.30001718 resolution: "caniuse-lite@npm:1.0.30001718" @@ -2718,6 +3281,13 @@ __metadata: languageName: node linkType: hard +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + languageName: node + linkType: hard + "character-entities@npm:^2.0.0": version: 2.0.2 resolution: "character-entities@npm:2.0.2" @@ -2776,13 +3346,20 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.7.0": +"ci-info@npm:^3.2.0, ci-info@npm:^3.7.0": version: 3.9.0 resolution: "ci-info@npm:3.9.0" checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a languageName: node linkType: hard +"cjs-module-lexer@npm:^1.0.0": + version: 1.4.3 + resolution: "cjs-module-lexer@npm:1.4.3" + checksum: 10c0/076b3af85adc4d65dbdab1b5b240fe5b45d44fcf0ef9d429044dd94d19be5589376805c44fb2d4b3e684e5fe6a9b7cf3e426476a6507c45283c5fc6ff95240be + languageName: node + linkType: hard + "clean-pkg-json@npm:^1.3.0": version: 1.3.0 resolution: "clean-pkg-json@npm:1.3.0" @@ -2814,6 +3391,20 @@ __metadata: languageName: node linkType: hard +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 + languageName: node + linkType: hard + "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -2898,7 +3489,24 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.5, cross-spawn@npm:^7.0.6": +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + prompts: "npm:^2.0.1" + bin: + create-jest: bin/create-jest.js + checksum: 10c0/e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.5, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -2927,39 +3535,6 @@ __metadata: languageName: node linkType: hard -"data-view-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "data-view-buffer@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.2" - checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c - languageName: node - linkType: hard - -"data-view-byte-length@npm:^1.0.2": - version: 1.0.2 - resolution: "data-view-byte-length@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.2" - checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55 - languageName: node - linkType: hard - -"data-view-byte-offset@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-offset@npm:1.0.1" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4 - languageName: node - linkType: hard - "dataloader@npm:^1.4.0": version: 1.4.0 resolution: "dataloader@npm:1.4.0" @@ -3004,29 +3579,15 @@ __metadata: languageName: node linkType: hard -"deep-equal@npm:^2.2.3": - version: 2.2.3 - resolution: "deep-equal@npm:2.2.3" - dependencies: - array-buffer-byte-length: "npm:^1.0.0" - call-bind: "npm:^1.0.5" - es-get-iterator: "npm:^1.1.3" - get-intrinsic: "npm:^1.2.2" - is-arguments: "npm:^1.1.1" - is-array-buffer: "npm:^3.0.2" - is-date-object: "npm:^1.0.5" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - isarray: "npm:^2.0.5" - object-is: "npm:^1.1.5" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.5.1" - side-channel: "npm:^1.0.4" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.13" - checksum: 10c0/a48244f90fa989f63ff5ef0cc6de1e4916b48ea0220a9c89a378561960814794a5800c600254482a2c8fd2e49d6c2e196131dc983976adb024c94a42dfe4949f +"dedent@npm:^1.0.0": + version: 1.6.0 + resolution: "dedent@npm:1.6.0" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/671b8f5e390dd2a560862c4511dd6d2638e71911486f78cb32116551f8f2aa6fcaf50579ffffb2f866d46b5b80fd72470659ca5760ede8f967619ef7df79e8a5 languageName: node linkType: hard @@ -3044,35 +3605,6 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.0.1" - checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 - languageName: node - linkType: hard - -"define-properties@npm:^1.2.1": - version: 1.2.1 - resolution: "define-properties@npm:1.2.1" - dependencies: - define-data-property: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - object-keys: "npm:^1.1.1" - checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 - languageName: node - linkType: hard - -"defined@npm:^1.0.1": - version: 1.0.1 - resolution: "defined@npm:1.0.1" - checksum: 10c0/357212c95fd69c3b431f4766440f1b10a8362d2663b86e3d7c139fe7fc98a1d5a4996b8b55ca62e97fb882f9887374b76944d29f9650a07993d98e7be86a804a - languageName: node - linkType: hard - "dequal@npm:^2.0.0": version: 2.0.3 resolution: "dequal@npm:2.0.3" @@ -3087,6 +3619,13 @@ __metadata: languageName: node linkType: hard +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + languageName: node + linkType: hard + "devlop@npm:^1.0.0": version: 1.1.0 resolution: "devlop@npm:1.1.0" @@ -3135,18 +3674,7 @@ __metadata: languageName: node linkType: hard -"dotignore@npm:^0.1.2": - version: 0.1.2 - resolution: "dotignore@npm:0.1.2" - dependencies: - minimatch: "npm:^3.0.4" - bin: - ignored: bin/ignored - checksum: 10c0/71f25a507cbe88a7dbf07d5108bb0924af39c71a3c5fd83045fc42d5dc1605a23113ba29999b94d964555e6e6be2980caa8da3711cfa31a6b6d88c184b1ab181 - languageName: node - linkType: hard - -"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": +"dunder-proto@npm:^1.0.1": version: 1.0.1 resolution: "dunder-proto@npm:1.0.1" dependencies: @@ -3171,6 +3699,13 @@ __metadata: languageName: node linkType: hard +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -3227,66 +3762,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9": - version: 1.23.9 - resolution: "es-abstract@npm:1.23.9" - dependencies: - array-buffer-byte-length: "npm:^1.0.2" - arraybuffer.prototype.slice: "npm:^1.0.4" - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - data-view-buffer: "npm:^1.0.2" - data-view-byte-length: "npm:^1.0.2" - data-view-byte-offset: "npm:^1.0.1" - es-define-property: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - es-set-tostringtag: "npm:^2.1.0" - es-to-primitive: "npm:^1.3.0" - function.prototype.name: "npm:^1.1.8" - get-intrinsic: "npm:^1.2.7" - get-proto: "npm:^1.0.0" - get-symbol-description: "npm:^1.1.0" - globalthis: "npm:^1.0.4" - gopd: "npm:^1.2.0" - has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - hasown: "npm:^2.0.2" - internal-slot: "npm:^1.1.0" - is-array-buffer: "npm:^3.0.5" - is-callable: "npm:^1.2.7" - is-data-view: "npm:^1.0.2" - is-regex: "npm:^1.2.1" - is-shared-array-buffer: "npm:^1.0.4" - is-string: "npm:^1.1.1" - is-typed-array: "npm:^1.1.15" - is-weakref: "npm:^1.1.0" - math-intrinsics: "npm:^1.1.0" - object-inspect: "npm:^1.13.3" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.7" - own-keys: "npm:^1.0.1" - regexp.prototype.flags: "npm:^1.5.3" - safe-array-concat: "npm:^1.1.3" - safe-push-apply: "npm:^1.0.0" - safe-regex-test: "npm:^1.1.0" - set-proto: "npm:^1.0.0" - string.prototype.trim: "npm:^1.2.10" - string.prototype.trimend: "npm:^1.0.9" - string.prototype.trimstart: "npm:^1.0.8" - typed-array-buffer: "npm:^1.0.3" - typed-array-byte-length: "npm:^1.0.3" - typed-array-byte-offset: "npm:^1.0.4" - typed-array-length: "npm:^1.0.7" - unbox-primitive: "npm:^1.1.0" - which-typed-array: "npm:^1.1.18" - checksum: 10c0/1de229c9e08fe13c17fe5abaec8221545dfcd57e51f64909599a6ae896df84b8fd2f7d16c60cb00d7bf495b9298ca3581aded19939d4b7276854a4b066f8422b - languageName: node - linkType: hard - -"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": +"es-define-property@npm:^1.0.1": version: 1.0.1 resolution: "es-define-property@npm:1.0.1" checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c @@ -3300,23 +3776,6 @@ __metadata: languageName: node linkType: hard -"es-get-iterator@npm:^1.1.3": - version: 1.1.3 - resolution: "es-get-iterator@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - has-symbols: "npm:^1.0.3" - is-arguments: "npm:^1.1.1" - is-map: "npm:^2.0.2" - is-set: "npm:^2.0.2" - is-string: "npm:^1.0.7" - isarray: "npm:^2.0.5" - stop-iteration-iterator: "npm:^1.0.0" - checksum: 10c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 - languageName: node - linkType: hard - "es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": version: 1.1.1 resolution: "es-object-atoms@npm:1.1.1" @@ -3326,36 +3785,20 @@ __metadata: languageName: node linkType: hard -"es-set-tostringtag@npm:^2.1.0": - version: 2.1.0 - resolution: "es-set-tostringtag@npm:2.1.0" - dependencies: - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.2" - checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.3.0": - version: 1.3.0 - resolution: "es-to-primitive@npm:1.3.0" - dependencies: - is-callable: "npm:^1.2.7" - is-date-object: "npm:^1.0.5" - is-symbol: "npm:^1.0.4" - checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b - languageName: node - linkType: hard - -"escalade@npm:^3.2.0": +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 languageName: node linkType: hard +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -3478,6 +3921,24 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-jest@npm:^28.11.0": + version: 28.11.0 + resolution: "eslint-plugin-jest@npm:28.11.0" + dependencies: + "@typescript-eslint/utils": "npm:^6.0.0 || ^7.0.0 || ^8.0.0" + peerDependencies: + "@typescript-eslint/eslint-plugin": ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + jest: "*" + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + jest: + optional: true + checksum: 10c0/faa06ce1c4d0ad7aa0fb1c725edf77fe543a17fe091424dfe5b5e3bba8930470516e5831592e4fb725884f7e5f1034f303f49b7fab28b2abdf99765bfd048473 + languageName: node + linkType: hard + "eslint-plugin-jsx-a11y-x@workspace:.": version: 0.0.0-use.local resolution: "eslint-plugin-jsx-a11y-x@workspace:." @@ -3488,11 +3949,11 @@ __metadata: "@babel/eslint-parser": "npm:^7.25.9" "@babel/plugin-transform-flow-strip-types": "npm:^7.25.9" "@babel/preset-env": "npm:^7.27.2" - "@babel/register": "npm:^7.25.9" "@changesets/changelog-github": "npm:^0.5.1" "@changesets/cli": "npm:^2.29.4" "@eslint/eslintrc": "npm:^3.3.1" "@eslint/js": "npm:^9.26.0" + "@types/jest": "npm:^29.5.14" aria-query: "npm:^5.3.2" ast-types-flow: "npm:^0.0.8" axe-core: "npm:^4.10.2" @@ -3508,11 +3969,13 @@ __metadata: eslint-plugin-eslint-plugin: "npm:^6.4.0" eslint-plugin-ft-flow: "npm:^3.0.11" eslint-plugin-import-x: "npm:^4.11.1" + eslint-plugin-jest: "npm:^28.11.0" estraverse: "npm:^5.3.0" hermes-eslint: "npm:^0.28.1" in-publish: "npm:^2.0.1" jackspeak: "npm:=2.1.1" - jscodeshift: "npm:^17.0.0" + jest: "npm:^29.7.0" + jscodeshift: "npm:^17.3.0" jsx-ast-utils-x: "npm:^0.1.0" language-tags: "npm:^1.0.9" minimatch: "npm:^3.1.2" @@ -3521,7 +3984,6 @@ __metadata: premove: "npm:^4.0.0" prettier: "npm:^3.5.3" semver: "npm:^6.3.1" - tape: "npm:^5.9.0" to-ast: "npm:^1.0.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3689,6 +4151,43 @@ __metadata: languageName: node linkType: hard +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: 10c0/71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 + languageName: node + linkType: hard + +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.2 resolution: "exponential-backoff@npm:3.1.2" @@ -3734,7 +4233,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b @@ -3764,6 +4263,15 @@ __metadata: languageName: node linkType: hard +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + "fdir@npm:^6.4.4": version: 6.4.4 resolution: "fdir@npm:6.4.4" @@ -3814,7 +4322,7 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^4.1.0": +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" dependencies: @@ -3858,15 +4366,6 @@ __metadata: languageName: node linkType: hard -"for-each@npm:^0.3.3, for-each@npm:^0.3.5": - version: 0.3.5 - resolution: "for-each@npm:0.3.5" - dependencies: - is-callable: "npm:^1.2.7" - checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee - languageName: node - linkType: hard - "foreground-child@npm:^3.1.0": version: 3.3.1 resolution: "foreground-child@npm:3.3.1" @@ -3922,7 +4421,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.2": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -3932,7 +4431,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -3948,27 +4447,6 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": - version: 1.1.8 - resolution: "function.prototype.name@npm:1.1.8" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - functions-have-names: "npm:^1.2.3" - hasown: "npm:^2.0.2" - is-callable: "npm:^1.2.7" - checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253 - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.3": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca - languageName: node - linkType: hard - "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -3976,7 +4454,14 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.3.0": version: 1.3.0 resolution: "get-intrinsic@npm:1.3.0" dependencies: @@ -4001,7 +4486,7 @@ __metadata: languageName: node linkType: hard -"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": +"get-proto@npm:^1.0.1": version: 1.0.1 resolution: "get-proto@npm:1.0.1" dependencies: @@ -4011,14 +4496,10 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.1.0": - version: 1.1.0 - resolution: "get-symbol-description@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 languageName: node linkType: hard @@ -4065,7 +4546,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.6, glob@npm:^7.2.0, glob@npm:^7.2.3": +"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -4093,16 +4574,6 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.4": - version: 1.0.4 - resolution: "globalthis@npm:1.0.4" - dependencies: - define-properties: "npm:^1.2.1" - gopd: "npm:^1.0.1" - checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 - languageName: node - linkType: hard - "globby@npm:^11.0.0, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" @@ -4117,60 +4588,24 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1, gopd@npm:^1.2.0": +"gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 languageName: node linkType: hard -"has-bigints@npm:^1.0.2": - version: 1.1.0 - resolution: "has-bigints@npm:1.1.0" - checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788 - languageName: node - linkType: hard - -"has-dynamic-import@npm:^2.1.0": - version: 2.1.1 - resolution: "has-dynamic-import@npm:2.1.1" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/30f3b5cb0daf82c432c52a37b29ddbcbb9a3b333cfce836f7b79e8efbb89ed4a5fb8dd72dde41b18c9b2485c9b390f4a59764790c0795c1edbfa6014fdb6a154 - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: "npm:^1.0.0" - checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 - languageName: node - linkType: hard - -"has-proto@npm:^1.2.0": - version: 1.2.0 - resolution: "has-proto@npm:1.2.0" - dependencies: - dunder-proto: "npm:^1.0.0" - checksum: 10c0/46538dddab297ec2f43923c3d35237df45d8c55a6fc1067031e04c13ed8a9a8f94954460632fd4da84c31a1721eefee16d901cbb1ae9602bab93bb6e08f93b95 +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 languageName: node linkType: hard @@ -4226,6 +4661,13 @@ __metadata: languageName: node linkType: hard +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.1": version: 4.2.0 resolution: "http-cache-semantics@npm:4.2.0" @@ -4262,6 +4704,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + "iconv-lite@npm:^0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" @@ -4297,6 +4746,18 @@ __metadata: languageName: node linkType: hard +"import-local@npm:^3.0.2": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -4333,17 +4794,6 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.1.0": - version: 1.1.0 - resolution: "internal-slot@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - hasown: "npm:^2.0.2" - side-channel: "npm:^1.1.0" - checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 - languageName: node - linkType: hard - "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -4354,27 +4804,6 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.1.1": - version: 1.2.0 - resolution: "is-arguments@npm:1.2.0" - dependencies: - call-bound: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/6377344b31e9fcb707c6751ee89b11f132f32338e6a782ec2eac9393b0cbd32235dad93052998cda778ee058754860738341d8114910d50ada5615912bb929fc - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": - version: 3.0.5 - resolution: "is-array-buffer@npm:3.0.5" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d - languageName: node - linkType: hard - "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -4382,28 +4811,6 @@ __metadata: languageName: node linkType: hard -"is-async-function@npm:^2.0.0": - version: 2.1.1 - resolution: "is-async-function@npm:2.1.1" - dependencies: - async-function: "npm:^1.0.0" - call-bound: "npm:^1.0.3" - get-proto: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.2" - safe-regex-test: "npm:^1.1.0" - checksum: 10c0/d70c236a5e82de6fc4d44368ffd0c2fee2b088b893511ce21e679da275a5ecc6015ff59a7d7e1bdd7ca39f71a8dbdd253cf8cce5c6b3c91cdd5b42b5ce677298 - languageName: node - linkType: hard - -"is-bigint@npm:^1.1.0": - version: 1.1.0 - resolution: "is-bigint@npm:1.1.0" - dependencies: - has-bigints: "npm:^1.0.2" - checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 - languageName: node - linkType: hard - "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -4413,16 +4820,6 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.2.1": - version: 1.2.2 - resolution: "is-boolean-object@npm:1.2.2" - dependencies: - call-bound: "npm:^1.0.3" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/36ff6baf6bd18b3130186990026f5a95c709345c39cd368468e6c1b6ab52201e9fd26d8e1f4c066357b4938b0f0401e1a5000e08257787c1a02f3a719457001e - languageName: node - linkType: hard - "is-bun-module@npm:^2.0.0": version: 2.0.0 resolution: "is-bun-module@npm:2.0.0" @@ -4432,13 +4829,6 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f - languageName: node - linkType: hard - "is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.0": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" @@ -4448,27 +4838,6 @@ __metadata: languageName: node linkType: hard -"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": - version: 1.0.2 - resolution: "is-data-view@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.6" - is-typed-array: "npm:^1.1.13" - checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153 - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": - version: 1.1.0 - resolution: "is-date-object@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f - languageName: node - linkType: hard - "is-expression@npm:^4.0.0": version: 4.0.0 resolution: "is-expression@npm:4.0.0" @@ -4486,15 +4855,6 @@ __metadata: languageName: node linkType: hard -"is-finalizationregistry@npm:^1.1.0": - version: 1.1.1 - resolution: "is-finalizationregistry@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.3" - checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97 - languageName: node - linkType: hard - "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -4502,15 +4862,10 @@ __metadata: languageName: node linkType: hard -"is-generator-function@npm:^1.0.10": - version: 1.1.0 - resolution: "is-generator-function@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.3" - get-proto: "npm:^1.0.0" - has-tostringtag: "npm:^1.0.2" - safe-regex-test: "npm:^1.1.0" - checksum: 10c0/fdfa96c8087bf36fc4cd514b474ba2ff404219a4dd4cfa6cf5426404a1eed259bdcdb98f082a71029a48d01f27733e3436ecc6690129a7ec09cb0434bee03a2a +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d languageName: node linkType: hard @@ -4523,23 +4878,6 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.2, is-map@npm:^2.0.3": - version: 2.0.3 - resolution: "is-map@npm:2.0.3" - checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc - languageName: node - linkType: hard - -"is-number-object@npm:^1.1.1": - version: 1.1.1 - resolution: "is-number-object@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.3" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53 - languageName: node - linkType: hard - "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -4556,7 +4894,7 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.0.3, is-regex@npm:^1.1.4, is-regex@npm:^1.2.1": +"is-regex@npm:^1.0.3": version: 1.2.1 resolution: "is-regex@npm:1.2.1" dependencies: @@ -4568,29 +4906,10 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.2, is-set@npm:^2.0.3": - version: 2.0.3 - resolution: "is-set@npm:2.0.3" - checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.4": - version: 1.0.4 - resolution: "is-shared-array-buffer@npm:1.0.4" - dependencies: - call-bound: "npm:^1.0.3" - checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db - languageName: node - linkType: hard - -"is-string@npm:^1.0.7, is-string@npm:^1.1.0, is-string@npm:^1.1.1": - version: 1.1.1 - resolution: "is-string@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.3" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 languageName: node linkType: hard @@ -4603,84 +4922,96 @@ __metadata: languageName: node linkType: hard -"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": - version: 1.1.1 - resolution: "is-symbol@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.2" - has-symbols: "npm:^1.1.0" - safe-regex-test: "npm:^1.1.0" - checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e +"is-windows@npm:^1.0.0": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 languageName: node linkType: hard -"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": - version: 1.1.15 - resolution: "is-typed-array@npm:1.1.15" - dependencies: - which-typed-array: "npm:^1.1.16" - checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d languageName: node linkType: hard -"is-weakmap@npm:^2.0.2": - version: 2.0.2 - resolution: "is-weakmap@npm:2.0.2" - checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 languageName: node linkType: hard -"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0": - version: 1.1.1 - resolution: "is-weakref@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.3" - checksum: 10c0/8e0a9c07b0c780949a100e2cab2b5560a48ecd4c61726923c1a9b77b6ab0aa0046c9e7fb2206042296817045376dee2c8ab1dabe08c7c3dfbf195b01275a085b +"isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db languageName: node linkType: hard -"is-weakset@npm:^2.0.3": - version: 2.0.4 - resolution: "is-weakset@npm:2.0.4" - dependencies: - call-bound: "npm:^1.0.3" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b languageName: node linkType: hard -"is-windows@npm:^1.0.0": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + dependencies: + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^6.3.0" + checksum: 10c0/8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee languageName: node linkType: hard -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 languageName: node linkType: hard -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 languageName: node linkType: hard -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + source-map: "npm:^0.6.1" + checksum: 10c0/19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 languageName: node linkType: hard -"isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 languageName: node linkType: hard @@ -4710,7 +5041,110 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.2.1": +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" + dependencies: + execa: "npm:^5.0.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + checksum: 10c0/e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + co: "npm:^4.6.0" + dedent: "npm:^1.0.0" + is-generator-fn: "npm:^2.0.0" + jest-each: "npm:^29.7.0" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + pure-rand: "npm:^6.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e + languageName: node + linkType: hard + +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + create-jest: "npm:^29.7.0" + exit: "npm:^0.1.2" + import-local: "npm:^3.0.2" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + yargs: "npm:^17.3.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a + languageName: node + linkType: hard + +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/test-sequencer": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-jest: "npm:^29.7.0" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + deepmerge: "npm:^4.2.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-circus: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + parse-json: "npm:^5.2.0" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 10c0/bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 + languageName: node + linkType: hard + +"jest-diff@npm:^29.2.1, jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" dependencies: @@ -4722,6 +5156,42 @@ __metadata: languageName: node linkType: hard +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" + dependencies: + detect-newline: "npm:^3.0.0" + checksum: 10c0/d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 + languageName: node + linkType: hard + +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b + languageName: node + linkType: hard + "jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" @@ -4729,6 +5199,287 @@ __metadata: languageName: node linkType: hard +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/graceful-fs": "npm:^4.1.3" + "@types/node": "npm:*" + anymatch: "npm:^3.0.3" + fb-watchman: "npm:^2.0.0" + fsevents: "npm:^2.3.2" + graceful-fs: "npm:^4.2.9" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 + languageName: node + linkType: hard + +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + checksum: 10c0/7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 10c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" + dependencies: + jest-regex-util: "npm:^29.6.3" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-pnp-resolver: "npm:^1.2.2" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + resolve: "npm:^1.20.0" + resolve.exports: "npm:^2.0.0" + slash: "npm:^3.0.0" + checksum: 10c0/59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/environment": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + graceful-fs: "npm:^4.2.9" + jest-docblock: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-leak-detector: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-resolve: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/globals": "npm:^29.7.0" + "@jest/source-map": "npm:^29.6.3" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + cjs-module-lexer: "npm:^1.0.0" + collect-v8-coverage: "npm:^1.0.0" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@babel/generator": "npm:^7.7.2" + "@babel/plugin-syntax-jsx": "npm:^7.7.2" + "@babel/plugin-syntax-typescript": "npm:^7.7.2" + "@babel/types": "npm:^7.3.3" + "@jest/expect-utils": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + chalk: "npm:^4.0.0" + expect: "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + natural-compare: "npm:^1.4.0" + pretty-format: "npm:^29.7.0" + semver: "npm:^7.5.3" + checksum: 10c0/6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + languageName: node + linkType: hard + +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + leven: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 + languageName: node + linkType: hard + +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + jest-util: "npm:^29.7.0" + string-length: "npm:^4.0.1" + checksum: 10c0/ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 + languageName: node + linkType: hard + +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 + languageName: node + linkType: hard + +"jest@npm:^29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + import-local: "npm:^3.0.2" + jest-cli: "npm:^29.7.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b + languageName: node + linkType: hard + "js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -4766,7 +5517,7 @@ __metadata: languageName: node linkType: hard -"jscodeshift@npm:^17.0.0": +"jscodeshift@npm:^17.3.0": version: 17.3.0 resolution: "jscodeshift@npm:17.3.0" dependencies: @@ -4903,6 +5654,13 @@ __metadata: languageName: node linkType: hard +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b + languageName: node + linkType: hard + "language-subtag-registry@npm:^0.3.20": version: 0.3.23 resolution: "language-subtag-registry@npm:0.3.23" @@ -4919,6 +5677,13 @@ __metadata: languageName: node linkType: hard +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + languageName: node + linkType: hard + "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -5027,6 +5792,15 @@ __metadata: languageName: node linkType: hard +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + "make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" @@ -5046,6 +5820,15 @@ __metadata: languageName: node linkType: hard +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + "markdown-table@npm:^3.0.3": version: 3.0.4 resolution: "markdown-table@npm:3.0.4" @@ -5096,6 +5879,13 @@ __metadata: languageName: node linkType: hard +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + "merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" @@ -5339,7 +6129,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.7, micromatch@npm:^4.0.8": +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.7, micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -5349,6 +6139,13 @@ __metadata: languageName: node linkType: hard +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + "minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -5468,21 +6265,6 @@ __metadata: languageName: node linkType: hard -"mock-property@npm:^1.1.0": - version: 1.1.0 - resolution: "mock-property@npm:1.1.0" - dependencies: - define-data-property: "npm:^1.1.4" - functions-have-names: "npm:^1.2.3" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - hasown: "npm:^2.0.2" - isarray: "npm:^2.0.5" - object-inspect: "npm:^1.13.2" - checksum: 10c0/b2ae21d37a64d07caf7777ec1cccebfd4043b6e27c2095aa733e03be68c1a7ac32d33fe8be433d0ae39c41a06531cd569d22029be0f401f4ffe91beb495be8ee - languageName: node - linkType: hard - "mri@npm:^1.2.0": version: 1.2.0 resolution: "mri@npm:1.2.0" @@ -5571,6 +6353,13 @@ __metadata: languageName: node linkType: hard +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + "node-releases@npm:^2.0.19": version: 2.0.19 resolution: "node-releases@npm:2.0.19" @@ -5624,48 +6413,19 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 - languageName: node - linkType: hard - -"object-inspect@npm:^1.13.2, object-inspect@npm:^1.13.3": - version: 1.13.4 - resolution: "object-inspect@npm:1.13.4" - checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 - languageName: node - linkType: hard - -"object-is@npm:^1.1.5, object-is@npm:^1.1.6": - version: 1.1.6 - resolution: "object-is@npm:1.1.6" +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0 - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac languageName: node linkType: hard -"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5, object.assign@npm:^4.1.7": - version: 4.1.7 - resolution: "object.assign@npm:4.1.7" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - has-symbols: "npm:^1.1.0" - object-keys: "npm:^1.1.1" - checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc +"object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 languageName: node linkType: hard @@ -5678,6 +6438,15 @@ __metadata: languageName: node linkType: hard +"onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + "optionator@npm:^0.9.3": version: 0.9.4 resolution: "optionator@npm:0.9.4" @@ -5706,17 +6475,6 @@ __metadata: languageName: node linkType: hard -"own-keys@npm:^1.0.1": - version: 1.0.1 - resolution: "own-keys@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.2.6" - object-keys: "npm:^1.1.1" - safe-push-apply: "npm:^1.0.0" - checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a - languageName: node - linkType: hard - "p-filter@npm:^2.1.0": version: 2.1.0 resolution: "p-filter@npm:2.1.0" @@ -5735,7 +6493,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2": +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -5850,7 +6608,7 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^3.1.0": +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c @@ -5888,7 +6646,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be @@ -5918,7 +6676,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.6": +"pirates@npm:^4.0.4, pirates@npm:^4.0.6": version: 4.0.7 resolution: "pirates@npm:4.0.7" checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a @@ -5934,10 +6692,12 @@ __metadata: languageName: node linkType: hard -"possible-typed-array-names@npm:^1.0.0": - version: 1.1.0 - resolution: "possible-typed-array-names@npm:1.1.0" - checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 languageName: node linkType: hard @@ -6074,7 +6834,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.7.0": +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -6102,6 +6862,16 @@ __metadata: languageName: node linkType: hard +"prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: "npm:^3.0.3" + sisteransi: "npm:^1.0.5" + checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 + languageName: node + linkType: hard + "pug-error@npm:^2.0.0": version: 2.1.0 resolution: "pug-error@npm:2.1.0" @@ -6127,6 +6897,13 @@ __metadata: languageName: node linkType: hard +"pure-rand@npm:^6.0.0": + version: 6.1.0 + resolution: "pure-rand@npm:6.1.0" + checksum: 10c0/1abe217897bf74dcb3a0c9aba3555fe975023147b48db540aa2faf507aee91c03bf54f6aef0eb2bf59cc259a16d06b28eca37f0dc426d94f4692aeff02fb0e65 + languageName: node + linkType: hard + "quansync@npm:^0.2.7": version: 0.2.10 resolution: "quansync@npm:0.2.10" @@ -6192,22 +6969,6 @@ __metadata: languageName: node linkType: hard -"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": - version: 1.0.10 - resolution: "reflect.getprototypeof@npm:1.0.10" - dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.9" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.7" - get-proto: "npm:^1.0.1" - which-builtin-type: "npm:^1.2.1" - checksum: 10c0/7facec28c8008876f8ab98e80b7b9cb4b1e9224353fd4756dda5f2a4ab0d30fa0a5074777c6df24e1e0af463a2697513b0a11e548d99cf52f21f7bc6ba48d3ac - languageName: node - linkType: hard - "regenerate-unicode-properties@npm:^10.2.0": version: 10.2.0 resolution: "regenerate-unicode-properties@npm:10.2.0" @@ -6231,20 +6992,6 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.3": - version: 1.5.4 - resolution: "regexp.prototype.flags@npm:1.5.4" - dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-errors: "npm:^1.3.0" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - set-function-name: "npm:^2.0.2" - checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77 - languageName: node - linkType: hard - "regexpu-core@npm:^6.2.0": version: 6.2.0 resolution: "regexpu-core@npm:6.2.0" @@ -6277,6 +7024,13 @@ __metadata: languageName: node linkType: hard +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + "require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" @@ -6284,6 +7038,15 @@ __metadata: languageName: node linkType: hard +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -6305,7 +7068,14 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.14.2, resolve@npm:^1.22.4": +"resolve.exports@npm:^2.0.0": + version: 2.0.3 + resolution: "resolve.exports@npm:2.0.3" + checksum: 10c0/1ade1493f4642a6267d0a5e68faeac20b3d220f18c28b140343feb83694d8fed7a286852aef43689d16042c61e2ddb270be6578ad4a13990769e12065191200d + languageName: node + linkType: hard + +"resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.4": version: 1.22.10 resolution: "resolve@npm:1.22.10" dependencies: @@ -6318,20 +7088,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^2.0.0-next.5": - version: 2.0.0-next.5 - resolution: "resolve@npm:2.0.0-next.5" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": +"resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": version: 1.22.10 resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" dependencies: @@ -6344,19 +7101,6 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": - version: 2.0.0-next.5 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 - languageName: node - linkType: hard - "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -6380,40 +7124,6 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.1.3": - version: 1.1.3 - resolution: "safe-array-concat@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.6" - has-symbols: "npm:^1.1.0" - isarray: "npm:^2.0.5" - checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d - languageName: node - linkType: hard - -"safe-push-apply@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-push-apply@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - isarray: "npm:^2.0.5" - checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex-test@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - is-regex: "npm:^1.2.1" - checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 - languageName: node - linkType: hard - "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.2": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -6437,7 +7147,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.1": +"semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -6446,7 +7156,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.6.0, semver@npm:^7.7.1": +"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1": version: 7.7.2 resolution: "semver@npm:7.7.2" bin: @@ -6455,43 +7165,6 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.2": - version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c - languageName: node - linkType: hard - -"set-function-name@npm:^2.0.2": - version: 2.0.2 - resolution: "set-function-name@npm:2.0.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - functions-have-names: "npm:^1.2.3" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 - languageName: node - linkType: hard - -"set-proto@npm:^1.0.0": - version: 1.0.0 - resolution: "set-proto@npm:1.0.0" - dependencies: - dunder-proto: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a - languageName: node - linkType: hard - "sh-syntax@npm:^0.5.6": version: 0.5.7 resolution: "sh-syntax@npm:0.5.7" @@ -6533,51 +7206,10 @@ __metadata: languageName: node linkType: hard -"side-channel-list@npm:^1.0.0": - version: 1.0.0 - resolution: "side-channel-list@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d - languageName: node - linkType: hard - -"side-channel-map@npm:^1.0.1": - version: 1.0.1 - resolution: "side-channel-map@npm:1.0.1" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 - languageName: node - linkType: hard - -"side-channel-weakmap@npm:^1.0.2": - version: 1.0.2 - resolution: "side-channel-weakmap@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - side-channel-map: "npm:^1.0.1" - checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4, side-channel@npm:^1.1.0": - version: 1.1.0 - resolution: "side-channel@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - side-channel-list: "npm:^1.0.0" - side-channel-map: "npm:^1.0.1" - side-channel-weakmap: "npm:^1.0.2" - checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 +"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 languageName: node linkType: hard @@ -6588,6 +7220,13 @@ __metadata: languageName: node linkType: hard +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 + languageName: node + linkType: hard + "slash@npm:^2.0.0": version: 2.0.0 resolution: "slash@npm:2.0.0" @@ -6640,6 +7279,16 @@ __metadata: languageName: node linkType: hard +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + "source-map-support@npm:^0.5.16": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" @@ -6704,13 +7353,22 @@ __metadata: languageName: node linkType: hard -"stop-iteration-iterator@npm:^1.0.0": - version: 1.1.0 - resolution: "stop-iteration-iterator@npm:1.1.0" +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" dependencies: - es-errors: "npm:^1.3.0" - internal-slot: "npm:^1.1.0" - checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c languageName: node linkType: hard @@ -6721,7 +7379,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -6743,44 +7401,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.10, string.prototype.trim@npm:^1.2.9": - version: 1.2.10 - resolution: "string.prototype.trim@npm:1.2.10" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - define-data-property: "npm:^1.1.4" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-object-atoms: "npm:^1.0.0" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.9": - version: 1.0.9 - resolution: "string.prototype.trimend@npm:1.0.9" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimstart@npm:1.0.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 - languageName: node - linkType: hard - "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -6806,6 +7426,20 @@ __metadata: languageName: node linkType: hard +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + "strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -6838,6 +7472,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -6845,38 +7488,6 @@ __metadata: languageName: node linkType: hard -"tape@npm:^5.9.0": - version: 5.9.0 - resolution: "tape@npm:5.9.0" - dependencies: - "@ljharb/resumer": "npm:^0.1.3" - "@ljharb/through": "npm:^2.3.13" - array.prototype.every: "npm:^1.1.6" - call-bind: "npm:^1.0.7" - deep-equal: "npm:^2.2.3" - defined: "npm:^1.0.1" - dotignore: "npm:^0.1.2" - for-each: "npm:^0.3.3" - get-package-type: "npm:^0.1.0" - glob: "npm:^7.2.3" - has-dynamic-import: "npm:^2.1.0" - hasown: "npm:^2.0.2" - inherits: "npm:^2.0.4" - is-regex: "npm:^1.1.4" - minimist: "npm:^1.2.8" - mock-property: "npm:^1.1.0" - object-inspect: "npm:^1.13.2" - object-is: "npm:^1.1.6" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.5" - resolve: "npm:^2.0.0-next.5" - string.prototype.trim: "npm:^1.2.9" - bin: - tape: bin/tape - checksum: 10c0/06c20103eb1971be901fc230a635d079db2d5ef16a2743d3340991f7754ff8380d24a0cb23774e9e5b15f254faeed536e1e0624a0cf80d2142d09f35a61df189 - languageName: node - linkType: hard - "tar@npm:^7.4.3": version: 7.4.3 resolution: "tar@npm:7.4.3" @@ -6898,6 +7509,17 @@ __metadata: languageName: node linkType: hard +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + "tiny-invariant@npm:^1.3.3": version: 1.3.3 resolution: "tiny-invariant@npm:1.3.3" @@ -6931,6 +7553,13 @@ __metadata: languageName: node linkType: hard +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + languageName: node + linkType: hard + "to-ast@npm:^1.0.0": version: 1.0.0 resolution: "to-ast@npm:1.0.0" @@ -7000,6 +7629,20 @@ __metadata: languageName: node linkType: hard +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + "type-fest@npm:^2.11.2": version: 2.19.0 resolution: "type-fest@npm:2.19.0" @@ -7014,59 +7657,6 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 - languageName: node - linkType: hard - -"typed-array-byte-length@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-byte-length@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.8" - for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" - has-proto: "npm:^1.2.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e - languageName: node - linkType: hard - -"typed-array-byte-offset@npm:^1.0.4": - version: 1.0.4 - resolution: "typed-array-byte-offset@npm:1.0.4" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" - has-proto: "npm:^1.2.0" - is-typed-array: "npm:^1.1.15" - reflect.getprototypeof: "npm:^1.0.9" - checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 - languageName: node - linkType: hard - -"typed-array-length@npm:^1.0.7": - version: 1.0.7 - resolution: "typed-array-length@npm:1.0.7" - dependencies: - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - is-typed-array: "npm:^1.1.13" - possible-typed-array-names: "npm:^1.0.0" - reflect.getprototypeof: "npm:^1.0.6" - checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 - languageName: node - linkType: hard - "ulid@npm:^2.3.0": version: 2.4.0 resolution: "ulid@npm:2.4.0" @@ -7076,15 +7666,10 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.1.0": - version: 1.1.0 - resolution: "unbox-primitive@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.3" - has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.1.0" - which-boxed-primitive: "npm:^1.1.1" - checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 +"undici-types@npm:~6.21.0": + version: 6.21.0 + resolution: "undici-types@npm:6.21.0" + checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04 languageName: node linkType: hard @@ -7237,6 +7822,26 @@ __metadata: languageName: node linkType: hard +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10c0/968bcf1c7c88c04df1ffb463c179558a2ec17aa49e49376120504958239d9e9dad5281aa05f2a78542b8557f2be0b0b4c325710262f3b838b40d703d5ed30c23 + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + languageName: node + linkType: hard + "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -7254,67 +7859,6 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.2, which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": - version: 1.1.1 - resolution: "which-boxed-primitive@npm:1.1.1" - dependencies: - is-bigint: "npm:^1.1.0" - is-boolean-object: "npm:^1.2.1" - is-number-object: "npm:^1.1.1" - is-string: "npm:^1.1.1" - is-symbol: "npm:^1.1.1" - checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe - languageName: node - linkType: hard - -"which-builtin-type@npm:^1.2.1": - version: 1.2.1 - resolution: "which-builtin-type@npm:1.2.1" - dependencies: - call-bound: "npm:^1.0.2" - function.prototype.name: "npm:^1.1.6" - has-tostringtag: "npm:^1.0.2" - is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.1.0" - is-finalizationregistry: "npm:^1.1.0" - is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.2.1" - is-weakref: "npm:^1.0.2" - isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.1.0" - which-collection: "npm:^1.0.2" - which-typed-array: "npm:^1.1.16" - checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 - languageName: node - linkType: hard - -"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2": - version: 1.0.2 - resolution: "which-collection@npm:1.0.2" - dependencies: - is-map: "npm:^2.0.3" - is-set: "npm:^2.0.3" - is-weakmap: "npm:^2.0.2" - is-weakset: "npm:^2.0.3" - checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - for-each: "npm:^0.3.5" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f - languageName: node - linkType: hard - "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -7373,6 +7917,16 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.7" + checksum: 10c0/a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 + languageName: node + linkType: hard + "write-file-atomic@npm:^5.0.1": version: 5.0.1 resolution: "write-file-atomic@npm:5.0.1" @@ -7383,6 +7937,13 @@ __metadata: languageName: node linkType: hard +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" @@ -7404,6 +7965,28 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs@npm:^17.3.1": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"