diff --git a/.changeset/wise-cats-relax.md b/.changeset/wise-cats-relax.md new file mode 100644 index 000000000..29e3d8730 --- /dev/null +++ b/.changeset/wise-cats-relax.md @@ -0,0 +1,5 @@ +--- +'@drivenets/design-system': patch +--- + +Update dependencies diff --git a/packages/design-system/package.json b/packages/design-system/package.json index 799c01f92..d6c9a5757 100644 --- a/packages/design-system/package.json +++ b/packages/design-system/package.json @@ -103,7 +103,7 @@ "@types/serve-handler": "^6.1.4", "@typescript/native": "catalog:", "@vitejs/plugin-react": "^6.0.4", - "@vitest/browser-playwright": "^4.1.10", + "@vitest/browser-playwright": "^5.0.0", "@vitest/coverage-v8": "catalog:", "babel-plugin-react-compiler": "^1.0.0", "eslint": "catalog:", @@ -127,7 +127,7 @@ "typescript-plugin-css-modules": "^5.2.0", "vite": "8.1.5", "vitest": "catalog:", - "vitest-browser-react": "^2.1.0", + "vitest-browser-react": "^2.3.0", "zod": "^4.4.3" } } diff --git a/packages/design-system/src/components/ds-avatar-group/__tests__/ds-avatar-group.browser.test.tsx b/packages/design-system/src/components/ds-avatar-group/__tests__/ds-avatar-group.browser.test.tsx index 458e01c7c..cd27e49ae 100644 --- a/packages/design-system/src/components/ds-avatar-group/__tests__/ds-avatar-group.browser.test.tsx +++ b/packages/design-system/src/components/ds-avatar-group/__tests__/ds-avatar-group.browser.test.tsx @@ -26,8 +26,8 @@ describe('DsAvatarGroup', () => { await page.getByText('+3').hover(); const tooltip = page.getByRole('tooltip'); - await expect.element(tooltip).toHaveTextContent('Fiona Gallagher'); - await expect.element(tooltip).toHaveTextContent('George Miller'); - await expect.element(tooltip).toHaveTextContent('Hannah Abbott'); + await expect.element(tooltip).toMatchTextContent('Fiona Gallagher'); + await expect.element(tooltip).toMatchTextContent('George Miller'); + await expect.element(tooltip).toMatchTextContent('Hannah Abbott'); }); }); diff --git a/packages/design-system/src/components/ds-breadcrumb/__tests__/ds-breadcrumb.browser.test.tsx b/packages/design-system/src/components/ds-breadcrumb/__tests__/ds-breadcrumb.browser.test.tsx index 72ad625c7..d1b6f3364 100644 --- a/packages/design-system/src/components/ds-breadcrumb/__tests__/ds-breadcrumb.browser.test.tsx +++ b/packages/design-system/src/components/ds-breadcrumb/__tests__/ds-breadcrumb.browser.test.tsx @@ -140,16 +140,16 @@ describe('DsBreadcrumb', () => { it('marks the last link segment as current page', async () => { await renderWithRouter({ items: defaultItems }, '/inventory/catalog'); - const catalogLink = page.getByText('Catalog'); + const catalogLink = page.getByText('Catalog', { exact: false }); await expect.element(catalogLink).toHaveAttribute('aria-current', 'page'); }); it('truncates trail when navigating to a parent link', async () => { await renderWithRouter({ items: defaultItems }, '/inventory/catalog'); - await page.getByText('Inventory').click(); + await page.getByText('Inventory', { exact: false }).click(); - const inventoryLink = page.getByText('Inventory'); + const inventoryLink = page.getByText('Inventory', { exact: false }); await expect.element(inventoryLink).toHaveAttribute('aria-current', 'page'); await expect.element(page.getByText('Catalog')).not.toBeInTheDocument(); }); @@ -194,7 +194,7 @@ describe('DsBreadcrumb', () => { const onSelect = vi.fn(); await renderWithRouter({ items: defaultItems, onSelect }, '/inventory/catalog'); - await page.getByText('Inventory').click(); + await page.getByText('Inventory', { exact: false }).click(); expect(onSelect).toHaveBeenCalledWith('/inventory'); }); }); diff --git a/packages/design-system/src/components/ds-comments-drawer/__tests__/ds-comments-drawer.browser.test.tsx b/packages/design-system/src/components/ds-comments-drawer/__tests__/ds-comments-drawer.browser.test.tsx index 1581f469a..75d02351e 100644 --- a/packages/design-system/src/components/ds-comments-drawer/__tests__/ds-comments-drawer.browser.test.tsx +++ b/packages/design-system/src/components/ds-comments-drawer/__tests__/ds-comments-drawer.browser.test.tsx @@ -247,7 +247,7 @@ describe('DsCommentsDrawer', () => { const toggleButton = page.getByRole('button', { name: /show resolved/i }); await expect.element(toggleButton).toBeInTheDocument(); - await expect.element(toggleButton).toHaveTextContent(/\(2\)/); + await expect.element(toggleButton).toMatchTextContent(/\(2\)/); await toggleButton.click(); diff --git a/packages/design-system/src/components/ds-dropdown-menu/__tests__/ds-dropdown-menu.browser.test.tsx b/packages/design-system/src/components/ds-dropdown-menu/__tests__/ds-dropdown-menu.browser.test.tsx index 8089dc9ba..47b9100b0 100644 --- a/packages/design-system/src/components/ds-dropdown-menu/__tests__/ds-dropdown-menu.browser.test.tsx +++ b/packages/design-system/src/components/ds-dropdown-menu/__tests__/ds-dropdown-menu.browser.test.tsx @@ -195,7 +195,7 @@ describe('DsDropdownMenu', () => { await page.getByRole('button', { name: /Multi Select/i }).click(); - const groupLabel = page.getByRole('button', { name: 'Group Name' }); + const groupLabel = page.getByRole('button', { name: 'Group Name', exact: false }); // Collapse. await groupLabel.click(); @@ -257,8 +257,8 @@ describe('DsDropdownMenu', () => { await page.getByRole('button', { name: /Controlled Group/i }).click(); - await expect.element(page.getByRole('button', { name: 'Settings' })).toBeVisible(); - await expect.element(page.getByRole('menuitem', { name: 'Profile' })).toBeVisible(); + await expect.element(page.getByRole('button', { name: 'Settings', exact: false })).toBeVisible(); + await expect.element(page.getByRole('menuitem', { name: 'Profile', exact: false })).toBeVisible(); }); it('should call onCollapsedChange when toggling group', async () => { @@ -268,7 +268,7 @@ describe('DsDropdownMenu', () => { await page.getByRole('button', { name: /Controlled Group/i }).click(); - const groupLabel = page.getByRole('button', { name: 'Settings' }); + const groupLabel = page.getByRole('button', { name: 'Settings', exact: false }); // Collapse. await groupLabel.click(); @@ -280,7 +280,7 @@ describe('DsDropdownMenu', () => { await groupLabel.click(); expect(onCollapsedChange).toHaveBeenCalledWith(false); expect(onCollapsedChange).toHaveBeenCalledTimes(2); - await expect.element(page.getByRole('menuitem', { name: 'Profile' })).toBeVisible(); + await expect.element(page.getByRole('menuitem', { name: 'Profile', exact: false })).toBeVisible(); }); }); }); diff --git a/packages/design-system/src/components/ds-file-upload/__tests__/ds-file-upload.browser.test.tsx b/packages/design-system/src/components/ds-file-upload/__tests__/ds-file-upload.browser.test.tsx index d636b05a6..05cc803ae 100644 --- a/packages/design-system/src/components/ds-file-upload/__tests__/ds-file-upload.browser.test.tsx +++ b/packages/design-system/src/components/ds-file-upload/__tests__/ds-file-upload.browser.test.tsx @@ -41,7 +41,7 @@ describe('DsFileUpload', () => { await uploadTestFile(); await expect.element(page.getByText('test-document.pdf')).toBeInTheDocument(); - await expect.element(page.getByText('Upload complete')).toBeInTheDocument(); + await expect.element(page.getByText('Upload complete', { exact: false })).toBeInTheDocument(); expect(onFileUploadComplete).toHaveBeenCalled(); }); @@ -52,7 +52,7 @@ describe('DsFileUpload', () => { await uploadTestFile(); - await expect.element(page.getByText('Upload complete')).toBeInTheDocument(); + await expect.element(page.getByText('Upload complete', { exact: false })).toBeInTheDocument(); await page.getByRole('button', { name: /delete/i }).click(); @@ -81,7 +81,7 @@ describe('DsFileUpload', () => { await page.getByRole('button', { name: /cancel/i }).click(); - await expect.element(page.getByText('Upload cancelled')).toBeInTheDocument(); + await expect.element(page.getByText('Upload cancelled', { exact: false })).toBeInTheDocument(); expect(onFileUploadCanceled).toHaveBeenCalled(); }); @@ -97,7 +97,7 @@ describe('DsFileUpload', () => { await uploadTestFile(); - await expect.element(page.getByText('Upload interrupted')).toBeInTheDocument(); + await expect.element(page.getByText('Upload interrupted', { exact: false })).toBeInTheDocument(); await expect.element(page.getByRole('button', { name: /retry/i })).toBeInTheDocument(); }); @@ -114,11 +114,11 @@ describe('DsFileUpload', () => { await uploadTestFile(); - await expect.element(page.getByText('Upload interrupted')).toBeInTheDocument(); + await expect.element(page.getByText('Upload interrupted', { exact: false })).toBeInTheDocument(); await page.getByRole('button', { name: /retry/i }).click(); - await expect.element(page.getByText('Upload complete')).toBeInTheDocument(); + await expect.element(page.getByText('Upload complete', { exact: false })).toBeInTheDocument(); expect(onFileUploadComplete).toHaveBeenCalled(); }); @@ -131,7 +131,7 @@ describe('DsFileUpload', () => { await uploadTestFile(); await expect.element(page.getByText('test-document.pdf')).toBeInTheDocument(); - await expect.element(page.getByText('Server error')).toBeInTheDocument(); + await expect.element(page.getByText('Server error', { exact: false })).toBeInTheDocument(); expect(onFileUploadError).toHaveBeenCalled(); }); }); @@ -142,11 +142,11 @@ describe('DsFileUpload', () => { await uploadTestFile('first'); - await expect.element(page.getByText('Upload complete')).toBeInTheDocument(); + await expect.element(page.getByText('Upload complete', { exact: false })).toBeInTheDocument(); await uploadTestFile('second'); - await expect.element(page.getByText('Too many files selected')).toBeInTheDocument(); + await expect.element(page.getByText('Too many files selected', { exact: false })).toBeInTheDocument(); }); it('should reject duplicate files with FILE_EXISTS error', async () => { @@ -154,11 +154,11 @@ describe('DsFileUpload', () => { await uploadTestFile(); - await expect.element(page.getByText('Upload complete')).toBeInTheDocument(); + await expect.element(page.getByText('Upload complete', { exact: false })).toBeInTheDocument(); await uploadTestFile(); - await expect.element(page.getByText('File already exists')).toBeInTheDocument(); + await expect.element(page.getByText('File already exists', { exact: false })).toBeInTheDocument(); }); }); }); diff --git a/packages/design-system/src/components/ds-key-value-pair/__tests__/ds-key-value-pair.browser.test.tsx b/packages/design-system/src/components/ds-key-value-pair/__tests__/ds-key-value-pair.browser.test.tsx index fdcdae405..c04ceb046 100644 --- a/packages/design-system/src/components/ds-key-value-pair/__tests__/ds-key-value-pair.browser.test.tsx +++ b/packages/design-system/src/components/ds-key-value-pair/__tests__/ds-key-value-pair.browser.test.tsx @@ -21,7 +21,10 @@ const MANUFACTURER_OPTIONS: DsSelectOption[] = [ // vitest browser iframe. Focus the editable container directly to trigger the `:focus-within` // reveal deterministically. const focusEditableContainerOf = (text: string) => { - const container = page.getByText(text).element().closest('[data-editable="true"]'); + const container = page + .getByText(text, { exact: false }) + .element() + .closest('[data-editable="true"]'); if (!container) { throw new Error(`No editable value-container ancestor for text "${text}"`); @@ -88,7 +91,7 @@ describe('DsKeyValuePair', () => { />, ); - await expect.element(page.getByText('Serial Number')).toBeInTheDocument(); + await expect.element(page.getByText('Serial Number', { exact: false })).toBeInTheDocument(); await expect.element(page.getByText('99887766')).toBeVisible(); }); @@ -199,7 +202,7 @@ describe('DsKeyValuePair', () => { />, ); - await expect.element(page.getByText('Editable value')).toBeVisible(); + await expect.element(page.getByText('Editable value', { exact: false })).toBeVisible(); await expect.element(page.getByText('info').first()).toBeVisible(); focusEditableContainerOf('Editable value'); @@ -363,7 +366,7 @@ describe('DsKeyValuePair', () => { await renderWithParkedMouse(); await expect.element(page.getByText('Read only value')).toBeVisible(); - await expect.element(page.getByText('Active')).toBeVisible(); + await expect.element(page.getByText('Active', { exact: false })).toBeVisible(); await expect.element(page.getByText('Tag-name').first()).toBeVisible(); await expect.element(page.getByText('Cisco Systems').first()).toBeVisible(); }); diff --git a/packages/design-system/src/components/ds-main-menu/__tests__/ds-main-menu.browser.test.tsx b/packages/design-system/src/components/ds-main-menu/__tests__/ds-main-menu.browser.test.tsx index 11cf2e390..21f59ac21 100644 --- a/packages/design-system/src/components/ds-main-menu/__tests__/ds-main-menu.browser.test.tsx +++ b/packages/design-system/src/components/ds-main-menu/__tests__/ds-main-menu.browser.test.tsx @@ -101,7 +101,7 @@ describe('DsMainMenu — trigger and open/close', () => { await openMenu(); await expect.element(page.getByRole('navigation', { name: 'Main menu' })).toBeVisible(); - await userEvent.click(page.getByRole('button', { name: 'My dashboard' })); + await userEvent.click(page.getByRole('button', { name: 'My dashboard', exact: false })); await assertClosed(); }); @@ -110,7 +110,7 @@ describe('DsMainMenu — trigger and open/close', () => { await page.render(); await openMenu(); - await userEvent.click(page.getByRole('button', { name: 'Help & Support' })); + await userEvent.click(page.getByRole('button', { name: 'Help & Support', exact: false })); await expect.element(triggerLocator()).toHaveAttribute('aria-expanded', 'false'); }); @@ -119,7 +119,7 @@ describe('DsMainMenu — trigger and open/close', () => { await page.render(); await openMenu(); - (page.getByRole('button', { name: 'Disabled app' }).element() as HTMLButtonElement).click(); + (page.getByRole('button', { name: 'Disabled app', exact: false }).element() as HTMLButtonElement).click(); await expect.element(page.getByRole('navigation', { name: 'Main menu' })).toBeVisible(); }); @@ -128,7 +128,9 @@ describe('DsMainMenu — trigger and open/close', () => { await page.render(); await openMenu(); - (page.getByRole('button', { name: 'Coming soon app' }).element() as HTMLButtonElement).click(); + ( + page.getByRole('button', { name: 'Coming soon app', exact: false }).element() as HTMLButtonElement + ).click(); await expect.element(page.getByRole('navigation', { name: 'Main menu' })).toBeVisible(); }); @@ -172,7 +174,7 @@ describe('DsMainMenu — controlled open', () => { await expect.element(page.getByRole('navigation', { name: 'Main menu' })).toBeVisible(); - await userEvent.click(page.getByRole('button', { name: 'My dashboard' })); + await userEvent.click(page.getByRole('button', { name: 'My dashboard', exact: false })); expect(onOpenChange).toHaveBeenCalledWith(false); }); @@ -186,10 +188,10 @@ describe('DsMainMenu — tile and utility link behavior', () => { const nav = page.getByRole('navigation', { name: 'Main menu' }); await expect.element(nav).toBeVisible(); - await expect.element(page.getByRole('link', { name: 'Inventory' })).toBeVisible(); - await expect.element(page.getByRole('button', { name: 'My dashboard' })).toBeVisible(); - await expect.element(page.getByRole('button', { name: 'Help & Support' })).toBeVisible(); - await expect.element(page.getByRole('link', { name: 'Knowledge Center' })).toBeVisible(); + await expect.element(page.getByRole('link', { name: 'Inventory', exact: false })).toBeVisible(); + await expect.element(page.getByRole('button', { name: 'My dashboard', exact: false })).toBeVisible(); + await expect.element(page.getByRole('button', { name: 'Help & Support', exact: false })).toBeVisible(); + await expect.element(page.getByRole('link', { name: 'Knowledge Center', exact: false })).toBeVisible(); }); it('marks the selected tile with aria-current="page"', async () => { @@ -199,7 +201,7 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - const selectedTile = page.getByRole('button', { name: 'My dashboard' }); + const selectedTile = page.getByRole('button', { name: 'My dashboard', exact: false }); expect(selectedTile.element().getAttribute('aria-current')).toBe('page'); }); @@ -211,11 +213,11 @@ describe('DsMainMenu — tile and utility link behavior', () => { ); await openMenu(); - await userEvent.click(page.getByRole('button', { name: 'My dashboard' })); + await userEvent.click(page.getByRole('button', { name: 'My dashboard', exact: false })); // Reopen after auto-close await openMenu(); - await userEvent.click(page.getByRole('button', { name: 'Help & Support' })); + await userEvent.click(page.getByRole('button', { name: 'Help & Support', exact: false })); expect(onItemSelect).toHaveBeenCalledTimes(2); expect(onItemSelect).toHaveBeenNthCalledWith(1, 'dashboard'); @@ -238,7 +240,7 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - const inventoryLink = page.getByRole('link', { name: 'Inventory' }); + const inventoryLink = page.getByRole('link', { name: 'Inventory', exact: false }); inventoryLink.element().addEventListener('click', (event) => event.preventDefault()); await userEvent.click(inventoryLink); @@ -254,8 +256,10 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - (page.getByRole('button', { name: 'Disabled app' }).element() as HTMLButtonElement).click(); - (page.getByRole('button', { name: 'Coming soon app' }).element() as HTMLButtonElement).click(); + (page.getByRole('button', { name: 'Disabled app', exact: false }).element() as HTMLButtonElement).click(); + ( + page.getByRole('button', { name: 'Coming soon app', exact: false }).element() as HTMLButtonElement + ).click(); expect(onItemSelect).not.toHaveBeenCalled(); }); @@ -265,7 +269,7 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - const disabledTile = page.getByRole('button', { name: 'Disabled app' }); + const disabledTile = page.getByRole('button', { name: 'Disabled app', exact: false }); expect(disabledTile.element().tabIndex).toBe(-1); expect(disabledTile.element().getAttribute('aria-disabled')).toBe('true'); }); @@ -275,11 +279,11 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - const comingSoonTile = page.getByRole('button', { name: 'Coming soon app' }); + const comingSoonTile = page.getByRole('button', { name: 'Coming soon app', exact: false }); const badge = comingSoonTile.element().querySelector('[class*="badge"]') as HTMLElement; await comingSoonTile.hover(); - await page.elementLocator(badge).hover(); + await page.elementLocator(badge).hover({ force: true }); await expect .element(page.getByRole('tooltip', { name: COMING_SOON_TOOLTIP }), { timeout: 3000 }) @@ -297,7 +301,7 @@ describe('DsMainMenu — tile and utility link behavior', () => { await openMenu(); - const tile = page.getByRole('button', { name: 'My dashboard' }); + const tile = page.getByRole('button', { name: 'My dashboard', exact: false }); await expect.element(tile).toBeVisible(); expect(tile.element().querySelector('svg')).not.toBeNull(); }); @@ -326,7 +330,7 @@ describe('DsMainMenu — expanded variant', () => { await openMenu(); - await expect.element(page.getByRole('button', { name: 'My dashboard' })).toBeVisible(); + await expect.element(page.getByRole('button', { name: 'My dashboard', exact: false })).toBeVisible(); await expect.element(page.getByText('Hidden in compact.')).not.toBeInTheDocument(); }); diff --git a/packages/design-system/src/components/ds-panel/__tests__/ds-panel.browser.test.tsx b/packages/design-system/src/components/ds-panel/__tests__/ds-panel.browser.test.tsx index b5e35da19..68d7e39a6 100644 --- a/packages/design-system/src/components/ds-panel/__tests__/ds-panel.browser.test.tsx +++ b/packages/design-system/src/components/ds-panel/__tests__/ds-panel.browser.test.tsx @@ -113,7 +113,10 @@ describe('DsPanel', () => { it('should apply default responsive width when no width prop is provided', async () => { await page.render(Content); - const panel = page.getByText('Content').element().closest('[data-state]') as HTMLElement; + const panel = page + .getByText('Content', { exact: false }) + .element() + .closest('[data-state]') as HTMLElement; const { width } = panel.getBoundingClientRect(); const expectedWidth = Math.min(480, Math.max(240, window.innerWidth * 0.2)); @@ -127,7 +130,10 @@ describe('DsPanel', () => { , ); - const panel = page.getByText('Content').element().closest('[data-state]') as HTMLElement; + const panel = page + .getByText('Content', { exact: false }) + .element() + .closest('[data-state]') as HTMLElement; const { width } = panel.getBoundingClientRect(); expect(Math.round(width)).toBe(350); diff --git a/packages/design-system/src/components/ds-select/__tests__/ds-select.browser.test.tsx b/packages/design-system/src/components/ds-select/__tests__/ds-select.browser.test.tsx index e4321effe..5d37c3e92 100644 --- a/packages/design-system/src/components/ds-select/__tests__/ds-select.browser.test.tsx +++ b/packages/design-system/src/components/ds-select/__tests__/ds-select.browser.test.tsx @@ -122,13 +122,13 @@ describe('DsSelect', () => { await expect.element(option1).not.toHaveAttribute('data-state', 'checked'); await option1.click(); - await expect.element(trigger).toHaveTextContent(firstOption.label); + await expect.element(trigger).toMatchTextContent(firstOption.label); await trigger.click(); const option2 = page.getByRole('option', { name: secondOption.label }); await option2.click(); - await expect.element(trigger).toHaveTextContent(secondOption.label); + await expect.element(trigger).toMatchTextContent(secondOption.label); await trigger.click(); @@ -143,7 +143,7 @@ describe('DsSelect', () => { const closeButton = page.getByRole('button', { name: 'Clear value' }); await closeButton.click(); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); }); it('should select options when items have icons (WithIcons story)', async () => { @@ -168,13 +168,13 @@ describe('DsSelect', () => { await expect.element(option1).not.toHaveAttribute('data-state', 'checked'); await option1.click(); - await expect.element(trigger).toHaveTextContent(firstOption.label); + await expect.element(trigger).toMatchTextContent(firstOption.label); await trigger.click(); const option2 = page.getByRole('option', { name: secondOption.label }); await option2.click(); - await expect.element(trigger).toHaveTextContent(secondOption.label); + await expect.element(trigger).toMatchTextContent(secondOption.label); await trigger.click(); @@ -188,7 +188,7 @@ describe('DsSelect', () => { await page.getByRole('button', { name: 'Clear value' }).click(); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); }); it('should select all, expand +N chip, delete chip, and clear all (MultiSelect story)', async () => { @@ -211,7 +211,7 @@ describe('DsSelect', () => { await trigger.click(); for (const option of mockOptions) { - await expect.element(trigger).toHaveTextContent(option.label); + await expect.element(trigger).toMatchTextContent(option.label); } await trigger.click(); @@ -227,7 +227,7 @@ describe('DsSelect', () => { await trigger.click(); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); }); it('should filter via search, select multiple, and clear via Backspace (MultiSelectWithSearch story)', async () => { @@ -261,17 +261,17 @@ describe('DsSelect', () => { await page.getByRole('option', { name: 'Banana' }).click(); await page.getByRole('option', { name: 'Cherry' }).click(); - await expect.element(trigger).toHaveTextContent('Apple'); - await expect.element(trigger).toHaveTextContent('Banana'); - await expect.element(trigger).toHaveTextContent('Cherry'); + await expect.element(trigger).toMatchTextContent('Apple'); + await expect.element(trigger).toMatchTextContent('Banana'); + await expect.element(trigger).toMatchTextContent('Cherry'); await userEvent.keyboard('{Escape}'); await userEvent.keyboard('{Backspace}'); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); - await expect.element(trigger).not.toHaveTextContent('Apple'); - await expect.element(trigger).not.toHaveTextContent('Banana'); - await expect.element(trigger).not.toHaveTextContent('Cherry'); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); + await expect.element(trigger).not.toMatchTextContent('Apple'); + await expect.element(trigger).not.toMatchTextContent('Banana'); + await expect.element(trigger).not.toMatchTextContent('Cherry'); }); it('should select options rendered with custom markup (CustomRenderOption story)', async () => { @@ -291,12 +291,12 @@ describe('DsSelect', () => { await expect.element(usOption).toBeInTheDocument(); await usOption.click(); - await expect.element(trigger).toHaveTextContent('United States'); + await expect.element(trigger).toMatchTextContent('United States'); await trigger.click(); await page.getByRole('option', { name: /France/ }).click(); - await expect.element(trigger).toHaveTextContent('France'); + await expect.element(trigger).toMatchTextContent('France'); }); it('should render selected items as chips with custom option markup (CustomRenderOptionMultiSelect story)', async () => { @@ -351,7 +351,7 @@ describe('DsSelect', () => { await searchInput.fill('Japan'); await page.getByRole('option', { name: /Japan/ }).click(); - await expect.element(trigger).toHaveTextContent('Japan'); + await expect.element(trigger).toMatchTextContent('Japan'); }); it('should render selected value with custom markup in trigger (CustomRenderValue story)', async () => { @@ -387,21 +387,21 @@ describe('DsSelect', () => { const trigger = page.getByRole('combobox'); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); await trigger.click(); await page.getByRole('option', { name: 'v0.8' }).click(); - await expect.element(trigger).toHaveTextContent('v0.8'); - await expect.element(trigger).toHaveTextContent('Live'); + await expect.element(trigger).toMatchTextContent('v0.8'); + await expect.element(trigger).toMatchTextContent('Live'); await trigger.click(); await page.getByRole('option', { name: 'v2.3' }).click(); - await expect.element(trigger).toHaveTextContent('v2.3'); - await expect.element(trigger).toHaveTextContent('Pending'); + await expect.element(trigger).toMatchTextContent('v2.3'); + await expect.element(trigger).toMatchTextContent('Pending'); }); it('should render multi selection with custom value markup (CustomRenderValueMultiSelect story)', async () => { @@ -446,8 +446,8 @@ describe('DsSelect', () => { await page.getByRole('option', { name: /United States/ }).click(); await page.getByRole('option', { name: /Germany/ }).click(); - await expect.element(trigger).toHaveTextContent('US'); - await expect.element(trigger).toHaveTextContent('DE'); + await expect.element(trigger).toMatchTextContent('US'); + await expect.element(trigger).toMatchTextContent('DE'); }); it('should render both options and value with custom markup (CustomRenderValueAndOption story)', async () => { @@ -499,25 +499,25 @@ describe('DsSelect', () => { const trigger = page.getByRole('combobox'); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); await trigger.click(); const v08 = page.getByRole('option', { name: /v0.8/ }); - await expect.element(v08).toHaveTextContent('Live'); + await expect.element(v08).toMatchTextContent('Live'); await v08.click(); - await expect.element(trigger).toHaveTextContent('v0.8'); - await expect.element(trigger).toHaveTextContent('Live'); + await expect.element(trigger).toMatchTextContent('v0.8'); + await expect.element(trigger).toMatchTextContent('Live'); await trigger.click(); const v14 = page.getByRole('option', { name: /v1.4/ }); - await expect.element(v14).toHaveTextContent('Running'); + await expect.element(v14).toMatchTextContent('Running'); await v14.click(); - await expect.element(trigger).toHaveTextContent('v1.4'); - await expect.element(trigger).toHaveTextContent('Running'); + await expect.element(trigger).toMatchTextContent('v1.4'); + await expect.element(trigger).toMatchTextContent('Running'); }); it('should render multi selection with both custom render fns (CustomRenderValueAndOptionMultiSelect story)', async () => { @@ -575,18 +575,18 @@ describe('DsSelect', () => { await trigger.click(); const v08 = page.getByRole('option', { name: /v0.8/ }); - await expect.element(v08).toHaveTextContent('Live'); + await expect.element(v08).toMatchTextContent('Live'); await v08.click(); - await expect.element(trigger).toHaveTextContent('v0.8'); - await expect.element(trigger).toHaveTextContent('Live'); + await expect.element(trigger).toMatchTextContent('v0.8'); + await expect.element(trigger).toMatchTextContent('Live'); const v36 = page.getByRole('option', { name: /v3.6/ }); - await expect.element(v36).toHaveTextContent('Draft'); + await expect.element(v36).toMatchTextContent('Draft'); await v36.click(); - await expect.element(trigger).toHaveTextContent('v0.8'); - await expect.element(trigger).toHaveTextContent('+1'); + await expect.element(trigger).toMatchTextContent('v0.8'); + await expect.element(trigger).toMatchTextContent('+1'); }); it('should clear via Backspace, Delete, and allow Space in search (KeyboardInteractions story)', async () => { @@ -605,22 +605,22 @@ describe('DsSelect', () => { await trigger.click(); await page.getByRole('option', { name: 'Apple' }).click(); - await expect.element(trigger).toHaveTextContent('Apple'); + await expect.element(trigger).toMatchTextContent('Apple'); await userEvent.keyboard('{Escape}'); await userEvent.keyboard('{Backspace}'); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); await trigger.click(); await page.getByRole('option', { name: 'Banana' }).click(); - await expect.element(trigger).toHaveTextContent('Banana'); + await expect.element(trigger).toMatchTextContent('Banana'); await userEvent.keyboard('{Escape}'); await userEvent.keyboard('{Delete}'); - await expect.element(trigger).toHaveTextContent(PLACEHOLDER); + await expect.element(trigger).toMatchTextContent(PLACEHOLDER); await trigger.click(); diff --git a/packages/design-system/src/components/ds-split-button/__tests__/ds-split-button.browser.test.tsx b/packages/design-system/src/components/ds-split-button/__tests__/ds-split-button.browser.test.tsx index e8e638d4b..84537ea74 100644 --- a/packages/design-system/src/components/ds-split-button/__tests__/ds-split-button.browser.test.tsx +++ b/packages/design-system/src/components/ds-split-button/__tests__/ds-split-button.browser.test.tsx @@ -75,7 +75,7 @@ describe('DsSplitButton', () => { expect(onValueChange).toHaveBeenCalledWith('60'); const combobox = page.getByRole('combobox'); - await expect.element(combobox).toHaveTextContent(/1m/); + await expect.element(combobox).toMatchTextContent(/1m/); }); it('disables primary button and select when disabled', async () => { diff --git a/packages/design-system/src/components/ds-table/__tests__/ds-table-editable.browser.test.tsx b/packages/design-system/src/components/ds-table/__tests__/ds-table-editable.browser.test.tsx index a49855433..237c159ca 100644 --- a/packages/design-system/src/components/ds-table/__tests__/ds-table-editable.browser.test.tsx +++ b/packages/design-system/src/components/ds-table/__tests__/ds-table-editable.browser.test.tsx @@ -380,6 +380,9 @@ describe('DsTable Editable Cells', () => { const lockIcon = page.elementLocator(ageCell).getByRole('img', { name: 'Editing disabled' }); await expect.element(lockIcon).toBeVisible(); + // The icon only becomes interactive once the cell itself is hovered (reveal-on-hover styling), + // so hover the cell first to put it in the same state a real pointer path would produce. + await page.elementLocator(ageCell).hover(); await lockIcon.hover(); await expect.element(page.getByRole('tooltip')).not.toBeInTheDocument(); }); diff --git a/packages/design-system/src/components/ds-table/__tests__/ds-table-header-ellipsis.browser.test.tsx b/packages/design-system/src/components/ds-table/__tests__/ds-table-header-ellipsis.browser.test.tsx index ffc93550d..b9f6ec03c 100644 --- a/packages/design-system/src/components/ds-table/__tests__/ds-table-header-ellipsis.browser.test.tsx +++ b/packages/design-system/src/components/ds-table/__tests__/ds-table-header-ellipsis.browser.test.tsx @@ -164,7 +164,7 @@ describe('DsTable header label ellipsis', () => { expect(label.textContent).toContain(LONG_LEAF_HEADER); expect(label.textContent).toContain(hiddenExtra); expectEllipsis(label); - await page.getByText(LONG_LEAF_HEADER).hover(); + await page.getByText(LONG_LEAF_HEADER, { exact: false }).hover(); await expect.element(page.getByRole('tooltip')).not.toBeInTheDocument(); await expect.element(page.getByRole('tooltip', { name: hiddenExtra })).not.toBeInTheDocument(); }); diff --git a/packages/design-system/src/components/ds-table/__tests__/ds-table-row-actions.browser.test.tsx b/packages/design-system/src/components/ds-table/__tests__/ds-table-row-actions.browser.test.tsx index 6acdda7d8..42385b6be 100644 --- a/packages/design-system/src/components/ds-table/__tests__/ds-table-row-actions.browser.test.tsx +++ b/packages/design-system/src/components/ds-table/__tests__/ds-table-row-actions.browser.test.tsx @@ -17,8 +17,8 @@ describe('DsTable - Row Actions', () => { expect(dataRows).toHaveLength(5); await expect.element(page.getByText('Order')).toBeVisible(); - await expect.element(page.getByRole('row').nth(1)).toHaveTextContent('Tanner'); - await expect.element(page.getByRole('row').nth(2)).toHaveTextContent('Kevin'); + await expect.element(page.getByRole('row').nth(1)).toMatchTextContent('Tanner'); + await expect.element(page.getByRole('row').nth(2)).toMatchTextContent('Kevin'); const handle = page.getByRole('row').nth(1).getByRole('button').element() as HTMLElement; const kevinRow = page.getByRole('row').nth(2).element() as HTMLTableRowElement; @@ -56,8 +56,8 @@ describe('DsTable - Row Actions', () => { const newOrder = onOrderChange.mock.calls[0]?.[0] as Person[] | undefined; expect(newOrder?.map((p) => p.firstName)).toEqual(['Kevin', 'Tanner', 'John', 'Jane', 'Peter']); - await expect.element(page.getByRole('row').nth(1)).toHaveTextContent('Kevin'); - await expect.element(page.getByRole('row').nth(2)).toHaveTextContent('Tanner'); + await expect.element(page.getByRole('row').nth(1)).toMatchTextContent('Kevin'); + await expect.element(page.getByRole('row').nth(2)).toMatchTextContent('Tanner'); }); it('should show row action buttons on hover and respect disabled state', async () => { diff --git a/packages/design-system/src/components/ds-table/__tests__/ds-table-search.browser.test.tsx b/packages/design-system/src/components/ds-table/__tests__/ds-table-search.browser.test.tsx index 67cbe3288..968d55880 100644 --- a/packages/design-system/src/components/ds-table/__tests__/ds-table-search.browser.test.tsx +++ b/packages/design-system/src/components/ds-table/__tests__/ds-table-search.browser.test.tsx @@ -46,7 +46,7 @@ describe('DsTable - Search & Filtering', () => { const filteredDataRows = page.getByRole('row').all().slice(1); expect(filteredDataRows).toHaveLength(1); - await expect.element(page.getByRole('row').nth(1)).toHaveTextContent('Tanner'); + await expect.element(page.getByRole('row').nth(1)).toMatchTextContent('Tanner'); await page.getByPlaceholder('Search all columns...').clear(); diff --git a/packages/design-system/src/components/ds-table/__tests__/ds-table.browser.test.tsx b/packages/design-system/src/components/ds-table/__tests__/ds-table.browser.test.tsx index e2c0322f7..92e81ccee 100644 --- a/packages/design-system/src/components/ds-table/__tests__/ds-table.browser.test.tsx +++ b/packages/design-system/src/components/ds-table/__tests__/ds-table.browser.test.tsx @@ -32,11 +32,11 @@ describe('DsTable', () => { await firstNameHeader.click(); - await expect.element(page.getByRole('row').nth(1)).toHaveTextContent('Daniel'); + await expect.element(page.getByRole('row').nth(1)).toMatchTextContent('Daniel'); await firstNameHeader.click(); - await expect.element(page.getByRole('row').nth(1)).toHaveTextContent('Tanner'); + await expect.element(page.getByRole('row').nth(1)).toMatchTextContent('Tanner'); }); it('should show empty state when no data is provided', async () => { diff --git a/packages/design-system/src/components/ds-time-picker/__tests__/ds-time-picker.browser.test.tsx b/packages/design-system/src/components/ds-time-picker/__tests__/ds-time-picker.browser.test.tsx index 1ec1ec3a3..63cf90647 100644 --- a/packages/design-system/src/components/ds-time-picker/__tests__/ds-time-picker.browser.test.tsx +++ b/packages/design-system/src/components/ds-time-picker/__tests__/ds-time-picker.browser.test.tsx @@ -133,7 +133,7 @@ describe('DsTimePicker', () => { // Click hour 5 PM — minute 50 exceeds max 5:40 PM → clamp to 5:40 PM await hour5PM.click(); - await expect.element(valueDisplay).toHaveTextContent('17:40'); + await expect.element(valueDisplay).toMatchTextContent('17:40'); // At 5:40 PM, minutes > 40 are disabled await expect @@ -147,7 +147,7 @@ describe('DsTimePicker', () => { // Switch to AM — 5:40 PM → clamp to 9:30 AM (min) await periodListbox.getByRole('option', { name: 'AM' }).click(); - await expect.element(valueDisplay).toHaveTextContent('09:30'); + await expect.element(valueDisplay).toMatchTextContent('09:30'); // At 9:30 AM, hours before 9 are disabled await expect @@ -217,7 +217,7 @@ describe('DsTimePicker', () => { await userEvent.keyboard('{Enter}'); // 1:02 AM = 01:02 in 24h format - await expect.element(page.getByText('Value:')).toHaveTextContent('01:02'); + await expect.element(page.getByText('Value:', { exact: false })).toMatchTextContent('01:02'); }); it('should reset input to last valid value on blur', async () => { diff --git a/packages/design-system/src/components/ds-toggle/__tests__/ds-toggle.browser.test.tsx b/packages/design-system/src/components/ds-toggle/__tests__/ds-toggle.browser.test.tsx index 5013dca34..dbb967933 100644 --- a/packages/design-system/src/components/ds-toggle/__tests__/ds-toggle.browser.test.tsx +++ b/packages/design-system/src/components/ds-toggle/__tests__/ds-toggle.browser.test.tsx @@ -12,7 +12,7 @@ describe('DsToggle', () => { await page.render(); - const toggle = page.getByRole('checkbox', { name: label }); + const toggle = page.getByRole('checkbox', { name: label, exact: false }); await expect.element(toggle).not.toBeChecked(); await expect.element(page.getByText(labelInfo)).toBeVisible(); @@ -31,7 +31,7 @@ describe('DsToggle', () => { await page.render(); - const toggle = page.getByRole('checkbox', { name: label }); + const toggle = page.getByRole('checkbox', { name: label, exact: false }); await expect.element(toggle).toBeChecked(); diff --git a/packages/design-system/src/components/ds-top-bar-navigation/__tests__/ds-top-bar-navigation.browser.test.tsx b/packages/design-system/src/components/ds-top-bar-navigation/__tests__/ds-top-bar-navigation.browser.test.tsx index 0e28d5202..61d0bbbbc 100644 --- a/packages/design-system/src/components/ds-top-bar-navigation/__tests__/ds-top-bar-navigation.browser.test.tsx +++ b/packages/design-system/src/components/ds-top-bar-navigation/__tests__/ds-top-bar-navigation.browser.test.tsx @@ -111,7 +111,7 @@ describe('DsTopBarNavigation', () => { await expect.element(trigger).toHaveAttribute('aria-expanded', 'true'); // A tile with no `href` renders as a button. - await userEvent.click(page.getByRole('button', { name: 'Inventory' })); + await userEvent.click(page.getByRole('button', { name: 'Inventory', exact: false })); expect(onItemSelect).toHaveBeenCalledWith('inventory'); expect(onAppsClick).not.toHaveBeenCalled(); diff --git a/packages/design-system/src/components/ds-user-card/__tests__/ds-user-card.browser.test.tsx b/packages/design-system/src/components/ds-user-card/__tests__/ds-user-card.browser.test.tsx index e1d75117a..df5371de0 100644 --- a/packages/design-system/src/components/ds-user-card/__tests__/ds-user-card.browser.test.tsx +++ b/packages/design-system/src/components/ds-user-card/__tests__/ds-user-card.browser.test.tsx @@ -46,6 +46,6 @@ describe('DsUserCard', () => { const root = document.querySelector('.custom-card'); expect(root).not.toBeNull(); - expect(root).toHaveTextContent('Jane Smith'); + expect(root).toMatchTextContent('Jane Smith'); }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 725078391..bd60b1c30 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ catalogs: specifier: npm:typescript@^7.0.2 version: 7.0.2 '@vitest/coverage-v8': - specifier: ^4.1.10 - version: 4.1.10 + specifier: ^5.0.0 + version: 5.0.0 publint: specifier: ^0.3.24 version: 0.3.24 @@ -25,8 +25,8 @@ catalogs: specifier: ^0.22.14 version: 0.22.14 vitest: - specifier: ^4.1.10 - version: 4.1.10 + specifier: ^5.0.0 + version: 5.0.0 overrides: '@typescript/native-preview': '-' @@ -108,7 +108,7 @@ importers: version: typescript@7.0.2 '@vitest/eslint-plugin': specifier: ^1.6.27 - version: 1.6.27(@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0))(vitest@4.1.10) + version: 1.6.27(@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0))(vitest@5.0.0) cspell: specifier: ^10.0.1 version: 10.0.1 @@ -260,10 +260,10 @@ importers: version: 10.4.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(esbuild@0.17.19)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) '@storybook/addon-mcp': specifier: ^0.6.0 - version: 0.6.0(@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10)(@vitest/runner@4.1.10)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@4.1.10))(@typescript/typescript6@6.0.2)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)) + version: 0.6.0(@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@5.0.0)(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@5.0.0))(@typescript/typescript6@6.0.2)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)) '@storybook/addon-vitest': specifier: ^10.4.1 - version: 10.4.1(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10)(@vitest/runner@4.1.10)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@4.1.10) + version: 10.4.1(@vitest/browser-playwright@5.0.0)(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@5.0.0) '@storybook/react-vite': specifier: ^10.4.1 version: 10.4.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.17.19)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) @@ -295,11 +295,11 @@ importers: specifier: ^6.0.4 version: 6.0.4(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.7)(rolldown@1.2.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)))(babel-plugin-react-compiler@1.0.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) '@vitest/browser-playwright': - specifier: ^4.1.10 - version: 4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) + specifier: ^5.0.0 + version: 5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + version: 5.0.0(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(vitest@5.0.0) babel-plugin-react-compiler: specifier: ^1.0.0 version: 1.0.0 @@ -365,10 +365,10 @@ importers: version: 8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + version: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) vitest-browser-react: - specifier: ^2.1.0 - version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10) + specifier: ^2.3.0 + version: 2.3.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@5.0.0) zod: specifier: ^4.4.3 version: 4.4.3 @@ -396,7 +396,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + version: 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) eslint: specifier: ^10.0.1 version: 10.2.0(jiti@2.7.0) @@ -408,7 +408,7 @@ importers: version: 0.22.14(@arethetypeswrong/core@0.18.5)(@tsdown/css@0.22.14)(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(publint@0.3.24) vitest: specifier: 'catalog:' - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + version: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) packages/eslint-plugin-internal: dependencies: @@ -430,7 +430,7 @@ importers: version: 8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + version: 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) eslint: specifier: ^10.0.1 version: 10.2.0(jiti@2.7.0) @@ -439,7 +439,7 @@ importers: version: 7.6.2(eslint@10.2.0(jiti@2.7.0)) vitest: specifier: 'catalog:' - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + version: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) packages/mcp: dependencies: @@ -473,7 +473,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + version: 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) eslint: specifier: ^10.0.1 version: 10.2.0(jiti@2.7.0) @@ -488,7 +488,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + version: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) packages/vite-plugin: dependencies: @@ -504,7 +504,7 @@ importers: version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + version: 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) eslint: specifier: ^10.0.1 version: 10.2.0(jiti@2.7.0) @@ -519,7 +519,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: 'catalog:' - version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + version: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) packages: @@ -584,8 +584,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.29.7': @@ -600,8 +600,8 @@ packages: resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.3': - resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} engines: {node: '>=6.0.0'} hasBin: true @@ -617,16 +617,16 @@ packages: resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@blazediff/core@1.9.1': - resolution: {integrity: sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==} + '@blazediff/core@1.10.0': + resolution: {integrity: sha512-AOQff0zgR7cGsZL+4E7hVkmujoPUpm0J9xzWGWZj5wCjd3gmxESXAPfKyuzs93VdpQNFhHlBhfOjrcZ+XTERtQ==} '@braidai/lang@1.1.2': resolution: {integrity: sha512-qBcknbBufNHlui137Hft8xauQMTZDKdophmLFv05r2eNmdIv/MlPuP4TdUknHG68UdWLgVZwgxVe735HzJNIwA==} @@ -1648,8 +1648,8 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -3579,22 +3579,22 @@ packages: babel-plugin-react-compiler: optional: true - '@vitest/browser-playwright@4.1.10': - resolution: {integrity: sha512-nMoXGEiRpT7m3W7NsbvrM2aKNwiNHZf+zEpUCvMteGjZFvfT96Q9fh7QyB98dvDWXiKvrLxA7bJ1mCOOv+JQPw==} + '@vitest/browser-playwright@5.0.0': + resolution: {integrity: sha512-N+gED9y4/8pypaHjz/x0ah3CjoBr+N0hWWT+Gq4VXtMzyB+rUIdHni0ulzpD1j4H77iWy5Jg8PRMlVn6kjxo6g==} peerDependencies: playwright: '*' - vitest: 4.1.10 + vitest: 5.0.0 - '@vitest/browser@4.1.10': - resolution: {integrity: sha512-UDwuWGwXj646CBx/bQHOaJSX7np0I8JL/UKQYa1e4QrVHH8VdWtx8eaOuf8sy0ShwDgR6NjJAsp5eF6vjF6qng==} + '@vitest/browser@5.0.0': + resolution: {integrity: sha512-JC9FG5xIRxPHXJPcdCaluIJcEoeM0IwGQ3xneuJk09LXKHRNs40BqWDWymQikbb20yOpYvzpKzmYgPRuSzKmvg==} peerDependencies: - vitest: 4.1.10 + vitest: 5.0.0 - '@vitest/coverage-v8@4.1.10': - resolution: {integrity: sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==} + '@vitest/coverage-v8@5.0.0': + resolution: {integrity: sha512-toMg6PZGCIa/lQNCDoASrfb1ly4hsUKXFtFYC9kD4t78o5Y6LyNJU7AENt8eHPr3quYdxaxK7hj2mnbFfUk9NA==} peerDependencies: - '@vitest/browser': 4.1.10 - vitest: 4.1.10 + '@vitest/browser': 5.0.0 + vitest: 5.0.0 peerDependenciesMeta: '@vitest/browser': optional: true @@ -3618,11 +3618,16 @@ packages: '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/expect@4.1.10': - resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} + '@vitest/istanbul-lib-coverage@1.0.1': + resolution: {integrity: sha512-k3DJZ8LhMBK9NS4SclF1ASD3OgXEWDorbIcPTRDK0/Zae6fRvu+fJRxtFdLfHsa9Y24beCdPnoNZ4LviTNstfA==} + engines: {node: '>=22'} + + '@vitest/istanbul-lib-report@1.0.1': + resolution: {integrity: sha512-1EOLRfsTMnyAr3+kEAsP4o9dhaDlGPpD7H5iLBBeq//YpNB1VIahkPhB+eRp9N2Dkfw8oySROjE3yf9XDeaIkQ==} + engines: {node: '>=22'} - '@vitest/mocker@4.1.10': - resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} + '@vitest/mocker@5.0.0': + resolution: {integrity: sha512-66PGTMIiVJP3t4a5yxU9qPtf7MdTBs8jmToMvy+HVflB3Yy13WJZTtPePdvU+wjRV02SKK5doLbSA6o9pwOmiA==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3635,26 +3640,25 @@ packages: '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/pretty-format@4.1.10': - resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} - - '@vitest/runner@4.1.10': - resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} - - '@vitest/snapshot@4.1.10': - resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} + '@vitest/pretty-format@5.0.0': + resolution: {integrity: sha512-PVRNuB3wpReb4SQEs4zTKM4KWFhQ5pw3spE8naoDJNB5T5aWRzGKHwXcLUllr0WeOTXpB6bSr3CJLo5+7XQSSQ==} '@vitest/spy@3.2.4': resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/spy@4.1.10': - resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} + '@vitest/spy@5.0.0': + resolution: {integrity: sha512-uy+luWBAPw9XfthoHi5AkfHUnuPYEESjl0p/r+meoBnU8bxg5GDQ3Ey8MjcJ6sqahkL4PFyrvfMJJBw7LbU06g==} + + '@vitest/ui@5.0.0': + resolution: {integrity: sha512-h2FIFwggCY2GxUd2UdQoYNVQkOIqEQLPhNREcl3FUiRsdzQep7NWwYbSmhGEA9nFLPDq5pXzRMcBZQU8Py83sg==} + peerDependencies: + vitest: 5.0.0 '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vitest/utils@4.1.10': - resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} + '@vitest/utils@5.0.0': + resolution: {integrity: sha512-dO++xL3vDfvhTAVimfkuQUA3k+JClIF1i1vAkPqpcGAthRmeWnXmHB7YPViPvgCwviX8u7Y5W1u2N//AaQr3fw==} '@webcontainer/env@1.1.1': resolution: {integrity: sha512-6aN99yL695Hi9SuIk1oC88l9o0gmxL1nGWWQ/kNy81HigJ0FoaoTXpytCj6ItzgyCEwA9kF1wixsTuv5cjsgng==} @@ -4124,8 +4128,8 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - ast-v8-to-istanbul@1.0.0: - resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} + ast-v8-to-istanbul@1.0.5: + resolution: {integrity: sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==} asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -4659,8 +4663,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@2.0.0: - resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} es-toolkit@1.50.0: resolution: {integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==} @@ -4824,8 +4828,8 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - expect-type@1.3.0: - resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + expect-type@1.4.0: + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} extend@3.0.2: @@ -4899,8 +4903,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.4.3: - resolution: {integrity: sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==} + flatted@3.4.4: + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} @@ -5033,9 +5037,6 @@ packages: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -5214,18 +5215,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-reports@3.2.0: - resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} - engines: {node: '>=8'} - jackspeak@4.2.3: resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} engines: {node: 20 || >=22} @@ -5492,8 +5481,11 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.5.2: - resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} + magic-string@1.2.3: + resolution: {integrity: sha512-Bpb0W2TbLKOZ7vJnOUnVRGq3WL2p+ISV29M6hYPL1AFCpyKZpdr5ytiXoTSSxRVhg8YW7f65+6gbG8WG6PCa/g==} + + magicast@0.5.4: + resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==} make-asynchronous@1.1.0: resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==} @@ -5503,10 +5495,6 @@ packages: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -5940,8 +5928,8 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} picoquery@2.5.0: @@ -6517,8 +6505,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@4.1.0: - resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + std-env@4.2.0: + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} storybook@10.4.1: resolution: {integrity: sha512-V1Zd2e+gBFufqAQVZ1JR8KLqALsEZ3JYSBnWwQbKa6zCfWWanR6AFMyuOkLt2gZOgGp3h2Riuz88pGNVTQSG0A==} @@ -6678,8 +6666,9 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinybench@6.1.4: + resolution: {integrity: sha512-9APumHG7r4yOk4X4WlkmE71aZcv1gvin1czO3OQ1U9iJcFA5Ja/ygyb0vPOVHTthFozUYs8CLoLUlM8grb2lTQ==} + engines: {node: '>=20.0.0'} tinyexec@1.3.0: resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} @@ -6697,8 +6686,8 @@ packages: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} engines: {node: '>=14.0.0'} tinyspy@4.0.4: @@ -7015,37 +7004,37 @@ packages: yaml: optional: true - vitest-browser-react@2.2.0: - resolution: {integrity: sha512-oY3KM6305kwJMa6nHo92vVtkOsih7mjEf12dLKuphaF+9ywWPEc+qanIBd394SZ6m5LadVEaG6dicvvizOzmjA==} + vitest-browser-react@2.3.0: + resolution: {integrity: sha512-S5vdGHHA93j2Z6dbmIJI1wtxT3AXPTRlmC1Meo+ekG011yNnEutMAnHrwyj8qFlGhgBYA8ENGK6+o1Q+vnFz6A==} peerDependencies: '@types/react': ^18.0.0 || ^19.0.0 '@types/react-dom': ^18.0.0 || ^19.0.0 react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - vitest: ^4.0.0 + vitest: ^4.0.0 || ^5.0.0 peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - vitest@4.1.10: - resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + vitest@5.0.0: + resolution: {integrity: sha512-gpsMNoRhMjMktVxPtstOH4/PJuPyovVaMDr4oDilXaGH1EcqM2OE96SoHT2VIQ6fTGtTjqmHDrEu2X9RQiXf8Q==} + engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.10 - '@vitest/browser-preview': 4.1.10 - '@vitest/browser-webdriverio': 4.1.10 - '@vitest/coverage-istanbul': 4.1.10 - '@vitest/coverage-v8': 4.1.10 - '@vitest/ui': 4.1.10 + '@types/node': ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 5.0.0 + '@vitest/browser-preview': 5.0.0 + '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0 + '@vitest/coverage-istanbul': 5.0.0 + '@vitest/coverage-v8': 5.0.0 + '@vitest/ui': 5.0.0 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: ^6.4.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -7139,8 +7128,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.21.1: - resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + ws@8.21.3: + resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -7367,10 +7356,10 @@ snapshots: '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.3 + '@babel/parser': 7.29.8 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -7382,8 +7371,8 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.3 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -7401,7 +7390,7 @@ snapshots: '@babel/helper-module-imports@7.28.6': dependencies: '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -7414,7 +7403,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@7.29.7': {} '@babel/helper-validator-identifier@7.29.7': {} @@ -7423,40 +7412,40 @@ snapshots: '@babel/helpers@7.29.2': dependencies: '@babel/template': 7.28.6 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 - '@babel/parser@7.29.3': + '@babel/parser@7.29.8': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@babel/runtime@7.29.7': {} '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.3 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@babel/traverse@7.29.0': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.3 + '@babel/parser': 7.29.8 '@babel/template': 7.28.6 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.29.0': + '@babel/types@7.29.8': dependencies: - '@babel/helper-string-parser': 7.27.1 + '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 '@bcoe/v8-coverage@1.0.2': {} - '@blazediff/core@1.9.1': {} + '@blazediff/core@1.10.0': {} '@braidai/lang@1.1.2': {} @@ -8454,7 +8443,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': @@ -8464,12 +8453,12 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@loaderkit/resolve@1.0.4': dependencies: @@ -8903,7 +8892,7 @@ snapshots: detect-libc: 2.1.2 is-glob: 4.0.3 node-addon-api: 7.1.1 - picomatch: 4.0.5 + picomatch: 4.0.7 optionalDependencies: '@parcel/watcher-android-arm64': 2.5.6 '@parcel/watcher-darwin-arm64': 2.5.6 @@ -9320,7 +9309,7 @@ snapshots: '@rolldown/plugin-babel@0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.7)(rolldown@1.2.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.0 - picomatch: 4.0.5 + picomatch: 4.0.7 rolldown: 1.2.0 optionalDependencies: '@babel/runtime': 7.29.7 @@ -9332,7 +9321,7 @@ snapshots: dependencies: '@types/estree': 1.0.9 estree-walker: 2.0.2 - picomatch: 4.0.5 + picomatch: 4.0.7 '@simple-libs/child-process-utils@2.0.0': dependencies: @@ -9373,7 +9362,7 @@ snapshots: - vite - webpack - '@storybook/addon-mcp@0.6.0(@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10)(@vitest/runner@4.1.10)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@4.1.10))(@typescript/typescript6@6.0.2)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))': + '@storybook/addon-mcp@0.6.0(@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@5.0.0)(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@5.0.0))(@typescript/typescript6@6.0.2)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))': dependencies: '@storybook/mcp': 0.7.0(@typescript/typescript6@6.0.2) '@tmcp/adapter-valibot': 0.1.6(tmcp@1.20.0(@typescript/typescript6@6.0.2))(valibot@1.2.0(@typescript/typescript6@6.0.2)) @@ -9383,21 +9372,20 @@ snapshots: tmcp: 1.20.0(@typescript/typescript6@6.0.2) valibot: 1.2.0(@typescript/typescript6@6.0.2) optionalDependencies: - '@storybook/addon-vitest': 10.4.1(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10)(@vitest/runner@4.1.10)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@4.1.10) + '@storybook/addon-vitest': 10.4.1(@vitest/browser-playwright@5.0.0)(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@5.0.0) transitivePeerDependencies: - '@tmcp/auth' - typescript - '@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10)(@vitest/runner@4.1.10)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@4.1.10)': + '@storybook/addon-vitest@10.4.1(@vitest/browser-playwright@5.0.0)(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(vitest@5.0.0)': dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.0.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) storybook: 10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) optionalDependencies: - '@vitest/browser': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/browser-playwright': 4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/runner': 4.1.10 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/browser-playwright': 5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) transitivePeerDependencies: - react - react-dom @@ -9648,24 +9636,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.29.3 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.3 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@types/chai@5.2.3': dependencies: @@ -9986,26 +9974,26 @@ snapshots: '@rolldown/plugin-babel': 0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.7)(rolldown@1.2.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) babel-plugin-react-compiler: 1.0.0 - '@vitest/browser-playwright@4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@vitest/browser': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) playwright: 1.62.0 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser-playwright@4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-playwright@5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@vitest/browser': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) playwright: 1.62.0 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw @@ -10013,34 +10001,36 @@ snapshots: - vite optional: true - '@vitest/browser@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.10 - magic-string: 0.30.21 + '@blazediff/core': 1.10.0 + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + '@vitest/ui': 5.0.0(vitest@5.0.0) + '@vitest/utils': 5.0.0 + magic-string: 1.2.3 pngjs: 7.0.0 sirv: 3.0.2 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - ws: 8.21.1 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + ws: 8.21.3 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.10 - magic-string: 0.30.21 + '@blazediff/core': 1.10.0 + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + '@vitest/ui': 5.0.0(vitest@5.0.0) + '@vitest/utils': 5.0.0 + magic-string: 1.2.3 pngjs: 7.0.0 sirv: 3.0.2 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - ws: 8.21.1 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + ws: 8.21.3 transitivePeerDependencies: - bufferutil - msw @@ -10048,23 +10038,35 @@ snapshots: - vite optional: true - '@vitest/coverage-v8@4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10)': + '@vitest/coverage-v8@5.0.0(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(vitest@5.0.0)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.10 - ast-v8-to-istanbul: 1.0.0 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-reports: 3.2.0 - magicast: 0.5.2 + '@vitest/istanbul-lib-coverage': 1.0.1 + '@vitest/istanbul-lib-report': 1.0.1 + ast-v8-to-istanbul: 1.0.5 + magicast: 0.5.4 obug: 2.1.4 - std-env: 4.1.0 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + std-env: 4.2.0 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) - '@vitest/eslint-plugin@1.6.27(@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0))(vitest@4.1.10)': + '@vitest/coverage-v8@5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0)': + dependencies: + '@bcoe/v8-coverage': 1.0.2 + '@vitest/istanbul-lib-coverage': 1.0.1 + '@vitest/istanbul-lib-report': 1.0.1 + ast-v8-to-istanbul: 1.0.5 + magicast: 0.5.4 + obug: 2.1.4 + std-env: 4.2.0 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + optionalDependencies: + '@vitest/browser': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + + '@vitest/eslint-plugin@1.6.27(@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0))(vitest@5.0.0)': dependencies: '@typescript-eslint/scope-manager': 8.69.0 '@typescript-eslint/utils': 8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)) @@ -10072,7 +10074,7 @@ snapshots: optionalDependencies: '@typescript-eslint/eslint-plugin': 8.69.0(@typescript-eslint/parser@8.69.0(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.2.0(jiti@2.7.0)) typescript: '@typescript/typescript6@6.0.2' - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) transitivePeerDependencies: - supports-color @@ -10084,28 +10086,27 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/expect@4.1.10': + '@vitest/istanbul-lib-coverage@1.0.1': {} + + '@vitest/istanbul-lib-report@1.0.1': dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - chai: 6.2.2 - tinyrainbow: 3.1.0 + '@vitest/istanbul-lib-coverage': 1.0.1 - '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))': + '@vitest/mocker@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.10 + '@jridgewell/trace-mapping': 0.3.31 + '@vitest/spy': 5.0.0 estree-walker: 3.0.3 - magic-string: 0.30.21 + magic-string: 1.2.3 optionalDependencies: vite: 8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0) - '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))': + '@vitest/mocker@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.10 + '@jridgewell/trace-mapping': 0.3.31 + '@vitest/spy': 5.0.0 estree-walker: 3.0.3 - magic-string: 0.30.21 + magic-string: 1.2.3 optionalDependencies: vite: 8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0) @@ -10113,27 +10114,25 @@ snapshots: dependencies: tinyrainbow: 2.0.0 - '@vitest/pretty-format@4.1.10': + '@vitest/pretty-format@5.0.0': dependencies: - tinyrainbow: 3.1.0 - - '@vitest/runner@4.1.10': - dependencies: - '@vitest/utils': 4.1.10 - pathe: 2.0.3 - - '@vitest/snapshot@4.1.10': - dependencies: - '@vitest/pretty-format': 4.1.10 - '@vitest/utils': 4.1.10 - magic-string: 0.30.21 - pathe: 2.0.3 + tinyrainbow: 3.1.1 '@vitest/spy@3.2.4': dependencies: tinyspy: 4.0.4 - '@vitest/spy@4.1.10': {} + '@vitest/spy@5.0.0': {} + + '@vitest/ui@5.0.0(vitest@5.0.0)': + dependencies: + '@vitest/utils': 5.0.0 + fflate: 0.8.3 + flatted: 3.4.4 + pathe: 2.0.3 + sirv: 3.0.2 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) '@vitest/utils@3.2.4': dependencies: @@ -10141,11 +10140,11 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vitest/utils@4.1.10': + '@vitest/utils@5.0.0': dependencies: - '@vitest/pretty-format': 4.1.10 + '@vitest/pretty-format': 5.0.0 convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 + tinyrainbow: 3.1.1 '@webcontainer/env@1.1.1': {} @@ -10874,7 +10873,7 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@1.0.0: + ast-v8-to-istanbul@1.0.5: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -10888,7 +10887,7 @@ snapshots: babel-plugin-react-compiler@1.0.0: dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 bail@2.0.2: {} @@ -11210,7 +11209,7 @@ snapshots: cspell-glob@10.0.1: dependencies: '@cspell/url': 10.0.1 - picomatch: 4.0.5 + picomatch: 4.0.7 cspell-grammar@10.0.1: dependencies: @@ -11272,7 +11271,7 @@ snapshots: cspell-io: 10.0.1 cspell-lib: 10.0.1 fast-json-stable-stringify: 2.1.0 - flatted: 3.4.3 + flatted: 3.4.4 semver: 7.8.5 tinyglobby: 0.2.17 @@ -11410,7 +11409,7 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@2.0.0: {} + es-module-lexer@2.3.2: {} es-toolkit@1.50.0: {} @@ -11555,7 +11554,7 @@ snapshots: eslint-plugin-react-hooks@7.1.1(eslint@10.2.0(jiti@2.7.0)): dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.3 + '@babel/parser': 7.29.8 eslint: 10.2.0(jiti@2.7.0) hermes-parser: 0.25.1 zod: 4.4.3 @@ -11694,7 +11693,7 @@ snapshots: esutils@2.0.3: {} - expect-type@1.3.0: {} + expect-type@1.4.0: {} extend@3.0.2: {} @@ -11730,9 +11729,9 @@ snapshots: dependencies: walk-up-path: 4.0.0 - fdir@6.5.0(picomatch@4.0.5): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.5 + picomatch: 4.0.7 fflate@0.8.3: {} @@ -11758,10 +11757,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.4.3 + flatted: 3.4.4 keyv: 4.5.4 - flatted@3.4.3: {} + flatted@3.4.4: {} foreground-child@3.3.1: dependencies: @@ -11899,8 +11898,6 @@ snapshots: dependencies: whatwg-encoding: 3.1.1 - html-escaper@2.0.2: {} - http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 @@ -12031,19 +12028,6 @@ snapshots: isexe@2.0.0: {} - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-reports@3.2.0: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - jackspeak@4.2.3: dependencies: '@isaacs/cliui': 9.0.0 @@ -12090,7 +12074,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.21.1 + ws: 8.21.3 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -12132,13 +12116,13 @@ snapshots: knip@6.29.0: dependencies: - fdir: 6.5.0(picomatch@4.0.5) + fdir: 6.5.0(picomatch@4.0.7) formatly: 0.3.0 get-tsconfig: 4.14.0 jiti: 2.7.0 oxc-parser: 0.140.0 oxc-resolver: 11.24.2 - picomatch: 4.0.5 + picomatch: 4.0.7 smol-toml: 1.7.0 strip-json-comments: 5.0.3 tinyglobby: 0.2.17 @@ -12227,7 +12211,7 @@ snapshots: lint-staged@17.2.0: dependencies: - picomatch: 4.0.5 + picomatch: 4.0.7 string-argv: 0.3.2 tinyexec: 1.3.0 optionalDependencies: @@ -12288,12 +12272,16 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 + + magic-string@1.2.3: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 - magicast@0.5.2: + magicast@0.5.4: dependencies: - '@babel/parser': 7.29.3 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 source-map-js: 1.2.1 make-asynchronous@1.1.0: @@ -12308,10 +12296,6 @@ snapshots: semver: 7.8.5 optional: true - make-dir@4.0.0: - dependencies: - semver: 7.8.5 - markdown-table@3.0.4: {} marked-terminal@7.3.0(marked@9.1.6): @@ -12967,7 +12951,7 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.5: {} + picomatch@4.0.7: {} picoquery@2.5.0: {} @@ -13109,7 +13093,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 '@types/doctrine': 0.0.9 @@ -13519,7 +13503,7 @@ snapshots: stackback@0.0.2: {} - std-env@4.1.0: {} + std-env@4.2.0: {} storybook@10.4.1(@testing-library/dom@10.4.1)(@types/react@19.2.17)(prettier@2.8.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): dependencies: @@ -13537,7 +13521,7 @@ snapshots: recast: 0.23.11 semver: 7.8.5 use-sync-external-store: 1.6.0(react@19.2.8) - ws: 8.21.1 + ws: 8.21.3 optionalDependencies: '@types/react': 19.2.17 prettier: 2.8.8 @@ -13679,20 +13663,20 @@ snapshots: tiny-invariant@1.3.3: {} - tinybench@2.9.0: {} + tinybench@6.1.4: {} tinyexec@1.3.0: {} tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 tinypool@2.1.0: {} tinyrainbow@2.0.0: {} - tinyrainbow@3.1.0: {} + tinyrainbow@3.1.1: {} tinyspy@4.0.4: {} @@ -13753,7 +13737,7 @@ snapshots: hookable: 6.1.1 import-without-cache: 0.4.0 obug: 2.1.4 - picomatch: 4.0.5 + picomatch: 4.0.7 rolldown: 1.2.0 rolldown-plugin-dts: 0.27.14(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0) tinyexec: 1.3.0 @@ -13923,7 +13907,7 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.16.0 - picomatch: 4.0.5 + picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 unrs-resolver@1.12.2: @@ -14028,7 +14012,7 @@ snapshots: vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 - picomatch: 4.0.5 + picomatch: 4.0.7 postcss: 8.5.23 rolldown: 1.1.5 tinyglobby: 0.2.17 @@ -14046,7 +14030,7 @@ snapshots: vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 - picomatch: 4.0.5 + picomatch: 4.0.7 postcss: 8.5.23 rolldown: 1.1.5 tinyglobby: 0.2.17 @@ -14061,71 +14045,61 @@ snapshots: stylus: 0.62.0 yaml: 2.9.0 - vitest-browser-react@2.2.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10): + vitest-browser-react@2.3.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@5.0.0): dependencies: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + vitest: 5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - vitest@4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.0.0 - expect-type: 1.3.0 - magic-string: 0.30.21 + vitest@5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)): + dependencies: + '@types/chai': 5.2.3 + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + chai: 6.2.2 + es-module-lexer: 2.3.2 + expect-type: 1.4.0 + magic-string: 1.2.3 obug: 2.1.4 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.1.0 - tinybench: 2.9.0 + picomatch: 4.0.7 + std-env: 4.2.0 + tinybench: 6.1.4 tinyexec: 1.3.0 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 vite: 8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 26.1.1 - '@vitest/browser-playwright': 4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + '@vitest/browser-playwright': 5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.17.19)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/coverage-v8': 5.0.0(@vitest/browser@5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0))(vitest@5.0.0) + '@vitest/ui': 5.0.0(vitest@5.0.0) jsdom: 24.1.3 transitivePeerDependencies: - msw - vitest@4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.0.0 - expect-type: 1.3.0 - magic-string: 0.30.21 + vitest@5.0.0(@types/node@26.1.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@24.1.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)): + dependencies: + '@types/chai': 5.2.3 + '@vitest/mocker': 5.0.0(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0)) + chai: 6.2.2 + es-module-lexer: 2.3.2 + expect-type: 1.4.0 + magic-string: 1.2.3 obug: 2.1.4 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.1.0 - tinybench: 2.9.0 + picomatch: 4.0.7 + std-env: 4.2.0 + tinybench: 6.1.4 tinyexec: 1.3.0 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 vite: 8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 26.1.1 - '@vitest/browser-playwright': 4.1.10(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) + '@vitest/browser-playwright': 5.0.0(playwright@1.62.0)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.27.7)(jiti@2.7.0)(less@4.6.4)(sass-embedded@1.100.0)(sass@1.100.0)(stylus@0.62.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/coverage-v8': 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) + '@vitest/ui': 5.0.0(vitest@5.0.0) jsdom: 24.1.3 transitivePeerDependencies: - msw @@ -14190,7 +14164,7 @@ snapshots: wrappy@1.0.2: {} - ws@8.21.1: {} + ws@8.21.3: {} wsl-utils@0.1.0: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a4c51acdb..9bcd9fa16 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,12 +9,12 @@ catalog: '@arethetypeswrong/cli': ^0.18.5 '@eslint/core': ^1.1.1 '@typescript/native': 'npm:typescript@^7.0.2' - '@vitest/coverage-v8': ^4.1.10 + '@vitest/coverage-v8': ^5.0.0 eslint: ^10.0.1 publint: ^0.3.24 tsdown: ^0.22.14 typescript: 'npm:@typescript/typescript6' - vitest: ^4.1.10 + vitest: ^5.0.0 allowBuilds: '@parcel/watcher': false