Переглянути джерело

Update tests

Provide more tests for choice components.
master
TheoryOfNekomata 1 рік тому
джерело
коміт
458b393cb8
11 змінених файлів з 483 додано та 38 видалено
  1. +0
    -2
      categories/action/react/.eslintrc
  2. +2
    -1
      categories/action/react/package.json
  3. +8
    -7
      categories/action/react/src/components/ActionButton/ActionButton.test.tsx
  4. +3
    -0
      categories/action/react/vitest.config.ts
  5. +2
    -1
      categories/choice/react/.eslintrc
  6. +2
    -1
      categories/choice/react/package.json
  7. +35
    -19
      categories/choice/react/src/components/DropdownSelect/DropdownSelect.test.tsx
  8. +176
    -0
      categories/choice/react/src/components/RadioButton/RadioButton.test.tsx
  9. +5
    -3
      categories/choice/react/src/components/RadioButton/index.tsx
  10. +14
    -0
      categories/choice/react/src/index.test.ts
  11. +236
    -4
      pnpm-lock.yaml

+ 0
- 2
categories/action/react/.eslintrc Переглянути файл

@@ -4,8 +4,6 @@
"quote-props": "off",
"react/jsx-props-no-spreading": "off",
"react/button-has-type": "off",
"@typescript-eslint/no-unsafe-call": "off",
"@typescript-eslint/no-unsafe-member-access": "off",
"import/no-extraneous-dependencies": "off"
},
"extends": [


+ 2
- 1
categories/action/react/package.json Переглянути файл

@@ -19,6 +19,7 @@
"@types/node": "^18.14.1",
"@types/react": "^18.0.27",
"@types/testing-library__jest-dom": "^5.14.7",
"@vitest/coverage-v8": "^0.33.0",
"eslint": "^8.35.0",
"eslint-config-lxsmnsyc": "^0.5.0",
"jsdom": "^21.1.0",
@@ -28,7 +29,7 @@
"react-test-renderer": "^18.2.0",
"tslib": "^2.5.0",
"typescript": "^4.9.5",
"vitest": "^0.28.1"
"vitest": "^0.33.0"
},
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0",


+ 8
- 7
categories/action/react/src/components/ActionButton/ActionButton.test.tsx Переглянути файл

@@ -10,7 +10,8 @@ import {
vi,
describe,
it,
expect, afterEach,
expect,
afterEach,
} from 'vitest';
import matchers from '@testing-library/jest-dom/matchers';
import {
@@ -64,7 +65,10 @@ describe('ActionButton', () => {
});

it('handles click events', async () => {
const onClick = vi.fn().mockImplementationOnce((e) => { e.preventDefault(); });
const onClick = vi.fn().mockImplementationOnce((e: React.MouseEvent) => {
e.preventDefault();
});

render(
<ActionButton
onClick={onClick}
@@ -83,9 +87,7 @@ describe('ActionButton', () => {
);

const button: HTMLButtonElement = screen.getByRole('button');
expect(button).toHaveClass('pl-2');
expect(button).toHaveClass('gap-2');
expect(button).toHaveClass('pr-2');
expect(button).toHaveClass('pl-2 gap-2 pr-2');
});

describe.each`
@@ -148,8 +150,7 @@ describe('ActionButton', () => {
);

const button: HTMLButtonElement = screen.getByRole('button');
expect(button).toHaveClass('w-full');
expect(button).toHaveClass('flex');
expect(button).toHaveClass('w-full flex');
});

it('renders children', () => {


+ 3
- 0
categories/action/react/vitest.config.ts Переглянути файл

@@ -4,5 +4,8 @@ export default ({
test: {
global: true,
environment: 'jsdom',
coverage: {
provider: 'v8',
},
},
});

+ 2
- 1
categories/choice/react/.eslintrc Переглянути файл

@@ -2,7 +2,8 @@
"root": true,
"rules": {
"quote-props": "off",
"react/jsx-props-no-spreading": "off"
"react/jsx-props-no-spreading": "off",
"import/no-extraneous-dependencies": "off"
},
"extends": [
"lxsmnsyc/typescript/react"


+ 2
- 1
categories/choice/react/package.json Переглянути файл

@@ -19,6 +19,7 @@
"@types/node": "^18.14.1",
"@types/react": "^18.0.27",
"@types/testing-library__jest-dom": "^5.14.7",
"@vitest/coverage-v8": "^0.33.0",
"eslint": "^8.35.0",
"eslint-config-lxsmnsyc": "^0.5.0",
"jsdom": "^21.1.0",
@@ -29,7 +30,7 @@
"tslib": "^2.5.0",
"tsx": "^3.12.7",
"typescript": "^4.9.5",
"vitest": "^0.28.1"
"vitest": "^0.33.0"
},
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0",


+ 35
- 19
categories/choice/react/src/components/DropdownSelect/DropdownSelect.test.tsx Переглянути файл

@@ -118,9 +118,9 @@ describe('DropdownSelect', () => {

describe.each`
size | inputClassNames | hintClassNames | indicatorClassNames
${'small'} | ${['h-10']} | ${['pr-10']} | ${['w-10']}
${'medium'} | ${['h-12']} | ${['pr-12']} | ${['w-12']}
${'large'} | ${['h-16']} | ${['pr-16']} | ${['w-16']}
${'small'} | ${'h-10'} | ${'pr-10'} | ${'w-10'}
${'medium'} | ${'h-12'} | ${'pr-12'} | ${'w-12'}
${'large'} | ${'h-16'} | ${'pr-16'} | ${'w-16'}
`('on $size size', ({
size,
inputClassNames,
@@ -128,9 +128,9 @@ describe('DropdownSelect', () => {
indicatorClassNames,
}: {
size: TextControl.Size,
inputClassNames: string[],
hintClassNames: string[],
indicatorClassNames: string[],
inputClassNames: string,
hintClassNames: string,
indicatorClassNames: string,
}) => {
it('renders input styles', () => {
render(
@@ -140,10 +140,10 @@ describe('DropdownSelect', () => {
);

const combobox = screen.getByRole('combobox');
expect(combobox).toHaveClass(...inputClassNames);
expect(combobox).toHaveClass(inputClassNames);
});

it('renders hint styles', () => {
it('renders hint styles with indicator', () => {
render(
<DropdownSelect
size={size}
@@ -153,19 +153,32 @@ describe('DropdownSelect', () => {
);

const hint = screen.getByTestId('hint');
expect(hint).toHaveClass(...hintClassNames);
expect(hint).toHaveClass(hintClassNames);
});

it('renders indicator styles', () => {
render(
<DropdownSelect
size={size}
indicator="a'"
indicator="a"
/>,
);

const indicator = screen.getByTestId('indicator');
expect(indicator).toHaveClass(...indicatorClassNames);
expect(indicator).toHaveClass(indicatorClassNames);
});

it('renders indicator styles for label', () => {
render(
<DropdownSelect
size={size}
label="label"
indicator="a"
/>,
);

const label = screen.getByTestId('label');
expect(label).toHaveClass(hintClassNames);
});
});

@@ -181,17 +194,17 @@ describe('DropdownSelect', () => {
});

describe.each`
variant | inputClassNames | hintClassNames
${'default'} | ${['pl-4']} | ${['bottom-0', 'pl-4', 'pb-1']}
${'alternate'} | ${['pl-1.5', 'pt-4']} | ${['top-0.5']}
variant | inputClassNames | hintClassNames
${'default'} | ${'pl-4'} | ${'bottom-0 pl-4 pb-1'}
${'alternate'} | ${'pl-1.5 pt-4'} | ${'top-0.5'}
`('on $variant variant', ({
variant,
inputClassNames,
hintClassNames,
}: {
variant: TextControl.Variant,
inputClassNames: string[],
hintClassNames: string[],
inputClassNames: string,
hintClassNames: string,
}) => {
it('renders input styles', () => {
render(
@@ -201,7 +214,7 @@ describe('DropdownSelect', () => {
);

const combobox = screen.getByRole('combobox');
expect(combobox).toHaveClass(...inputClassNames);
expect(combobox).toHaveClass(inputClassNames);
});

it('renders hint styles', () => {
@@ -213,12 +226,15 @@ describe('DropdownSelect', () => {
);

const hint = screen.getByTestId('hint');
expect(hint).toHaveClass(...hintClassNames);
expect(hint).toHaveClass(hintClassNames);
});
});

it('handles change events', async () => {
const onChange = vi.fn().mockImplementationOnce((e) => { e.preventDefault(); })
const onChange = vi.fn().mockImplementationOnce((e: React.ChangeEvent) => {
e.preventDefault();
});

render(
<DropdownSelect
onChange={onChange}


+ 176
- 0
categories/choice/react/src/components/RadioButton/RadioButton.test.tsx Переглянути файл

@@ -0,0 +1,176 @@
import * as React from 'react';
import {
cleanup,
render,
screen,
} from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { Button } from '@tesseract-design/web-base';
import {
vi,
expect,
describe,
it, afterEach,
} from 'vitest';
import matchers from '@testing-library/jest-dom/matchers';
import { RadioButton } from '.';

expect.extend(matchers);

describe('RadioButton', () => {
afterEach(() => {
cleanup();
});

it('renders a radio button', () => {
render(
<RadioButton />,
);
const checkbox = screen.getByRole('radio');
expect(checkbox).toBeInTheDocument();
});

it('renders a subtext', () => {
render(
<RadioButton
subtext="subtext"
/>,
);
const subtext: HTMLElement = screen.getByTestId('subtext');
expect(subtext).toBeInTheDocument();
});

it('renders a badge', () => {
render(
<RadioButton
badge="badge"
/>,
);
const badge: HTMLElement = screen.getByTestId('badge');
expect(badge).toBeInTheDocument();
});

it('handles click events', async () => {
const onClick = vi.fn().mockImplementationOnce((e: React.MouseEvent) => {
e.preventDefault();
});
render(
<RadioButton
onClick={onClick}
/>,
);
const button: HTMLInputElement = screen.getByRole('radio');
await userEvent.click(button);
expect(onClick).toBeCalled();
});

it('renders a compact button', () => {
render(
<RadioButton
compact
/>,
);

const button = screen.getByTestId('button');
expect(button).toHaveClass('pl-2 gap-2 pr-2');
});

describe.each`
size | className
${'small'} | ${'h-10'}
${'medium'} | ${'h-12'}
${'large'} | ${'h-16'}
`('on $size size', ({
size,
className,
}: { size: Button.Size, className: string }) => {
it('renders button styles', () => {
render(
<RadioButton
size={size}
/>,
);

const button: HTMLButtonElement = screen.getByTestId('button');
expect(button).toHaveClass(className);
});

it('renders badge styles', () => {
render(
<RadioButton
size={size}
badge="badge"
/>,
);

const badge = screen.getByTestId('badge');
expect(badge).toBeInTheDocument();
});
});

it.each`
variant | className
${'bare'} | ${'bg-negative'}
${'outline'} | ${'border-2'}
${'filled'} | ${'bg-primary'}
`('renders a button with $variant variant', ({
variant,
className,
}: { variant: Button.Variant, className: string }) => {
render(
<RadioButton
variant={variant}
/>,
);

const button: HTMLButtonElement = screen.getByTestId('button');
expect(button).toHaveClass(className);
});

it('renders a block button', () => {
render(
<RadioButton
block
/>,
);

const button: HTMLButtonElement = screen.getByTestId('button');
expect(button).toHaveClass('w-full flex');
});

it('renders children', () => {
render(
<RadioButton>
Foo
</RadioButton>,
);

const children: HTMLElement = screen.getByTestId('children');
expect(children).toHaveTextContent('Foo');
});

it('renders a disabled button', () => {
render(
<RadioButton
disabled
/>,
);
const button: HTMLButtonElement = screen.getByRole('radio');
expect(button).toBeDisabled();
});

it('handles change events', async () => {
const onChange = vi.fn().mockImplementationOnce((e: React.ChangeEvent) => {
e.preventDefault();
});

render(
<RadioButton
onChange={onChange}
/>,
);
const radio: HTMLInputElement = screen.getByRole('radio');
await userEvent.click(radio);
expect(onChange).toBeCalled();
});
});

+ 5
- 3
categories/choice/react/src/components/RadioButton/index.tsx Переглянути файл

@@ -72,8 +72,9 @@ export const RadioButton = React.forwardRef<RadioButtonDerivedElement, RadioButt
<label
style={style}
htmlFor={id}
data-testid="button"
className={clsx(
'items-center justify-start rounded overflow-hidden ring-secondary/50 gap-4 leading-none select-none cursor-pointer',
'items-center justify-start rounded overflow-hidden ring-secondary/50 leading-none select-none cursor-pointer',
'peer-focus:outline-0 peer-focus:ring-4 peer-focus:ring-secondary/50',
'active:ring-tertiary/50 active:ring-4',
'peer-disabled:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:ring-0',
@@ -83,11 +84,12 @@ export const RadioButton = React.forwardRef<RadioButtonDerivedElement, RadioButt
'inline-flex max-w-full align-middle': !block,
},
{
'pl-2 pr-2': compact,
'pl-4 pr-4': !compact,
'pl-2 gap-2 pr-2': compact,
'pl-4 gap-4 pr-4': !compact,
},
{
'border-2 border-primary peer-disabled:border-primary peer-focus:border-secondary peer-checked:border-tertiary active:border-tertiary': variant !== 'bare',
'bg-negative': variant === 'bare',
'bg-primary text-negative peer-disabled:bg-primary peer-focus:bg-secondary peer-checked:bg-tertiary active:bg-tertiary': variant === 'filled',
},
{


+ 14
- 0
categories/choice/react/src/index.test.ts Переглянути файл

@@ -0,0 +1,14 @@
import { describe, it, expect } from 'vitest';
import * as WebChoiceReact from '.';

describe('web-choice-react', () => {
it.each([
'ComboBox',
'DropdownSelect',
'MenuSelect',
'RadioButton',
'RadioTickBox',
])('exports %s', (namedExport) => {
expect(WebChoiceReact).toHaveProperty(namedExport);
});
});

+ 236
- 4
pnpm-lock.yaml Переглянути файл

@@ -57,6 +57,9 @@ importers:
'@types/testing-library__jest-dom':
specifier: ^5.14.7
version: 5.14.7
'@vitest/coverage-v8':
specifier: ^0.33.0
version: 0.33.0(vitest@0.33.0)
eslint:
specifier: ^8.35.0
version: 8.43.0
@@ -85,8 +88,8 @@ importers:
specifier: ^4.9.5
version: 4.9.5
vitest:
specifier: ^0.28.1
version: 0.28.1(jsdom@21.1.0)
specifier: ^0.33.0
version: 0.33.0(jsdom@21.1.0)

categories/blob/react:
dependencies:
@@ -167,6 +170,9 @@ importers:
'@types/testing-library__jest-dom':
specifier: ^5.14.7
version: 5.14.7
'@vitest/coverage-v8':
specifier: ^0.33.0
version: 0.33.0(vitest@0.33.0)
eslint:
specifier: ^8.35.0
version: 8.43.0
@@ -198,8 +204,8 @@ importers:
specifier: ^4.9.5
version: 4.9.5
vitest:
specifier: ^0.28.1
version: 0.28.1(jsdom@21.1.0)
specifier: ^0.33.0
version: 0.33.0(jsdom@21.1.0)

categories/color/react:
dependencies:
@@ -1420,6 +1426,10 @@ packages:
to-fast-properties: 2.0.0
dev: true

/@bcoe/v8-coverage@0.2.3:
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
dev: true

/@esbuild-kit/cjs-loader@2.4.2:
resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==}
dependencies:
@@ -1689,6 +1699,11 @@ packages:
/@humanwhocodes/object-schema@1.2.1:
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}

/@istanbuljs/schema@0.1.3:
resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
engines: {node: '>=8'}
dev: true

/@jest/expect-utils@29.5.0:
resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -2262,6 +2277,27 @@ packages:
'@typescript-eslint/types': 5.60.1
eslint-visitor-keys: 3.4.1

/@vitest/coverage-v8@0.33.0(vitest@0.33.0):
resolution: {integrity: sha512-Rj5IzoLF7FLj6yR7TmqsfRDSeaFki6NAJ/cQexqhbWkHEV2htlVGrmuOde3xzvFsCbLCagf4omhcIaVmfU8Okg==}
peerDependencies:
vitest: '>=0.32.0 <1'
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
istanbul-lib-coverage: 3.2.0
istanbul-lib-report: 3.0.0
istanbul-lib-source-maps: 4.0.1
istanbul-reports: 3.1.5
magic-string: 0.30.1
picocolors: 1.0.0
std-env: 3.3.3
test-exclude: 6.0.0
v8-to-istanbul: 9.1.0
vitest: 0.33.0(jsdom@21.1.0)
transitivePeerDependencies:
- supports-color
dev: true

/@vitest/expect@0.28.1:
resolution: {integrity: sha512-BOvWjBoocKrrTTTC0opIvzOEa7WR/Ovx4++QYlbjYKjnQJfWRSEQkTpAIEfOURtZ/ICcaLk5jvsRshXvjarZew==}
dependencies:
@@ -2270,6 +2306,14 @@ packages:
chai: 4.3.7
dev: true

/@vitest/expect@0.33.0:
resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==}
dependencies:
'@vitest/spy': 0.33.0
'@vitest/utils': 0.33.0
chai: 4.3.7
dev: true

/@vitest/runner@0.28.1:
resolution: {integrity: sha512-kOdmgiNe+mAxZhvj2eUTqKnjfvzzknmrcS+SZXV7j6VgJuWPFAMCv3TWOe03nF9dkqDfVLCDRw/hwFuCzmzlQg==}
dependencies:
@@ -2278,12 +2322,34 @@ packages:
pathe: 1.1.1
dev: true

/@vitest/runner@0.33.0:
resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==}
dependencies:
'@vitest/utils': 0.33.0
p-limit: 4.0.0
pathe: 1.1.1
dev: true

/@vitest/snapshot@0.33.0:
resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==}
dependencies:
magic-string: 0.30.1
pathe: 1.1.1
pretty-format: 29.5.0
dev: true

/@vitest/spy@0.28.1:
resolution: {integrity: sha512-XGlD78cG3IxXNnGwEF121l0MfTNlHSdI25gS2ik0z6f/D9wWUOru849QkJbuNl4CMlZCtNkx3b5IS6MRwKGKuA==}
dependencies:
tinyspy: 1.1.1
dev: true

/@vitest/spy@0.33.0:
resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==}
dependencies:
tinyspy: 2.1.1
dev: true

/@vitest/utils@0.28.1:
resolution: {integrity: sha512-a7cV1fs5MeU+W+8sn8gM9gV+q7V/wYz3/4y016w/icyJEKm9AMdSHnrzxTWaElJ07X40pwU6m5353Jlw6Rbd8w==}
dependencies:
@@ -2294,6 +2360,14 @@ packages:
pretty-format: 27.5.1
dev: true

/@vitest/utils@0.33.0:
resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==}
dependencies:
diff-sequences: 29.4.3
loupe: 2.3.6
pretty-format: 29.5.0
dev: true

/abab@2.0.6:
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
dev: true
@@ -4250,6 +4324,10 @@ packages:
whatwg-encoding: 2.0.0
dev: true

/html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
dev: true

/htmlparser2@3.10.1:
resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==}
dependencies:
@@ -4627,6 +4705,39 @@ packages:
resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
dev: false

/istanbul-lib-coverage@3.2.0:
resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
engines: {node: '>=8'}
dev: true

/istanbul-lib-report@3.0.0:
resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==}
engines: {node: '>=8'}
dependencies:
istanbul-lib-coverage: 3.2.0
make-dir: 3.1.0
supports-color: 7.2.0
dev: true

/istanbul-lib-source-maps@4.0.1:
resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
engines: {node: '>=10'}
dependencies:
debug: 4.3.4
istanbul-lib-coverage: 3.2.0
source-map: 0.6.1
transitivePeerDependencies:
- supports-color
dev: true

/istanbul-reports@3.1.5:
resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==}
engines: {node: '>=8'}
dependencies:
html-escaper: 2.0.2
istanbul-lib-report: 3.0.0
dev: true

/jest-diff@29.5.0:
resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -4968,6 +5079,13 @@ packages:
hasBin: true
dev: true

/magic-string@0.30.1:
resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==}
engines: {node: '>=12'}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
dev: true

/make-dir@3.1.0:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
engines: {node: '>=8'}
@@ -6242,6 +6360,15 @@ packages:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}

/test-exclude@6.0.0:
resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
engines: {node: '>=8'}
dependencies:
'@istanbuljs/schema': 0.1.3
glob: 7.2.3
minimatch: 3.1.2
dev: true

/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}

@@ -6271,11 +6398,21 @@ packages:
engines: {node: '>=14.0.0'}
dev: true

/tinypool@0.6.0:
resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==}
engines: {node: '>=14.0.0'}
dev: true

/tinyspy@1.1.1:
resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==}
engines: {node: '>=14.0.0'}
dev: true

/tinyspy@2.1.1:
resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==}
engines: {node: '>=14.0.0'}
dev: true

/titleize@3.0.0:
resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
engines: {node: '>=12'}
@@ -6493,6 +6630,15 @@ packages:
hasBin: true
dev: false

/v8-to-istanbul@9.1.0:
resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==}
engines: {node: '>=10.12.0'}
dependencies:
'@jridgewell/trace-mapping': 0.3.18
'@types/istanbul-lib-coverage': 2.0.4
convert-source-map: 1.9.0
dev: true

/verror@1.10.0:
resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==}
engines: {'0': node >=0.6.0}
@@ -6525,6 +6671,27 @@ packages:
- terser
dev: true

/vite-node@0.33.0(@types/node@18.14.1):
resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==}
engines: {node: '>=v14.18.0'}
hasBin: true
dependencies:
cac: 6.7.14
debug: 4.3.4
mlly: 1.4.0
pathe: 1.1.1
picocolors: 1.0.0
vite: 4.3.9(@types/node@18.14.1)
transitivePeerDependencies:
- '@types/node'
- less
- sass
- stylus
- sugarss
- supports-color
- terser
dev: true

/vite@4.3.9(@types/node@18.14.1):
resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -6614,6 +6781,71 @@ packages:
- terser
dev: true

/vitest@0.33.0(jsdom@21.1.0):
resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==}
engines: {node: '>=v14.18.0'}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@vitest/browser': '*'
'@vitest/ui': '*'
happy-dom: '*'
jsdom: '*'
playwright: '*'
safaridriver: '*'
webdriverio: '*'
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
'@vitest/browser':
optional: true
'@vitest/ui':
optional: true
happy-dom:
optional: true
jsdom:
optional: true
playwright:
optional: true
safaridriver:
optional: true
webdriverio:
optional: true
dependencies:
'@types/chai': 4.3.5
'@types/chai-subset': 1.3.3
'@types/node': 18.14.1
'@vitest/expect': 0.33.0
'@vitest/runner': 0.33.0
'@vitest/snapshot': 0.33.0
'@vitest/spy': 0.33.0
'@vitest/utils': 0.33.0
acorn: 8.9.0
acorn-walk: 8.2.0
cac: 6.7.14
chai: 4.3.7
debug: 4.3.4
jsdom: 21.1.0
local-pkg: 0.4.3
magic-string: 0.30.1
pathe: 1.1.1
picocolors: 1.0.0
std-env: 3.3.3
strip-literal: 1.0.1
tinybench: 2.5.0
tinypool: 0.6.0
vite: 4.3.9(@types/node@18.14.1)
vite-node: 0.33.0(@types/node@18.14.1)
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
- sass
- stylus
- sugarss
- supports-color
- terser
dev: true

/vue-eslint-parser@9.3.1(eslint@8.43.0):
resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==}
engines: {node: ^14.17.0 || >=16.0.0}


Завантаження…
Відмінити
Зберегти