@@ -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": [ | |||
@@ -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", | |||
@@ -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', () => { | |||
@@ -4,5 +4,8 @@ export default ({ | |||
test: { | |||
global: true, | |||
environment: 'jsdom', | |||
coverage: { | |||
provider: 'v8', | |||
}, | |||
}, | |||
}); |
@@ -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" | |||
@@ -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", | |||
@@ -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} | |||
@@ -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(); | |||
}); | |||
}); |
@@ -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', | |||
}, | |||
{ | |||
@@ -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); | |||
}); | |||
}); |
@@ -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} | |||