From b560d51c0122fb7b792acb42ae21836a1769f353 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Tue, 24 Feb 2026 11:23:06 -0700 Subject: [PATCH 001/103] chore: stop deploying to the next branch --- .github/workflows/docs-next-release.yml | 35 ------------------------- 1 file changed, 35 deletions(-) delete mode 100644 .github/workflows/docs-next-release.yml diff --git a/.github/workflows/docs-next-release.yml b/.github/workflows/docs-next-release.yml deleted file mode 100644 index 1e49a89ba6..0000000000 --- a/.github/workflows/docs-next-release.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Docs Next Release - -on: - push: - branches: - - next - -jobs: - build: - runs-on: ubuntu-latest - - permissions: - contents: write - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - uses: actions/setup-node@v4 - with: - node-version: "24" - - - name: Install deps - run: npm ci - - - name: Build - run: npm run build:docs - - - name: Release - uses: JamesIves/github-pages-deploy-action@v4 - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH: next - FOLDER: dist/docs From 5fe0d6a303276a4639fe8ec6d3d4af6e7b9ca651 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Feb 2026 18:34:38 +0000 Subject: [PATCH 002/103] chore(deps): bump devalue from 5.6.2 to 5.6.3 Bumps [devalue](https://github.com/sveltejs/devalue) from 5.6.2 to 5.6.3. - [Release notes](https://github.com/sveltejs/devalue/releases) - [Changelog](https://github.com/sveltejs/devalue/blob/main/CHANGELOG.md) - [Commits](https://github.com/sveltejs/devalue/compare/v5.6.2...v5.6.3) --- updated-dependencies: - dependency-name: devalue dependency-version: 5.6.3 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29cd8f6b24..29243070e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24946,9 +24946,9 @@ } }, "node_modules/devalue": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", - "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz", + "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==", "license": "MIT" }, "node_modules/devlop": { From c2fe3c36712001c34f01588114b2dedaf241a41c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Feb 2026 18:35:15 +0000 Subject: [PATCH 003/103] chore(deps-dev): bump hono from 4.11.7 to 4.12.2 Bumps [hono](https://github.com/honojs/hono) from 4.11.7 to 4.12.2. - [Release notes](https://github.com/honojs/hono/releases) - [Commits](https://github.com/honojs/hono/compare/v4.11.7...v4.12.2) --- updated-dependencies: - dependency-name: hono dependency-version: 4.12.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29243070e9..4e8d6f307a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28911,9 +28911,9 @@ } }, "node_modules/hono": { - "version": "4.11.7", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.7.tgz", - "integrity": "sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.2.tgz", + "integrity": "sha512-gJnaDHXKDayjt8ue0n8Gs0A007yKXj4Xzb8+cNjZeYsSzzwKc0Lr+OZgYwVfB0pHfUs17EPoLvrOsEaJ9mj+Tg==", "dev": true, "license": "MIT", "engines": { From 558046e13daf05dfa7b2873ffbf3b1d74d45db48 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 17 Feb 2026 23:33:14 +0000 Subject: [PATCH 004/103] feat(#3396): add heading-2xs to Text fix: add fallback to heading-xs for v1 design tokens refactor: rename test pages to use issue number 3396 feat: add Angular playground test page for heading-2xs feat: add React playground test page for heading-2xs Initial plan Co-Authored-By: bdfranck <1479091+bdfranck@users.noreply.github.com> --- apps/prs/angular/src/app/app.component.html | 1 + apps/prs/angular/src/app/app.routes.ts | 2 + .../features/feat3396/feat3396.component.html | 47 +++++++++++++ .../features/feat3396/feat3396.component.ts | 11 +++ apps/prs/react/src/app/app.tsx | 1 + apps/prs/react/src/main.tsx | 2 + .../react/src/routes/features/feat3396.tsx | 67 +++++++++++++++++++ libs/common/src/lib/common.ts | 3 +- .../src/components/text/Text.svelte | 12 +++- 9 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 apps/prs/angular/src/routes/features/feat3396/feat3396.component.html create mode 100644 apps/prs/angular/src/routes/features/feat3396/feat3396.component.ts create mode 100644 apps/prs/react/src/routes/features/feat3396.tsx diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index 439cfcce6a..57ce41f135 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -84,6 +84,7 @@ 3306 3370 v2 header icons + 3396 Text heading-2xs size diff --git a/apps/prs/angular/src/app/app.routes.ts b/apps/prs/angular/src/app/app.routes.ts index 232df2d2fa..ef88b3255e 100644 --- a/apps/prs/angular/src/app/app.routes.ts +++ b/apps/prs/angular/src/app/app.routes.ts @@ -69,6 +69,7 @@ import { Feat3306Component } from "../routes/features/feat3306/feat3306.componen import { Feat2469Component } from "../routes/features/feat2469/feat2469.component"; import { Feat3370Component } from "../routes/features/feat3370/feat3370.component"; import { FeatV2IconsComponent } from "../routes/features/featV2Icons/feat-v2-icons.component"; +import { Feat3396Component } from "../routes/features/feat3396/feat3396.component"; export const appRoutes: Route[] = [ { path: "everything", component: EverythingComponent }, @@ -141,4 +142,5 @@ export const appRoutes: Route[] = [ { path: "features/3137", component: Feat3137Component }, { path: "features/3306", component: Feat3306Component }, { path: "features/3370", component: Feat3370Component }, + { path: "features/3396", component: Feat3396Component }, ]; diff --git a/apps/prs/angular/src/routes/features/feat3396/feat3396.component.html b/apps/prs/angular/src/routes/features/feat3396/feat3396.component.html new file mode 100644 index 0000000000..07f4a7ad7b --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3396/feat3396.component.html @@ -0,0 +1,47 @@ +b +
+ Feature: Text heading-2xs size + + + View on GitHub + + + + The Text component now supports heading-2xs from v2 design tokens. + + + + V2 Design Tokens + +
+ heading-xs + heading-2xs (distinct from heading-xs) +
+ + V1 Design Tokens + + heading-xs + heading-2xs (falls back to heading-xs) +
diff --git a/apps/prs/angular/src/routes/features/feat3396/feat3396.component.ts b/apps/prs/angular/src/routes/features/feat3396/feat3396.component.ts new file mode 100644 index 0000000000..d1795136ab --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3396/feat3396.component.ts @@ -0,0 +1,11 @@ +import { CommonModule } from "@angular/common"; +import { Component } from "@angular/core"; +import { GoabBlock, GoabDivider, GoabLink, GoabText } from "@abgov/angular-components"; + +@Component({ + standalone: true, + selector: "abgov-feat3396", + templateUrl: "./feat3396.component.html", + imports: [CommonModule, GoabBlock, GoabDivider, GoabLink, GoabText], +}) +export class Feat3396Component {} diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index c63a1c7200..c0ee1c7903 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -94,6 +94,7 @@ export function App() { v2 header icons 3306 Custom slug value for tabs 3370 Clear calendar day selection + 3396 Text heading-2xs size A diff --git a/apps/prs/react/src/main.tsx b/apps/prs/react/src/main.tsx index 1e7ccef42e..0ecb3301cb 100644 --- a/apps/prs/react/src/main.tsx +++ b/apps/prs/react/src/main.tsx @@ -74,6 +74,7 @@ import { Feat3137Route } from "./routes/features/feat3137"; import { Feat3306Route } from "./routes/features/feat3306"; import { Feat2469Route } from "./routes/features/feat2469"; import { Feat3370Route } from "./routes/features/feat3370"; +import { Feat3396Route } from "./routes/features/feat3396"; const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); @@ -155,6 +156,7 @@ root.render( } /> } /> } /> + } /> diff --git a/apps/prs/react/src/routes/features/feat3396.tsx b/apps/prs/react/src/routes/features/feat3396.tsx new file mode 100644 index 0000000000..d714066a53 --- /dev/null +++ b/apps/prs/react/src/routes/features/feat3396.tsx @@ -0,0 +1,67 @@ +/** + * Test page for Text component heading-2xs size + */ +import { + GoabBlock, + GoabText, + GoabDivider, + GoabDetails, + GoabLink, +} from "@abgov/react-components"; + +export function Feat3396Route() { + return ( +
+ + Feature: Text heading-2xs size + + + + View on GitHub + + + + The Text component now supports heading-2xs from v2 design tokens. + + + + V2 Design Tokens + +
+ heading-xs + heading-2xs (distinct from heading-xs) +
+ + V1 Design Tokens + + heading-xs + heading-2xs (falls back to heading-xs) +
+ ); +} + +export default Feat3396Route; diff --git a/libs/common/src/lib/common.ts b/libs/common/src/lib/common.ts index 014d50c81a..166673085e 100644 --- a/libs/common/src/lib/common.ts +++ b/libs/common/src/lib/common.ts @@ -1124,7 +1124,8 @@ export type GoabTextHeadingSize = | "heading-l" | "heading-m" | "heading-s" - | "heading-xs"; + | "heading-xs" + | "heading-2xs"; export type GoabTextBodySize = "body-l" | "body-m" | "body-s" | "body-xs"; export type GoabTextSize = GoabTextHeadingSize | GoabTextBodySize; export type GoabTextColor = "primary" | "secondary"; diff --git a/libs/web-components/src/components/text/Text.svelte b/libs/web-components/src/components/text/Text.svelte index c3bebc5100..64648e6298 100644 --- a/libs/web-components/src/components/text/Text.svelte +++ b/libs/web-components/src/components/text/Text.svelte @@ -9,7 +9,8 @@ | "heading-l" | "heading-m" | "heading-s" - | "heading-xs"; + | "heading-xs" + | "heading-2xs"; type BodySize = "body-l" | "body-m" | "body-s" | "body-xs"; @@ -86,6 +87,8 @@ return "s"; case "heading-xs": return "xs"; + case "heading-2xs": + return "xs"; case "body-l": case "body-m": case "body-s": @@ -109,6 +112,7 @@ return "2xl"; case "heading-s": case "heading-xs": + case "heading-2xs": return "xl"; case "body-l": return "2xl"; @@ -166,6 +170,9 @@ .heading-xs { font: var(--goa-typography-heading-xs); } + .heading-2xs { + font: var(--goa-typography-heading-2xs, var(--goa-typography-heading-xs)); + } .body-l { font: var(--goa-typography-body-l); } @@ -195,6 +202,9 @@ .heading-xs { font: var(--goa-typography-mobile-heading-xs); } + .heading-2xs { + font: var(--goa-typography-mobile-heading-2xs, var(--goa-typography-mobile-heading-xs)); + } .body-l { font: var(--goa-typography-mobile-body-l); } From 82022fad9d4bffba5ae28a244b6fd4179936271a Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Wed, 18 Feb 2026 14:13:55 -0700 Subject: [PATCH 005/103] feat(#3407): add orientation prop for tabs & skip focus when load Co-Authored-By: Vanessa Tran --- apps/prs/angular/src/app/app.component.html | 2 + apps/prs/angular/src/app/app.routes.ts | 10 +- .../feat3407-skip-on-focus-tab.component.html | 49 +++++ .../feat3407-skip-on-focus-tab.component.ts | 16 ++ .../feat3407-stack-on-mobile.component.html | 79 ++++++++ .../feat3407-stack-on-mobile.component.ts | 16 ++ apps/prs/react/src/app/app.tsx | 2 + apps/prs/react/src/main.tsx | 5 +- .../features/feat3407SkipOnFocusTab.tsx | 67 +++++++ .../routes/features/feat3407StackOnMobile.tsx | 105 +++++++++++ docs/generated/component-apis/tabs.json | 12 +- docs/src/components/CodeSnippet.tsx | 23 +-- docs/src/components/ComponentsGrid.tsx | 74 ++++---- docs/src/components/ExamplesGrid.tsx | 89 +++++---- docs/src/components/TokensGrid.tsx | 5 +- docs/src/data/configurations/tabs.ts | 56 +++--- .../src/experimental/index.ts | 1 + .../src/experimental/tab/tab.ts | 56 ++++++ .../src/experimental/tabs/tabs.ts | 5 +- libs/common/src/lib/common.ts | 2 + .../specs/tabs.browser.spec.tsx | 127 ++++++++++++- .../src/experimental/index.ts | 1 + .../src/experimental/tab/tab.tsx | 36 ++++ .../src/experimental/tabs/tabs.tsx | 11 +- .../src/components/tabs/Tabs.svelte | 174 +++++++++++++++--- 25 files changed, 850 insertions(+), 173 deletions(-) create mode 100644 apps/prs/angular/src/routes/features/feat3407SkipOnFocusTab/feat3407-skip-on-focus-tab.component.html create mode 100644 apps/prs/angular/src/routes/features/feat3407SkipOnFocusTab/feat3407-skip-on-focus-tab.component.ts create mode 100644 apps/prs/angular/src/routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component.html create mode 100644 apps/prs/angular/src/routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component.ts create mode 100644 apps/prs/react/src/routes/features/feat3407SkipOnFocusTab.tsx create mode 100644 apps/prs/react/src/routes/features/feat3407StackOnMobile.tsx create mode 100644 libs/angular-components/src/experimental/tab/tab.ts create mode 100644 libs/react-components/src/experimental/tab/tab.tsx diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index 57ce41f135..71120a7683 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -85,6 +85,8 @@ 3370 v2 header icons 3396 Text heading-2xs size + 3407 Skip Focus on Tab + 3407 Tabs Orientation diff --git a/apps/prs/angular/src/app/app.routes.ts b/apps/prs/angular/src/app/app.routes.ts index ef88b3255e..82ad67f113 100644 --- a/apps/prs/angular/src/app/app.routes.ts +++ b/apps/prs/angular/src/app/app.routes.ts @@ -54,6 +54,7 @@ import { Feat2267Component } from "../routes/features/feat2267/feat2267.componen import { Feat2328Component } from "../routes/features/feat2328/feat2328.component"; import { Feat2361Component } from "../routes/features/feat2361/feat2361.component"; import { Feat2440Component } from "../routes/features/feat2440/feat2440.component"; +import { Feat2469Component } from "../routes/features/feat2469/feat2469.component"; import { Feat2492Component } from "../routes/features/feat2492/feat2492.component"; import { Feat2609Component } from "../routes/features/feat2609/feat2609.component"; import { Feat2611Component } from "../routes/features/feat2611/feat2611.component"; @@ -66,14 +67,15 @@ import { Feat3102Component } from "../routes/features/feat3102/feat3102.componen import { Feat3137Component } from "../routes/features/feat3137/feat3137.component"; import { Feat3241Component } from "../routes/features/feat3241/feat3241.component"; import { Feat3306Component } from "../routes/features/feat3306/feat3306.component"; -import { Feat2469Component } from "../routes/features/feat2469/feat2469.component"; import { Feat3370Component } from "../routes/features/feat3370/feat3370.component"; +import { Feat3407SkipOnFocusTabComponent } from "../routes/features/feat3407SkipOnFocusTab/feat3407-skip-on-focus-tab.component"; +import { Feat3407StackOnMobileComponent } from "../routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component"; import { FeatV2IconsComponent } from "../routes/features/featV2Icons/feat-v2-icons.component"; import { Feat3396Component } from "../routes/features/feat3396/feat3396.component"; export const appRoutes: Route[] = [ { path: "everything", component: EverythingComponent }, - + // Bug routes { path: "bugs/2152", component: Bug2152Component }, { path: "bugs/2331", component: Bug2331Component }, { path: "bugs/2393", component: Bug2393Component }, @@ -115,7 +117,7 @@ export const appRoutes: Route[] = [ { path: "bugs/3337", component: Bug3337Component }, { path: "bugs/3279", component: Bug3279Component }, { path: "bugs/3384", component: Bug3384Component }, - + // Feature routes { path: "features/1328", component: Feat1328Component }, { path: "features/1383", component: Feat1383Component }, { path: "features/1547", component: Feat1547Component }, @@ -143,4 +145,6 @@ export const appRoutes: Route[] = [ { path: "features/3306", component: Feat3306Component }, { path: "features/3370", component: Feat3370Component }, { path: "features/3396", component: Feat3396Component }, + { path: "features/3407-skip-on-focus-tab", component: Feat3407SkipOnFocusTabComponent }, + { path: "features/3407-stack-on-mobile", component: Feat3407StackOnMobileComponent }, ]; diff --git a/apps/prs/angular/src/routes/features/feat3407SkipOnFocusTab/feat3407-skip-on-focus-tab.component.html b/apps/prs/angular/src/routes/features/feat3407SkipOnFocusTab/feat3407-skip-on-focus-tab.component.html new file mode 100644 index 0000000000..9ec6cb352f --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3407SkipOnFocusTab/feat3407-skip-on-focus-tab.component.html @@ -0,0 +1,49 @@ +
+ #3407: Skip Focus on Initial Tab Load + + Testing skipFocus on initial page load (no visible focus ring) and + segmented tabpanel fixes (no focus ring or tab stop on empty content). + + + + + + + Test 1: Skip focus on initial load + + When the page loads, the active tab should NOT have a visible focus + ring. Reload the page and confirm no tab shows a focus outline + until you interact via keyboard. + + + + Not initially selected. + + + + This tab is initially active via initialTab=2. It should NOT + have a focus ring on page load. + + + + Not initially selected. + + + + + + Test 2: When no initialize Tabs + + + Default tabs — check URL changes when clicking tabs. + + + The URL hash should update to reflect the active tab. + + + Resize browser to mobile width — tabs should stack vertically. + + + + +
diff --git a/apps/prs/angular/src/routes/features/feat3407SkipOnFocusTab/feat3407-skip-on-focus-tab.component.ts b/apps/prs/angular/src/routes/features/feat3407SkipOnFocusTab/feat3407-skip-on-focus-tab.component.ts new file mode 100644 index 0000000000..471a109252 --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3407SkipOnFocusTab/feat3407-skip-on-focus-tab.component.ts @@ -0,0 +1,16 @@ +import { Component } from "@angular/core"; +import { + GoabBlock, + GoabText, + GoabDivider, + GoabTabs, + GoabTab, +} from "@abgov/angular-components"; + +@Component({ + standalone: true, + selector: "abgov-feat3407-skip-on-focus-tab", + templateUrl: "./feat3407-skip-on-focus-tab.component.html", + imports: [GoabBlock, GoabText, GoabDivider, GoabTabs, GoabTab], +}) +export class Feat3407SkipOnFocusTabComponent {} diff --git a/apps/prs/angular/src/routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component.html b/apps/prs/angular/src/routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component.html new file mode 100644 index 0000000000..0445ce68ee --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component.html @@ -0,0 +1,79 @@ +
+ #3407: orientation Prop + + Testing orientation prop (controls mobile stacking behavior). orientation is + only available on goabx-tabs (experimental). + + + + + + + + Test 1: Experimental Tabs + orientation="auto" (default) + + + Experimental (v2) tabs that stack vertically on mobile (default behavior). + Resize browser to mobile width to verify tabs stack. + + + + These tabs should stack vertically on mobile. + + + Vertical stacking on narrow screens. + + + Compare with Test 2 below. + + + + + + Test 2: Experimental Tabs + orientation="horizontal" + + Experimental (v2) tabs that stay horizontal on mobile. Resize browser to + mobile width to verify tabs remain in a row. + + + + These tabs should stay horizontal on mobile. + + + No vertical stacking on narrow screens. + + + Useful when horizontal space is preferred. + + + + + + + Test 3: Segmented variant (always not stacked on mobile) + + + Segmented tabs stay horizontal on mobile by default (no prop needed). Resize + to mobile width to verify. + + + + + + + + + + Test 4: Segmented + orientation="horizontal" + + Segmented tabs with orientation explicitly set to "horizontal". Should remain + horizontal on mobile (same as default segmented behavior). + + + + + + + + +
diff --git a/apps/prs/angular/src/routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component.ts b/apps/prs/angular/src/routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component.ts new file mode 100644 index 0000000000..ac6938865e --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component.ts @@ -0,0 +1,16 @@ +import { Component } from "@angular/core"; +import { + GoabBlock, + GoabText, + GoabDivider, + GoabxTabs, + GoabxTab, +} from "@abgov/angular-components"; + +@Component({ + standalone: true, + selector: "abgov-feat3407-stack-on-mobile", + templateUrl: "./feat3407-stack-on-mobile.component.html", + imports: [GoabBlock, GoabText, GoabDivider, GoabxTabs, GoabxTab], +}) +export class Feat3407StackOnMobileComponent {} diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index c0ee1c7903..0220f25992 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -92,6 +92,8 @@ export function App() { 3137 Work Side Menu Group 3241 V2 Experimental Wrappers v2 header icons + 3407 Skip Focus on Tab + 3407 Tabs Orientation 3306 Custom slug value for tabs 3370 Clear calendar day selection 3396 Text heading-2xs size diff --git a/apps/prs/react/src/main.tsx b/apps/prs/react/src/main.tsx index 0ecb3301cb..ccc9c42dc6 100644 --- a/apps/prs/react/src/main.tsx +++ b/apps/prs/react/src/main.tsx @@ -70,6 +70,8 @@ import { Feat2877Route } from "./routes/features/feat2877"; import { Feat3102Route } from "./routes/features/feat3102"; import { Feat3241Route } from "./routes/features/feat3241"; import { FeatV2IconsRoute } from "./routes/features/featV2Icons"; +import { Feat3407SkipOnFocusTabRoute } from "./routes/features/feat3407SkipOnFocusTab"; +import { Feat3407StackOnMobileRoute } from "./routes/features/feat3407StackOnMobile"; import { Feat3137Route } from "./routes/features/feat3137"; import { Feat3306Route } from "./routes/features/feat3306"; import { Feat2469Route } from "./routes/features/feat2469"; @@ -153,7 +155,8 @@ root.render( } /> } /> } /> - } /> + } /> + } /> } /> } /> } /> diff --git a/apps/prs/react/src/routes/features/feat3407SkipOnFocusTab.tsx b/apps/prs/react/src/routes/features/feat3407SkipOnFocusTab.tsx new file mode 100644 index 0000000000..d6f64af372 --- /dev/null +++ b/apps/prs/react/src/routes/features/feat3407SkipOnFocusTab.tsx @@ -0,0 +1,67 @@ +import { + GoabBlock, + GoabText, + GoabDivider, + GoabTabs, + GoabTab, +} from "@abgov/react-components"; +import type { JSX } from "react"; + +export function Feat3407SkipOnFocusTabRoute(): JSX.Element { + return ( +
+ + #3407: Skip Focus on Initial Tab Load + + + Testing skipFocus on initial page load (no visible focus ring) and + segmented tabpanel fixes (no focus ring or tab stop on empty content). + + + + + + + Test 1: Skip focus on initial load + + When the page loads, the active tab should NOT have a visible focus + ring. Reload the page and confirm no tab shows a focus outline + until you interact via keyboard. + + + + Not initially selected. + + + + This tab is initially active via initialTab=2. It should NOT + have a focus ring on page load. + + + + Not initially selected. + + + + + + Test 2: When no initialize Tabs + + + Default tabs — check URL changes when clicking tabs. + + + The URL hash should update to reflect the active tab. + + + Resize browser to mobile width — tabs should stack vertically. + + + + + +
+ ); +} + +export default Feat3407SkipOnFocusTabRoute; diff --git a/apps/prs/react/src/routes/features/feat3407StackOnMobile.tsx b/apps/prs/react/src/routes/features/feat3407StackOnMobile.tsx new file mode 100644 index 0000000000..8515751096 --- /dev/null +++ b/apps/prs/react/src/routes/features/feat3407StackOnMobile.tsx @@ -0,0 +1,105 @@ +import { GoabBlock, GoabText, GoabDivider } from "@abgov/react-components"; +import { GoabxTabs, GoabxTab } from "@abgov/react-components/experimental"; +import { useEffect, type JSX } from "react"; +// ?url suffix tells Vite to resolve the path without injecting the CSS +import v2TokensUrl from "@abgov/design-tokens-v2/dist/tokens.css?url"; + +export function Feat3407StackOnMobileRoute(): JSX.Element { + // Dynamically load v2 design tokens only while this page is mounted, + // so they don't leak into other routes in the SPA. + useEffect(() => { + const link = document.createElement("link"); + link.rel = "stylesheet"; + link.href = v2TokensUrl; + document.head.appendChild(link); + return () => { + document.head.removeChild(link); + }; + }, []); + + return ( +
+ + #3407: orientation Prop + + + Testing orientation prop (controls mobile stacking behavior). orientation is + only available on GoabxTabs (experimental). + + + + + + + + Test 1: Experimental Tabs + orientation="auto" (default) + + + Experimental (v2) tabs that stack vertically on mobile (default behavior). + Resize browser to mobile width to verify tabs stack. + + + + These tabs should stack vertically on mobile. + + + Vertical stacking on narrow screens. + + + Compare with Test 2 below. + + + + + + Test 2: Experimental Tabs + orientation="horizontal" + + Experimental (v2) tabs that stay horizontal on mobile. Resize browser to + mobile width to verify tabs remain in a row. + + + + These tabs should stay horizontal on mobile. + + + No vertical stacking on narrow screens. + + + Useful when horizontal space is preferred. + + + + + + + Test 3: Segmented variant (always not stacked on mobile) + + + Segmented tabs stay horizontal on mobile by default (no prop needed). Resize + to mobile width to verify. + + + {""} + {""} + {""} + + + + + Test 4: Segmented + orientation="horizontal" + + Segmented tabs with orientation explicitly set to "horizontal". Should remain + horizontal on mobile (same as default segmented behavior). + + + {""} + {""} + {""} + + + +
+ ); +} + +export default Feat3407StackOnMobileRoute; diff --git a/docs/generated/component-apis/tabs.json b/docs/generated/component-apis/tabs.json index 520f7fde75..01ac886b92 100644 --- a/docs/generated/component-apis/tabs.json +++ b/docs/generated/component-apis/tabs.json @@ -26,7 +26,15 @@ ], "required": false, "default": "default", - "description": "" + "description": "Sets the visual style of tabs. 'segmented' shows pill/button style tabs." + }, + { + "name": "orientation", + "type": "\"auto\" | \"horizontal\"", + "values": ["auto", "horizontal"], + "required": false, + "default": "auto", + "description": "Tab layout orientation. 'auto' stacks vertically on mobile, 'horizontal' keeps horizontal on all screen sizes." } ], "events": [ @@ -53,4 +61,4 @@ "description": "" } ] -} \ No newline at end of file +} diff --git a/docs/src/components/CodeSnippet.tsx b/docs/src/components/CodeSnippet.tsx index f2690c1d08..880fad9442 100644 --- a/docs/src/components/CodeSnippet.tsx +++ b/docs/src/components/CodeSnippet.tsx @@ -217,8 +217,8 @@ export function CodeSnippet({ // Get available frameworks const availableFrameworks = hasFrameworkSwitcher ? (Object.keys(frameworkCode).filter( - (k) => frameworkCode[k as Framework], - ) as Framework[]) + (k) => frameworkCode[k as Framework], + ) as Framework[]) : []; // Subscribe to global framework preference changes from other components. @@ -254,7 +254,7 @@ export function CodeSnippet({ new CustomEvent("tabs:set-open", { composed: true, detail: { open: i === targetIndex }, - }) + }), ); }); } @@ -440,7 +440,7 @@ export function CodeSnippet({ const renderBlocksForFramework = (fw: Framework) => { if (!extractParts) { const rawCode = getFrameworkRawCode(frameworkCode, fw); - const lang = fw === 'react' ? 'tsx' : 'html'; + const lang = fw === "react" ? "tsx" : "html"; return ( {availableFrameworks.map((fw) => (
-
- {renderBlocksForFramework(fw)} -
+
{renderBlocksForFramework(fw)}
))} @@ -486,9 +485,7 @@ export function CodeSnippet({ ) : ( // Single framework - no tabs needed
-
- {renderFrameworkBlocks()} -
+
{renderFrameworkBlocks()}
)} diff --git a/docs/src/components/ComponentsGrid.tsx b/docs/src/components/ComponentsGrid.tsx index ba9cc88c2f..3542605d74 100644 --- a/docs/src/components/ComponentsGrid.tsx +++ b/docs/src/components/ComponentsGrid.tsx @@ -39,11 +39,11 @@ export interface Component { description?: string; status: "stable" | "beta" | "deprecated" | "experimental"; category: - | "inputs-and-actions" - | "content-layout" - | "structure-and-navigation" - | "feedback-and-alerts" - | "utilities"; + | "inputs-and-actions" + | "content-layout" + | "structure-and-navigation" + | "feedback-and-alerts" + | "utilities"; tags?: string[]; relatedComponents?: string[]; webComponentTag?: string; @@ -165,7 +165,6 @@ export function ComponentsGrid({ components }: ComponentsGridProps) { defaultColumns: DEFAULT_VISIBLE_COLUMNS, }); - // Listen for table sort events (from goa-table web component) // Also explicitly set version="2" attribute since React may not set it correctly on custom elements useEffect(() => { @@ -589,9 +588,8 @@ export function ComponentsGrid({ components }: ComponentsGridProps) { ref={tabsRef} version="2" variant="segmented" - initialtab={viewMode === "card" ? 1 : 2} - updateurl="false" - stackonmobile="false" + initialTab={viewMode === "card" ? 1 : 2} + orientation="horizontal" > @@ -735,35 +733,35 @@ export function ComponentsGrid({ components }: ComponentsGridProps) { {groupedComponents ? groupedComponents.map((group) => ( - - toggleGroup(group.key)} - > - -
- - {group.label} - -
- - - {expandedGroups.has(group.key) && - group.components.map(renderTableRow)} -
- )) + + toggleGroup(group.key)} + > + +
+ + {group.label} + +
+ + + {expandedGroups.has(group.key) && + group.components.map(renderTableRow)} +
+ )) : filteredComponents.map(renderTableRow)} diff --git a/docs/src/components/ExamplesGrid.tsx b/docs/src/components/ExamplesGrid.tsx index 66c054fb09..3b265901da 100644 --- a/docs/src/components/ExamplesGrid.tsx +++ b/docs/src/components/ExamplesGrid.tsx @@ -647,9 +647,8 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { ref={tabsRef} version="2" variant="segmented" - initialtab={viewMode === "card" ? 1 : 2} - updateurl="false" - stackonmobile="false" + initialTab={viewMode === "card" ? 1 : 2} + orientation="horizontal" > @@ -811,35 +810,35 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { {groupedExamples ? groupedExamples.map((group) => ( - - toggleGroup(group.key)} - > - -
- - {group.label} - -
- - - {expandedGroups.has(group.key) && - group.examples.map(renderTableRow)} -
- )) + + toggleGroup(group.key)} + > + +
+ + {group.label} + +
+ + + {expandedGroups.has(group.key) && + group.examples.map(renderTableRow)} +
+ )) : filteredExamples.map(renderTableRow)} @@ -975,19 +974,19 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { {(pendingFilters.category.length > 0 || pendingFilters.scale.length > 0 || pendingFilters.userType.length > 0) && ( - <> - - - setPendingFilters({ category: [], scale: [], userType: [] }) - } - > - Clear all filters - - - )} + <> + + + setPendingFilters({ category: [], scale: [], userType: [] }) + } + > + Clear all filters + + + )} diff --git a/docs/src/components/TokensGrid.tsx b/docs/src/components/TokensGrid.tsx index ed3c2a0bfd..1edf355798 100644 --- a/docs/src/components/TokensGrid.tsx +++ b/docs/src/components/TokensGrid.tsx @@ -436,9 +436,8 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) { ref={tabsRef} version="2" variant="segmented" - initialtab={tokenSyntax === "css" ? 1 : 2} - updateurl="false" - stackonmobile="false" + initialTab={tokenSyntax === "css" ? 1 : 2} + orientation="horizontal" > diff --git a/docs/src/data/configurations/tabs.ts b/docs/src/data/configurations/tabs.ts index d2022082b1..ec46920e1b 100644 --- a/docs/src/data/configurations/tabs.ts +++ b/docs/src/data/configurations/tabs.ts @@ -4,18 +4,18 @@ * Tabs organize content into separate views. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const tabsConfigurations: ComponentConfigurations = { - componentSlug: 'tabs', - componentName: 'Tabs', - defaultConfigurationId: 'basic', + componentSlug: "tabs", + componentName: "Tabs", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic tabs', - description: 'Simple tab navigation', + id: "basic", + name: "Basic tabs", + description: "Simple tab navigation", code: { react: ` @@ -53,9 +53,9 @@ export const tabsConfigurations: ComponentConfigurations = { }, }, { - id: 'initial-tab', - name: 'Initial tab', - description: 'Start with a specific tab selected', + id: "initial-tab", + name: "Initial tab", + description: "Start with a specific tab selected", code: { react: ` First tab content. @@ -75,9 +75,9 @@ export const tabsConfigurations: ComponentConfigurations = { }, }, { - id: 'segmented', - name: 'Segmented variant', - description: 'Pill/button style tabs', + id: "segmented", + name: "Segmented variant", + description: "Pill/button style tabs", code: { react: ` Daily view @@ -97,9 +97,9 @@ export const tabsConfigurations: ComponentConfigurations = { }, }, { - id: 'no-url-update', - name: 'Without URL update', - description: 'Tabs that do not update browser URL', + id: "no-url-update", + name: "Without URL update", + description: "Tabs that do not update browser URL", code: { react: ` Settings panel @@ -116,21 +116,21 @@ export const tabsConfigurations: ComponentConfigurations = { }, }, { - id: 'no-stack-mobile', - name: 'Horizontal on mobile', - description: 'Tabs stay horizontal on small screens', + id: "horizontal-on-mobile", + name: "Horizontal on mobile", + description: "Tabs stay horizontal on small screens", code: { - react: ` - Content 1 - Content 2 - Content 3 + react: ` + Content 1 + Content 2 + Content 3 `, - angular: ` - Content 1 - Content 2 - Content 3 + angular: ` + Content 1 + Content 2 + Content 3 `, - webComponents: ` + webComponents: ` Content 1 Content 2 Content 3 diff --git a/libs/angular-components/src/experimental/index.ts b/libs/angular-components/src/experimental/index.ts index 6eb66e4b35..d771886e58 100644 --- a/libs/angular-components/src/experimental/index.ts +++ b/libs/angular-components/src/experimental/index.ts @@ -27,6 +27,7 @@ export * from "./side-menu-heading/side-menu-heading"; export * from "./table/table"; export * from "./table-sort-header/table-sort-header"; export * from "./textarea/textarea"; +export * from "./tab/tab"; export * from "./tabs/tabs"; export * from "./work-side-menu/work-side-menu"; export * from "./work-side-menu-item/work-side-menu-item"; diff --git a/libs/angular-components/src/experimental/tab/tab.ts b/libs/angular-components/src/experimental/tab/tab.ts new file mode 100644 index 0000000000..13cdb6740d --- /dev/null +++ b/libs/angular-components/src/experimental/tab/tab.ts @@ -0,0 +1,56 @@ +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + TemplateRef, + OnInit, + ChangeDetectorRef, + booleanAttribute, +} from "@angular/core"; +import { NgTemplateOutlet, CommonModule } from "@angular/common"; + +@Component({ + standalone: true, + selector: "goabx-tab", + template: ` + + + @if (typeof heading !== "string") { +
+ +
+ } +
+ `, + schemas: [CUSTOM_ELEMENTS_SCHEMA], + imports: [NgTemplateOutlet, CommonModule], +}) +export class GoabxTab implements OnInit { + isReady = false; + @Input() heading!: string | TemplateRef; + @Input({ transform: booleanAttribute }) disabled?: boolean; + @Input() slug?: string; + + constructor(private cdr: ChangeDetectorRef) {} + + ngOnInit(): void { + setTimeout(() => { + this.isReady = true; + this.cdr.detectChanges(); + }); + } + + getHeadingAsString(): string { + return this.heading instanceof TemplateRef ? "" : this.heading; + } + + getHeadingAsTemplate(): TemplateRef | null { + if (!this.heading) return null; + return this.heading instanceof TemplateRef ? this.heading : null; + } +} diff --git a/libs/angular-components/src/experimental/tabs/tabs.ts b/libs/angular-components/src/experimental/tabs/tabs.ts index 3e491c83a3..ffbafc0b59 100644 --- a/libs/angular-components/src/experimental/tabs/tabs.ts +++ b/libs/angular-components/src/experimental/tabs/tabs.ts @@ -9,7 +9,7 @@ import { ChangeDetectorRef, } from "@angular/core"; import { CommonModule } from "@angular/common"; -import { GoabTabsOnChangeDetail, GoabTabsVariant } from "@abgov/ui-components-common"; +import { GoabTabsOnChangeDetail, GoabTabsOrientation, GoabTabsVariant } from "@abgov/ui-components-common"; @Component({ standalone: true, @@ -21,6 +21,7 @@ import { GoabTabsOnChangeDetail, GoabTabsVariant } from "@abgov/ui-components-co [attr.initialtab]="initialTab" [attr.testid]="testId" [attr.variant]="variant" + [attr.orientation]="orientation" (_change)="_onChange($event)" > @@ -35,6 +36,8 @@ export class GoabxTabs implements OnInit { @Input({ transform: numberAttribute }) initialTab?: number; @Input() testId?: string; @Input() variant?: GoabTabsVariant; + /** Tab layout orientation. "auto" stacks vertically on mobile (default), "horizontal" keeps horizontal on all screen sizes. */ + @Input() orientation?: GoabTabsOrientation; constructor(private cdr: ChangeDetectorRef) {} diff --git a/libs/common/src/lib/common.ts b/libs/common/src/lib/common.ts index 166673085e..929677f210 100644 --- a/libs/common/src/lib/common.ts +++ b/libs/common/src/lib/common.ts @@ -219,10 +219,12 @@ export type GoabTextAreaOnBlurDetail = { // Tabs export type GoabTabsVariant = "default" | "segmented"; +export type GoabTabsOrientation = "auto" | "horizontal"; export interface GoabTabsProps { initialTab?: number; variant?: GoabTabsVariant; + orientation?: GoabTabsOrientation; } export type GoabTabsOnChangeDetail = { diff --git a/libs/react-components/specs/tabs.browser.spec.tsx b/libs/react-components/specs/tabs.browser.spec.tsx index a35d23acd9..18cd5e5c01 100644 --- a/libs/react-components/specs/tabs.browser.spec.tsx +++ b/libs/react-components/specs/tabs.browser.spec.tsx @@ -1,7 +1,9 @@ import { render } from "vitest-browser-react"; import { GoabTabs, GoabTab } from "../src"; +import { GoabxTabs, GoabxTab } from "../src/experimental"; import { expect, describe, it, vi } from "vitest"; +import { page } from "@vitest/browser/context"; import { GoabBadge } from "../src/lib/badge/badge"; describe("Tabs Browser Tests", () => { @@ -521,9 +523,7 @@ describe("Tabs Browser Tests", () => { const Component = () => { return ( - - Review content - + Review content @@ -633,7 +633,6 @@ describe("Tabs Browser Tests", () => { ); }; - const { getByText, getByRole } = render(); const tabs = getByRole("tab"); @@ -693,12 +692,124 @@ describe("Tabs Browser Tests", () => { // pass and the vitest would see that as a fully passing test. The logic below ensure that // is passes all the time. const hashes = new Set(); - await vi.waitFor(() => { - hashes.add(window.location.hash); - }, { timeout: 500 }); + await vi.waitFor( + () => { + hashes.add(window.location.hash); + }, + { timeout: 500 }, + ); expect(hashes.size).toBe(1); expect(hashes.has("#active-tasks")).toBe(true); - }) + }); + }); + + describe("skip focus on initial load", () => { + it("should not focus any tab on initial page load", async () => { + const Component = () => { + return ( + + Content 1 + Content 2 + Content 3 + + ); + }; + + const { getByRole } = render(); + const tabs = getByRole("tab"); + + await vi.waitFor(() => { + expect(tabs.elements().length).toBe(3); + }); + + // No tab should be focus-visible on initial page load + tabs.elements().forEach((tab) => { + expect(tab.matches(":focus-visible")).toBe(false); + }); + }); + + it("should not focus any tab when initialTab is set", async () => { + const Component = () => { + return ( + + Content 1 + Content 2 + Content 3 + + ); + }; + + const { getByRole } = render(); + const tabs = getByRole("tab"); + + // The second goa-tab should be open (active) + await vi.waitFor(() => { + const goaTabs = document.querySelectorAll("goa-tab"); + expect(goaTabs[1].getAttribute("open")).toBe("true"); + }); + + // But it should NOT be focus-visible + await vi.waitFor(() => { + expect(tabs.elements().length).toBe(3); + }); + + const secondTab = tabs.elements()[1]; + expect(secondTab.matches(":focus-visible")).toBe(false); + }); + }); + + describe("orientation (experimental)", () => { + it("should stack tabs vertically on mobile by default (orientation='auto')", async () => { + // Simulate mobile viewport (iPhone SE dimensions) + await page.viewport(375, 667); + + const Component = () => { + return ( + + Content 1 + Content 2 + + ); + }; + + const { getByRole } = render(); + const tabs = getByRole("tab"); + + await vi.waitFor(() => { + const els = tabs.elements(); + expect(els.length).toBe(2); + }); + + const tabsDiv = tabs.elements()[0].parentElement!; + const borderLeft = getComputedStyle(tabsDiv).borderLeftStyle; + expect(borderLeft).not.toBe("none"); // on mobile css, we have border left while desktop we don't + }); + + it("should keep tabs horizontal on mobile when orientation is 'horizontal'", async () => { + // Simulate mobile viewport (iPhone SE dimensions) + await page.viewport(375, 667); + + const Component = () => { + return ( + + Content 1 + Content 2 + + ); + }; + + const { getByRole } = render(); + const tabs = getByRole("tab"); + + await vi.waitFor(() => { + const els = tabs.elements(); + expect(els.length).toBe(2); + }); + + const tabsDiv = tabs.elements()[0].parentElement!; + const borderLeft = getComputedStyle(tabsDiv).borderLeftStyle; + expect(borderLeft).toBe("none"); + }); }); }); diff --git a/libs/react-components/src/experimental/index.ts b/libs/react-components/src/experimental/index.ts index faa16b2ba9..2078ed8c07 100644 --- a/libs/react-components/src/experimental/index.ts +++ b/libs/react-components/src/experimental/index.ts @@ -25,6 +25,7 @@ export * from "./side-menu-group/side-menu-group"; export * from "./side-menu-heading/side-menu-heading"; export * from "./table/table"; export * from "./table/table-sort-header"; +export * from "./tab/tab"; export * from "./tabs/tabs"; export * from "./textarea/textarea"; export * from "./work-side-menu/work-side-menu"; diff --git a/libs/react-components/src/experimental/tab/tab.tsx b/libs/react-components/src/experimental/tab/tab.tsx new file mode 100644 index 0000000000..52f3e49849 --- /dev/null +++ b/libs/react-components/src/experimental/tab/tab.tsx @@ -0,0 +1,36 @@ +import type { JSX } from "react"; + +interface WCProps { + heading?: React.ReactNode; + disabled?: string; + slug?: string; +} + +declare module "react" { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace JSX { + interface IntrinsicElements { + "goa-tab": WCProps & React.HTMLAttributes; + } + } +} + +export interface GoabxTabItemProps { + heading?: React.ReactNode; + disabled?: boolean; + children?: React.ReactNode; + slug?: string; +} + +export function GoabxTab({ heading, disabled, slug, children }: GoabxTabItemProps): JSX.Element { + return ( + + {typeof heading !== "string" && {heading}} + {children} + + ); +} diff --git a/libs/react-components/src/experimental/tabs/tabs.tsx b/libs/react-components/src/experimental/tabs/tabs.tsx index 4a93f9c913..7078f118e7 100644 --- a/libs/react-components/src/experimental/tabs/tabs.tsx +++ b/libs/react-components/src/experimental/tabs/tabs.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef, type JSX } from "react"; -import { GoabTabsOnChangeDetail, GoabTabsVariant } from "@abgov/ui-components-common"; +import { GoabTabsOnChangeDetail, GoabTabsOrientation, GoabTabsVariant } from "@abgov/ui-components-common"; interface WCProps { initialtab?: number; @@ -8,6 +8,7 @@ interface WCProps { testid?: string; variant?: GoabTabsVariant; version?: string; + orientation?: string; } declare module "react" { @@ -24,8 +25,9 @@ export interface GoabxTabsProps { children?: React.ReactNode; testId?: string; variant?: GoabTabsVariant; + /** Tab layout orientation. "auto" stacks vertically on mobile (default), "horizontal" keeps horizontal on all screen sizes. */ + orientation?: GoabTabsOrientation; onChange?: (detail: GoabTabsOnChangeDetail) => void; - version?: string; } export function GoabxTabs({ @@ -34,7 +36,7 @@ export function GoabxTabs({ testId, onChange, variant, - version = "2", + orientation, }: GoabxTabsProps): JSX.Element { const ref = useRef(null); @@ -58,7 +60,8 @@ export function GoabxTabs({ initialtab={initialTab} testid={testId} variant={variant} - version={version} + version="2" + orientation={orientation} > {children}
diff --git a/libs/web-components/src/components/tabs/Tabs.svelte b/libs/web-components/src/components/tabs/Tabs.svelte index 54b7b12dac..a7db0ab9e3 100644 --- a/libs/web-components/src/components/tabs/Tabs.svelte +++ b/libs/web-components/src/components/tabs/Tabs.svelte @@ -1,8 +1,16 @@ - + @@ -417,6 +445,7 @@ role="tablist" bind:this={_rootEl} class:v2={version === "2"} + class:horizontal={orientation === "horizontal"} class:segmented={variant === "segmented"} data-testid={testid} > @@ -429,13 +458,17 @@
{/if} -
+
diff --git a/libs/web-components/src/components/app-header-navigation/AppHeaderNavigation.svelte b/libs/web-components/src/components/app-header-navigation/AppHeaderNavigation.svelte new file mode 100644 index 0000000000..64d206d849 --- /dev/null +++ b/libs/web-components/src/components/app-header-navigation/AppHeaderNavigation.svelte @@ -0,0 +1,591 @@ + + + + +{#if version === "2"} +
+ +
+{/if} + + diff --git a/libs/web-components/src/components/app-header/AppHeader.svelte b/libs/web-components/src/components/app-header/AppHeader.svelte index 4d39b2da06..814f76a4ae 100644 --- a/libs/web-components/src/components/app-header/AppHeader.svelte +++ b/libs/web-components/src/components/app-header/AppHeader.svelte @@ -5,13 +5,21 @@ - - {text} - + {#if text} + + {text} + + {:else} + + {/if} Date: Mon, 23 Feb 2026 16:42:14 -0700 Subject: [PATCH 009/103] chore: add permissions to gh workflow file In response to https://github.com/GovAlta/ui-components/security/code-scanning/7 --- .github/workflows/pull-request.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 1761eb93b7..9995110683 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -1,4 +1,7 @@ name: Pull Request Check +permissions: + contents: read + pull-requests: write on: pull_request: From 4d2f5cde67fd42ff2dd8667f7debc3b7491b2f37 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Mon, 23 Feb 2026 16:54:55 -0700 Subject: [PATCH 010/103] chore: update angular/cli in response to https://github.com/GovAlta/ui-components/security/dependabot/255 --- package-lock.json | 67 +++++++++++++++++++++++++++++------------------ package.json | 2 +- 2 files changed, 43 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e8d6f307a..14942e10b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,7 +45,7 @@ "@angular-eslint/eslint-plugin": "18.0.1", "@angular-eslint/eslint-plugin-template": "18.0.1", "@angular-eslint/template-parser": "18.0.1", - "@angular/cli": "^21.1.3", + "@angular/cli": "^21.1.5", "@angular/compiler-cli": "20.1.6", "@angular/language-service": "20.1.6", "@astrojs/check": "^0.9.6", @@ -1516,19 +1516,19 @@ } }, "node_modules/@angular/cli": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.1.4.tgz", - "integrity": "sha512-XsMHgxTvHGiXXrhYZz3zMZYhYU0gHdpoHKGiEKXwcx+S1KoYbIssyg6oF2Kq49ZaE0OYCTKjnvgDce6ZqdkJ/A==", + "version": "21.1.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.1.5.tgz", + "integrity": "sha512-ljqvAzSk8FKMaYW/aZhR+SXjudbQViYYkMlJvJUClGpokjDM9KfJWPX+QZfr2J+piW5yaaHmFaIMddO9QxkUDQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2101.4", - "@angular-devkit/core": "21.1.4", - "@angular-devkit/schematics": "21.1.4", + "@angular-devkit/architect": "0.2101.5", + "@angular-devkit/core": "21.1.5", + "@angular-devkit/schematics": "21.1.5", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", "@modelcontextprotocol/sdk": "1.26.0", - "@schematics/angular": "21.1.4", + "@schematics/angular": "21.1.5", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.46.2", "ini": "6.0.0", @@ -1552,13 +1552,13 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { - "version": "0.2101.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2101.4.tgz", - "integrity": "sha512-3yyebORk+ovtO+LfDjIGbGCZhCMDAsyn9vkCljARj3sSshS4blOQBar0g+V3kYAweLT5Gf+rTKbN5jneOkBAFQ==", + "version": "0.2101.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2101.5.tgz", + "integrity": "sha512-eTo6wWzUW5AyBBLTbaUTpBHhGbZhzteErtNGklWkhjicCr/soNH+2mVtvg8bqA8sNreYffK1VXKFsq5NyMh5qg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.4", + "@angular-devkit/core": "21.1.5", "rxjs": "7.8.2" }, "bin": { @@ -1571,13 +1571,13 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/core": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.4.tgz", - "integrity": "sha512-ObPTI5gYCB1jGxTRhcqZ6oQVUBFVJ8GH4LksVuAiz0nFX7xxpzARWvlhq943EtnlovVlUd9I8fM3RQqjfGVVAQ==", + "version": "21.1.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.5.tgz", + "integrity": "sha512-KUKbllHvHefkAbTBjWNpRPyrpBqecW+6HBBAR+XNbKBuFTHkG+gxtuwMXNsvO5KECKwQphvQt5h3g05Xtaf0LQ==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "8.17.1", + "ajv": "8.18.0", "ajv-formats": "3.0.1", "jsonc-parser": "3.3.1", "picomatch": "4.0.3", @@ -1599,13 +1599,13 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/schematics": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.1.4.tgz", - "integrity": "sha512-Nqq0ioCUxrbEX+L4KOarETcZZJNnJ1mAJ0ubO4VM91qnn8RBBM9SnQ91590TfC34Szk/wh+3+Uj6KUvTJNuegQ==", + "version": "21.1.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.1.5.tgz", + "integrity": "sha512-CGmoorQL5+mVCJEHwHWOrhSd1hFxB3h66i9wUDizJAEQUM3mSml5SiglHArpWY/G4GmFwi6XVe+Jm3U8J/mcFg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.4", + "@angular-devkit/core": "21.1.5", "jsonc-parser": "3.3.1", "magic-string": "0.30.21", "ora": "9.0.0", @@ -1618,14 +1618,14 @@ } }, "node_modules/@angular/cli/node_modules/@schematics/angular": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.1.4.tgz", - "integrity": "sha512-I1zdSNzdbrVCWpeE2NsZQmIoa9m0nlw4INgdGIkqUH6FgwvoGKC0RoOxKAmm6HHVJ48FE/sPI13dwAeK89ow5A==", + "version": "21.1.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.1.5.tgz", + "integrity": "sha512-AndJ17ePYUoqJqiIF9VaXbGAFfOqDcHuAxhwozsQlWDzwgQSOUC/WWeG9hKVCgMD6tE02Sxr2ova9DiBKsLQNg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.4", - "@angular-devkit/schematics": "21.1.4", + "@angular-devkit/core": "21.1.5", + "@angular-devkit/schematics": "21.1.5", "jsonc-parser": "3.3.1" }, "engines": { @@ -1634,6 +1634,23 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular/cli/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/@angular/cli/node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", diff --git a/package.json b/package.json index 1a51242f22..967a657b0d 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@angular-eslint/eslint-plugin": "18.0.1", "@angular-eslint/eslint-plugin-template": "18.0.1", "@angular-eslint/template-parser": "18.0.1", - "@angular/cli": "^21.1.3", + "@angular/cli": "^21.1.5", "@angular/compiler-cli": "20.1.6", "@angular/language-service": "20.1.6", "@astrojs/check": "^0.9.6", From b52aedde466e10524197fe2ffaac2950de2387e7 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Mon, 23 Feb 2026 16:55:19 -0700 Subject: [PATCH 011/103] chore: update semantic-release npm in response to https://github.com/GovAlta/ui-components/security/dependabot/255 --- package-lock.json | 26 ++++---------------------- package.json | 2 +- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 14942e10b5..5e48dff1b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -110,7 +110,7 @@ "prettier": "^3.2.0", "prettier-plugin-svelte": "^3.1.2", "rollup": "^4.9.6", - "semantic-release": "^25.0.2", + "semantic-release": "^25.0.3", "svelte": "^4.2.19", "svelte-check": "^3.6.2", "swc-loader": "0.1.15", @@ -44001,9 +44001,9 @@ } }, "node_modules/semantic-release": { - "version": "25.0.2", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-25.0.2.tgz", - "integrity": "sha512-6qGjWccl5yoyugHt3jTgztJ9Y0JVzyH8/Voc/D8PlLat9pwxQYXz7W1Dpnq5h0/G5GCYGUaDSlYcyk3AMh5A6g==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-25.0.3.tgz", + "integrity": "sha512-WRgl5GcypwramYX4HV+eQGzUbD7UUbljVmS+5G1uMwX/wLgYuJAxGeerXJDMO2xshng4+FXqCgyB5QfClV6WjA==", "dev": true, "license": "MIT", "dependencies": { @@ -44033,7 +44033,6 @@ "read-package-up": "^12.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.2", - "semver-diff": "^5.0.0", "signale": "^1.2.1", "yargs": "^18.0.0" }, @@ -44442,23 +44441,6 @@ "node": ">=10" } }, - "node_modules/semver-diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-5.0.0.tgz", - "integrity": "sha512-0HbGtOm+S7T6NGQ/pxJSJipJvc4DK3FcRVMRkhsIwJDJ4Jcz5DQC1cPPzB5GhzyHjwttW878HaWQq46CkL3cqg==", - "deprecated": "Deprecated as the semver package now supports this built-in.", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/semver-regex": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", diff --git a/package.json b/package.json index 967a657b0d..c21c506776 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "prettier": "^3.2.0", "prettier-plugin-svelte": "^3.1.2", "rollup": "^4.9.6", - "semantic-release": "^25.0.2", + "semantic-release": "^25.0.3", "svelte": "^4.2.19", "svelte-check": "^3.6.2", "swc-loader": "0.1.15", From 6fe574a2773deee81cdaddb33db2d90ba413358f Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Mon, 23 Feb 2026 17:03:02 -0700 Subject: [PATCH 012/103] chore: npm audit updates --- package-lock.json | 1335 ++++++++++++++++++++++++++++++--------------- 1 file changed, 897 insertions(+), 438 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e48dff1b3..77dbecf63b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -435,13 +435,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.2003.16", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.16.tgz", - "integrity": "sha512-W7FPVhZzIeHVP/duuKepfZU66LpQ0k9YMHFhrGpzaUuHPOwKmza6+pjVvvti3g6jzT8b1uVlb+XlYgNPZ5jrPQ==", + "version": "0.2003.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.17.tgz", + "integrity": "sha512-e6Mo4xFIhmtPLhjeai3kBW0yViHEtZ+210tcWfuEnPGRgr8X4rMxkYQRAT2X9dqgtsG+TmVZFHAN/Gbs6Tvr7Q==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "20.3.16", + "@angular-devkit/core": "20.3.17", "rxjs": "7.8.2" }, "engines": { @@ -451,9 +451,9 @@ } }, "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { - "version": "20.3.16", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.16.tgz", - "integrity": "sha512-6L9Lpe3lbkyz32gzqxZGVC8MhXxXht+yV+4LUsb4+6T/mG/V9lW6UTW0dhwVOS3vpWMEwpy75XHT298t7HcKEg==", + "version": "20.3.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.17.tgz", + "integrity": "sha512-xlBT8rmyTjb5P/p6wDHp0EleagptjSHGNsJwqSY4FdIG0p59ezAbb2wbQGqkYDxuoptFSLUpAGE7sNWZ5OiLWw==", "dev": true, "license": "MIT", "dependencies": { @@ -489,17 +489,17 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "20.3.16", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.3.16.tgz", - "integrity": "sha512-SsJmxRnBTrivG3UiRy0gaU1mGupRCAiEKrKlW30oe6Dm0UoIVXDi4srpSEECcng5Obr3jFPzJE6P16/gfp3ZBw==", + "version": "20.3.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.3.17.tgz", + "integrity": "sha512-WfwNWvceo7kF2+4zaJHhZ7dwG5rjCkHgrGQF15cJbCOp81dTu4nmDCfU0ndB1knisg4ObE6HYUb6lFUNaZ5VCQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2003.16", - "@angular-devkit/build-webpack": "0.2003.16", - "@angular-devkit/core": "20.3.16", - "@angular/build": "20.3.16", + "@angular-devkit/architect": "0.2003.17", + "@angular-devkit/build-webpack": "0.2003.17", + "@angular-devkit/core": "20.3.17", + "@angular/build": "20.3.17", "@babel/core": "7.28.3", "@babel/generator": "7.28.3", "@babel/helper-annotate-as-pure": "7.27.3", @@ -510,7 +510,7 @@ "@babel/preset-env": "7.28.3", "@babel/runtime": "7.28.3", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "20.3.16", + "@ngtools/webpack": "20.3.17", "ansi-colors": "4.1.3", "autoprefixer": "10.4.21", "babel-loader": "10.0.0", @@ -565,7 +565,7 @@ "@angular/platform-browser": "^20.0.0", "@angular/platform-server": "^20.0.0", "@angular/service-worker": "^20.0.0", - "@angular/ssr": "^20.3.16", + "@angular/ssr": "^20.3.17", "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", "jest": "^29.5.0 || ^30.2.0", @@ -622,9 +622,9 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { - "version": "20.3.16", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.16.tgz", - "integrity": "sha512-6L9Lpe3lbkyz32gzqxZGVC8MhXxXht+yV+4LUsb4+6T/mG/V9lW6UTW0dhwVOS3vpWMEwpy75XHT298t7HcKEg==", + "version": "20.3.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.17.tgz", + "integrity": "sha512-xlBT8rmyTjb5P/p6wDHp0EleagptjSHGNsJwqSY4FdIG0p59ezAbb2wbQGqkYDxuoptFSLUpAGE7sNWZ5OiLWw==", "dev": true, "license": "MIT", "dependencies": { @@ -760,13 +760,13 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.2003.16", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2003.16.tgz", - "integrity": "sha512-88c6jTNAzqVinwYswsHOJAinIUSq08PQd1PfRwoH7RXiZt8XzkSmeLmXKchtamSflDXdcnjNd+AZY29b279zDA==", + "version": "0.2003.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2003.17.tgz", + "integrity": "sha512-hN8C+fg16RQN7YfoevhhjU57yrpo5/861KvFvLlohAjC9JovqN66fFPQ2O5nHIJvjSwa7QLsoeLyrGFQ0mtvOQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2003.16", + "@angular-devkit/architect": "0.2003.17", "rxjs": "7.8.2" }, "engines": { @@ -927,14 +927,14 @@ } }, "node_modules/@angular/build": { - "version": "20.3.16", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.16.tgz", - "integrity": "sha512-p1W3wwMG1Bs4tkPW7ceXO4woO1KCP28sjfpBJg32dIMW3dYSC+iWNmUkYS/wb4YEkqCV0wd6Apnd98mZjL6rNg==", + "version": "20.3.17", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.17.tgz", + "integrity": "sha512-HCHFZrBEyR1aWwkWH1MnSFAIwgzU31bEYbB4cFeOR+HKFJwglMamkv1MPHsF3+TZxYioJa5ieF/ipI1KTXZLUg==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2003.16", + "@angular-devkit/architect": "0.2003.17", "@babel/core": "7.28.3", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", @@ -976,7 +976,7 @@ "@angular/platform-browser": "^20.0.0", "@angular/platform-server": "^20.0.0", "@angular/service-worker": "^20.0.0", - "@angular/ssr": "^20.3.16", + "@angular/ssr": "^20.3.17", "karma": "^6.4.0", "less": "^4.2.0", "ng-packagr": "^20.0.0", @@ -5489,9 +5489,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5542,9 +5542,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -5606,9 +5606,9 @@ "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -5699,9 +5699,9 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -6571,27 +6571,6 @@ } } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -7287,6 +7266,299 @@ "tslib": "2" } }, + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.10.tgz", + "integrity": "sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.10.tgz", + "integrity": "sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.10.tgz", + "integrity": "sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/fs-print": "4.56.10", + "@jsonjoy.com/fs-snapshot": "4.56.10", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.10.tgz", + "integrity": "sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.10.tgz", + "integrity": "sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-fsa": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.10.tgz", + "integrity": "sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.56.10" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.10.tgz", + "integrity": "sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-utils": "4.56.10", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.10.tgz", + "integrity": "sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/buffers": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/util": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/@jsonjoy.com/json-pack": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", @@ -7522,22 +7794,22 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.56.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.56.3.tgz", - "integrity": "sha512-fRqok4aRNq5GpgGBv2fKlSSKbirPKTJ75vQefthB5x9dwt4Zz+AezUzdc1p/AG4wUBIgmhjcEwn/Rj+N4Wh4Mw==", + "version": "7.57.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.3.tgz", + "integrity": "sha512-2+k2FNp+6zug/VmpK0wZFPQu7cKMihjHBP1iUuZs6Ep5P9uR1hD4dR5Ss7z/MiBkwVmKnUm6Pojhkz/c431SMw==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/api-extractor-model": "7.32.2", + "@microsoft/api-extractor-model": "7.33.1", "@microsoft/tsdoc": "~0.16.0", "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.19.1", - "@rushstack/rig-package": "0.6.0", - "@rushstack/terminal": "0.21.0", - "@rushstack/ts-command-line": "5.2.0", + "@rushstack/node-core-library": "5.20.1", + "@rushstack/rig-package": "0.7.1", + "@rushstack/terminal": "0.22.1", + "@rushstack/ts-command-line": "5.3.1", "diff": "~8.0.2", "lodash": "~4.17.23", - "minimatch": "10.1.2", + "minimatch": "10.2.1", "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", @@ -7548,15 +7820,38 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.32.2.tgz", - "integrity": "sha512-Ussc25rAalc+4JJs9HNQE7TuO9y6jpYQX9nWD1DhqUzYPBr3Lr7O9intf+ZY8kD5HnIqeIRJX7ccCT0QyBy2Ww==", + "version": "7.33.1", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.1.tgz", + "integrity": "sha512-KX0LI6xzI0gcBOXXmr5mnnbdhsK2W93pqvJo8OgJgWvRRh+wMEp0Ccj38h1XKeJ29E1tuAZKSUOfHUQ1WA8fZg==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "~0.16.0", "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.19.1" + "@rushstack/node-core-library": "5.20.1" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@microsoft/api-extractor/node_modules/diff": { @@ -7583,13 +7878,13 @@ } }, "node_modules/@microsoft/api-extractor/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -8815,9 +9110,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "20.3.16", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.3.16.tgz", - "integrity": "sha512-yXxo0CKkCa9SuP05OskOeFt9l1wirCzh7MhwW1S18Rpi6cyPbV1bc7GEz05+dfi5Ee8Dlbx3sbmdty0xtHvFQw==", + "version": "20.3.17", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.3.17.tgz", + "integrity": "sha512-cfV7hdA1QkykNqegBu07KOQEeHzOwBV52snFz9gFSYLCqP669D8OqEzdRktYMgpGc7ZBOia7IC4gwhHkM3gOfg==", "dev": true, "license": "MIT", "engines": { @@ -11831,14 +12126,14 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", - "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", + "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0" + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11849,9 +12144,9 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", - "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", "dev": true, "license": "MIT", "engines": { @@ -11863,22 +12158,21 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", - "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", + "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.47.0", - "@typescript-eslint/tsconfig-utils": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" + "@typescript-eslint/project-service": "8.56.1", + "@typescript-eslint/tsconfig-utils": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11891,33 +12185,17 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", - "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", + "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11927,19 +12205,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", - "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", + "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "eslint-visitor-keys": "^4.2.1" + "@typescript-eslint/types": "8.56.1", + "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11949,23 +12227,92 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@nx/eslint-plugin/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@nx/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, + "node_modules/@nx/eslint-plugin/node_modules/minimatch": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, "node_modules/@nx/eslint-plugin/node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", "dev": true, "license": "MIT", "engines": { @@ -16315,9 +16662,9 @@ "license": "MIT" }, "node_modules/@rushstack/node-core-library": { - "version": "5.19.1", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.19.1.tgz", - "integrity": "sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.1.tgz", + "integrity": "sha512-QvxZyh+RsTJ77JpQkS9K9lJujh6lj5WyMxieT0bdACtwqxEkGB9zCuSMX5UlXRweaIgSpu1ztdHmhV07fKUpMg==", "dev": true, "license": "MIT", "dependencies": { @@ -16408,9 +16755,9 @@ "license": "ISC" }, "node_modules/@rushstack/problem-matcher": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.1.1.tgz", - "integrity": "sha512-Fm5XtS7+G8HLcJHCWpES5VmeMyjAKaWeyZU5qPzZC+22mPlJzAsOxymHiWIfuirtPckX3aptWws+K2d0BzniJA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz", + "integrity": "sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==", "dev": true, "license": "MIT", "peerDependencies": { @@ -16423,9 +16770,9 @@ } }, "node_modules/@rushstack/rig-package": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.6.0.tgz", - "integrity": "sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.1.tgz", + "integrity": "sha512-hLwDnp4yMcAd/gcUol8NPWNctpIXzVOgMyhZ8DagnEJls9TOZd0xF//5hS+YTiX7/+4rLfBra+NoB3rtFxjDdA==", "dev": true, "license": "MIT", "dependencies": { @@ -16434,14 +16781,14 @@ } }, "node_modules/@rushstack/terminal": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.21.0.tgz", - "integrity": "sha512-cLaI4HwCNYmknM5ns4G+drqdEB6q3dCPV423+d3TZeBusYSSm09+nR7CnhzJMjJqeRcdMAaLnrA4M/3xDz4R3w==", + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.1.tgz", + "integrity": "sha512-Mdtu0VN7v31O5Zcno8ZZH5kQHF13Ez7WN9Aio7nFJVcR36i4bkERionYrWgBDQJ0JdVPLKGecZER/xRU5IvGLw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.19.1", - "@rushstack/problem-matcher": "0.1.1", + "@rushstack/node-core-library": "5.20.1", + "@rushstack/problem-matcher": "0.2.1", "supports-color": "~8.1.1" }, "peerDependencies": { @@ -16470,13 +16817,13 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.2.0.tgz", - "integrity": "sha512-lYxCX0nDdkDtCkVpvF0m25ymf66SaMWuppbD6b7MdkIzvGXKBXNIVZlwBH/C0YfkanrupnICWf2n4z3AKSfaHw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.1.tgz", + "integrity": "sha512-mid/JIZSJafwy3x9e4v0wVLuAqSSYYErEHV0HXPALYLSBN13YNkR5caOk0hf97lSRKrxhtvQjGaDKSEelR3sMg==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.21.0", + "@rushstack/terminal": "0.22.1", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" @@ -18063,17 +18410,40 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/@tufjs/models/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -18768,15 +19138,15 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz", - "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", + "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.47.0", - "@typescript-eslint/types": "^8.47.0", - "debug": "^4.3.4" + "@typescript-eslint/tsconfig-utils": "^8.56.1", + "@typescript-eslint/types": "^8.56.1", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -18790,9 +19160,9 @@ } }, "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", - "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", "dev": true, "license": "MIT", "engines": { @@ -18822,9 +19192,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz", - "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", + "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", "dev": true, "license": "MIT", "engines": { @@ -18839,17 +19209,17 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.47.0.tgz", - "integrity": "sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", + "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0", - "@typescript-eslint/utils": "8.47.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/utils": "8.56.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -18859,19 +19229,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", - "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", + "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0" + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -18882,9 +19252,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", - "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", "dev": true, "license": "MIT", "engines": { @@ -18896,22 +19266,21 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", - "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", + "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.47.0", - "@typescript-eslint/tsconfig-utils": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" + "@typescript-eslint/project-service": "8.56.1", + "@typescript-eslint/tsconfig-utils": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -18925,16 +19294,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", - "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", + "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -18944,19 +19313,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", - "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", + "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "eslint-visitor-keys": "^4.2.1" + "@typescript-eslint/types": "8.56.1", + "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -18966,39 +19335,92 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/type-utils/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@typescript-eslint/type-utils/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", "dev": true, "license": "MIT", "engines": { @@ -19051,14 +19473,37 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz", + "integrity": "sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -26160,9 +26605,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -26268,9 +26713,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -26348,9 +26793,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -26419,9 +26864,9 @@ } }, "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -26500,9 +26945,9 @@ "license": "MIT" }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -27182,9 +27627,9 @@ } }, "node_modules/file-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -27269,24 +27714,51 @@ } }, "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.5.tgz", + "integrity": "sha512-ct/ckWBV/9Dg3MlvCXsLcSUyoWwv9mCKqlhLNB2DAuXR/NZolSXlQqP5dyy6guWlPXBhodZyZ5lGPQcbQDxrEQ==", "license": "Apache-2.0", "dependencies": { - "minimatch": "^5.0.1" + "minimatch": "^10.2.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/filelist/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "license": "ISC", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=10" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/filename-reserved-regex": { @@ -27677,9 +28149,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -27792,9 +28264,9 @@ "license": "MIT" }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -28285,16 +28757,37 @@ "dev": true, "license": "BSD-2-Clause" }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/glob/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -29376,17 +29869,40 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/ignore-walk/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/ignore-walk/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -32529,9 +33045,9 @@ "license": "MIT" }, "node_modules/listr2/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", "dev": true, "license": "MIT" }, @@ -35377,9 +35893,9 @@ } }, "node_modules/npm": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-11.10.0.tgz", - "integrity": "sha512-i8hE43iSIAMFuYVi8TxsEISdELM4fIza600aLjJ0ankGPLqd0oTPKMJqAcO/QWm307MbSlWGzJcNZ0lGMQgHPA==", + "version": "11.10.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-11.10.1.tgz", + "integrity": "sha512-woavuY2OgDFQ1K/tB9QHsUuW989nKfvsKTN/h5qGyS+3+BhvXN/DA2TNzx569JaFfTqrET5bEQNHwVhFk+U1gg==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -35397,7 +35913,6 @@ "cacache", "chalk", "ci-info", - "cli-columns", "fastest-levenshtein", "fs-minipass", "glob", @@ -35459,12 +35974,12 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^9.3.0", - "@npmcli/config": "^10.7.0", + "@npmcli/arborist": "^9.3.1", + "@npmcli/config": "^10.7.1", "@npmcli/fs": "^5.0.0", "@npmcli/map-workspaces": "^5.0.3", "@npmcli/metavuln-calculator": "^9.0.3", - "@npmcli/package-json": "^7.0.4", + "@npmcli/package-json": "^7.0.5", "@npmcli/promise-spawn": "^9.0.1", "@npmcli/redact": "^4.0.0", "@npmcli/run-script": "^10.0.3", @@ -35474,29 +35989,28 @@ "cacache": "^20.0.3", "chalk": "^5.6.2", "ci-info": "^4.4.0", - "cli-columns": "^4.0.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^13.0.2", + "glob": "^13.0.6", "graceful-fs": "^4.2.11", "hosted-git-info": "^9.0.2", "ini": "^6.0.0", - "init-package-json": "^8.2.4", + "init-package-json": "^8.2.5", "is-cidr": "^6.0.3", "json-parse-even-better-errors": "^5.0.0", "libnpmaccess": "^10.0.3", - "libnpmdiff": "^8.1.1", - "libnpmexec": "^10.2.1", - "libnpmfund": "^7.0.15", + "libnpmdiff": "^8.1.2", + "libnpmexec": "^10.2.2", + "libnpmfund": "^7.0.16", "libnpmorg": "^8.0.1", - "libnpmpack": "^9.1.1", + "libnpmpack": "^9.1.2", "libnpmpublish": "^11.1.3", "libnpmsearch": "^9.0.1", "libnpmteam": "^8.0.2", "libnpmversion": "^8.0.3", "make-fetch-happen": "^15.0.3", - "minimatch": "^10.1.1", - "minipass": "^7.1.1", + "minimatch": "^10.2.2", + "minipass": "^7.1.3", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", "node-gyp": "^12.2.0", @@ -35518,7 +36032,7 @@ "spdx-expression-parse": "^4.0.0", "ssri": "^13.0.1", "supports-color": "^10.2.2", - "tar": "^7.5.7", + "tar": "^7.5.9", "text-table": "~0.2.0", "tiny-relative-date": "^2.0.2", "treeverse": "^3.0.0", @@ -35650,7 +36164,6 @@ "node_modules/npm/node_modules/@isaacs/balanced-match": { "version": "4.0.1", "dev": true, - "inBundle": true, "license": "MIT", "engines": { "node": "20 || >=22" @@ -35659,7 +36172,6 @@ "node_modules/npm/node_modules/@isaacs/brace-expansion": { "version": "5.0.1", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { "@isaacs/balanced-match": "^4.0.1" @@ -35703,7 +36215,7 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "9.3.0", + "version": "9.3.1", "dev": true, "inBundle": true, "license": "ISC", @@ -35750,7 +36262,7 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "10.7.0", + "version": "10.7.1", "dev": true, "inBundle": true, "license": "ISC", @@ -35865,7 +36377,7 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "7.0.4", + "version": "7.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -35876,7 +36388,7 @@ "json-parse-even-better-errors": "^5.0.0", "proc-log": "^6.0.0", "semver": "^7.5.3", - "validate-npm-package-license": "^3.0.4" + "spdx-expression-parse": "^4.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -36046,15 +36558,6 @@ "node": ">= 14" } }, - "node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/aproba": { "version": "2.1.0", "dev": true, @@ -36067,6 +36570,15 @@ "inBundle": true, "license": "MIT" }, + "node_modules/npm/node_modules/balanced-match": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/npm/node_modules/bin-links": { "version": "6.0.0", "dev": true, @@ -36095,6 +36607,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "5.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/npm/node_modules/cacache": { "version": "20.0.3", "dev": true, @@ -36154,30 +36678,14 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "5.0.2", + "version": "5.0.3", "dev": true, "inBundle": true, "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "5.0.0" - }, "engines": { "node": ">=20" } }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/npm/node_modules/cmd-shim": { "version": "8.0.0", "dev": true, @@ -36234,12 +36742,6 @@ "node": ">=0.3.1" } }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/encoding": { "version": "0.1.13", "dev": true, @@ -36293,17 +36795,17 @@ } }, "node_modules/npm/node_modules/glob": { - "version": "13.0.2", + "version": "13.0.6", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -36403,7 +36905,7 @@ } }, "node_modules/npm/node_modules/init-package-json": { - "version": "8.2.4", + "version": "8.2.5", "dev": true, "inBundle": true, "license": "ISC", @@ -36413,7 +36915,6 @@ "promzard": "^3.0.1", "read": "^5.0.1", "semver": "^7.7.2", - "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^7.0.0" }, "engines": { @@ -36432,7 +36933,6 @@ "node_modules/npm/node_modules/ip-regex": { "version": "5.0.0", "dev": true, - "inBundle": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -36453,15 +36953,6 @@ "node": ">=20" } }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/isexe": { "version": "4.0.0", "dev": true, @@ -36524,12 +37015,12 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "8.1.1", + "version": "8.1.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.0", + "@npmcli/arborist": "^9.3.1", "@npmcli/installed-package-contents": "^4.0.0", "binary-extensions": "^3.0.0", "diff": "^8.0.2", @@ -36543,12 +37034,12 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "10.2.1", + "version": "10.2.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.0", + "@npmcli/arborist": "^9.3.1", "@npmcli/package-json": "^7.0.0", "@npmcli/run-script": "^10.0.0", "ci-info": "^4.0.0", @@ -36566,12 +37057,12 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "7.0.15", + "version": "7.0.16", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.0" + "@npmcli/arborist": "^9.3.1" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -36591,12 +37082,12 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "9.1.1", + "version": "9.1.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.0", + "@npmcli/arborist": "^9.3.1", "@npmcli/run-script": "^10.0.0", "npm-package-arg": "^13.0.0", "pacote": "^21.0.2" @@ -36697,25 +37188,25 @@ } }, "node_modules/npm/node_modules/minimatch": { - "version": "10.1.2", + "version": "10.2.2", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/npm/node_modules/minipass": { - "version": "7.1.2", + "version": "7.1.3", "dev": true, "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -36773,6 +37264,12 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", "dev": true, @@ -36797,6 +37294,12 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, "node_modules/npm/node_modules/minipass-sized": { "version": "2.0.0", "dev": true, @@ -37068,7 +37571,7 @@ } }, "node_modules/npm/node_modules/path-scurry": { - "version": "2.0.1", + "version": "2.0.2", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -37077,7 +37580,7 @@ "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -37284,7 +37787,6 @@ "node_modules/npm/node_modules/spdx-correct": { "version": "3.2.0", "dev": true, - "inBundle": true, "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -37294,7 +37796,6 @@ "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { "version": "3.0.1", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", @@ -37335,32 +37836,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/supports-color": { "version": "10.2.2", "dev": true, @@ -37374,7 +37849,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "7.5.7", + "version": "7.5.9", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -37389,15 +37864,6 @@ "node": ">=18" } }, - "node_modules/npm/node_modules/tar/node_modules/yallist": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/npm/node_modules/text-table": { "version": "0.2.0", "dev": true, @@ -37511,7 +37977,6 @@ "node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", "dev": true, - "inBundle": true, "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", @@ -37521,7 +37986,6 @@ "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { "version": "3.0.1", "dev": true, - "inBundle": true, "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", @@ -37575,10 +38039,13 @@ } }, "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", + "version": "5.0.0", "dev": true, "inBundle": true, - "license": "ISC" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } }, "node_modules/nth-check": { "version": "2.1.1", @@ -46766,9 +47233,9 @@ } }, "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -47135,22 +47602,19 @@ } }, "node_modules/ts-checker-rspack-plugin": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/ts-checker-rspack-plugin/-/ts-checker-rspack-plugin-1.2.3.tgz", - "integrity": "sha512-Fq2+/sSILEJKWrqoj/H+ytnBbYrudPfRLxaULA/MuL+/3jswXuiR4MOfL30R9XzVUD2km0pSx6bj8yk95IEOaA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-checker-rspack-plugin/-/ts-checker-rspack-plugin-1.3.0.tgz", + "integrity": "sha512-89oK/BtApjdid1j9CGjPGiYry+EZBhsnTAM481/8ipgr/y2IOgCbW1HPnan+fs5FnzlpUgf9dWGNZ4Ayw3Bd8A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", "@rspack/lite-tapable": "^1.1.0", "chokidar": "^3.6.0", - "is-glob": "^4.0.3", - "memfs": "^4.51.1", - "minimatch": "^9.0.5", + "memfs": "^4.56.10", "picocolors": "^1.1.1" }, "peerDependencies": { - "@rspack/core": "^1.0.0", + "@rspack/core": "^1.0.0 || ^2.0.0-0", "typescript": ">=3.8.0" }, "peerDependenciesMeta": { @@ -47198,12 +47662,20 @@ } }, "node_modules/ts-checker-rspack-plugin/node_modules/memfs": { - "version": "4.51.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.1.tgz", - "integrity": "sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==", + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.10.tgz", + "integrity": "sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@jsonjoy.com/fs-core": "4.56.10", + "@jsonjoy.com/fs-fsa": "4.56.10", + "@jsonjoy.com/fs-node": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-to-fsa": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/fs-print": "4.56.10", + "@jsonjoy.com/fs-snapshot": "4.56.10", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", @@ -47214,22 +47686,9 @@ "funding": { "type": "github", "url": "https://github.com/sponsors/streamich" - } - }, - "node_modules/ts-checker-rspack-plugin/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "tslib": "2" } }, "node_modules/ts-checker-rspack-plugin/node_modules/picomatch": { From 728399061d8a9efb4660161c8ef96feb1d1ad5d2 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Mon, 23 Feb 2026 17:06:19 -0700 Subject: [PATCH 013/103] chore: update svelte for security fixes --- package-lock.json | 68 +---------------------------------------------- package.json | 2 +- 2 files changed, 2 insertions(+), 68 deletions(-) diff --git a/package-lock.json b/package-lock.json index 77dbecf63b..0c158c191b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -111,7 +111,7 @@ "prettier-plugin-svelte": "^3.1.2", "rollup": "^4.9.6", "semantic-release": "^25.0.3", - "svelte": "^4.2.19", + "svelte": "^4.2.20", "svelte-check": "^3.6.2", "swc-loader": "0.1.15", "ts-jest": "29.4.6", @@ -36161,25 +36161,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/npm/node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/npm/node_modules/@isaacs/fs-minipass": { "version": "4.0.1", "dev": true, @@ -36930,17 +36911,6 @@ "node": ">= 12" } }, - "node_modules/npm/node_modules/ip-regex": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/npm/node_modules/is-cidr": { "version": "6.0.3", "dev": true, @@ -37784,24 +37754,6 @@ "node": ">= 14" } }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", "dev": true, @@ -37974,24 +37926,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/npm/node_modules/validate-npm-package-name": { "version": "7.0.2", "dev": true, diff --git a/package.json b/package.json index c21c506776..e7e51a92df 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "prettier-plugin-svelte": "^3.1.2", "rollup": "^4.9.6", "semantic-release": "^25.0.3", - "svelte": "^4.2.19", + "svelte": "^4.2.20", "svelte-check": "^3.6.2", "swc-loader": "0.1.15", "ts-jest": "29.4.6", From 35a7fe360de3f445f5e310c72449a6a4ce218690 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Mon, 23 Feb 2026 17:10:50 -0700 Subject: [PATCH 014/103] chore: nx migrate to 22.5.2 --- package-lock.json | 3183 +++++++++++++++++++-------------------------- package.json | 32 +- 2 files changed, 1390 insertions(+), 1825 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0c158c191b..436ac6f50c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@astrojs/mdx": "^4.3.13", "@astrojs/react": "^4.4.2", "@nrwl/jest": "19.5.4", - "@swc/helpers": "0.5.11", + "@swc/helpers": "0.5.19", "astro": "^5.16.6", "date-fns": "^3.0.6", "dompurify": "^3.3.1", @@ -28,7 +28,7 @@ "highlight.js": "^11.11.1", "react": "^19.2.3", "react-dom": "^19.2.3", - "react-router-dom": "^6.30.3", + "react-router-dom": "6.30.3", "rxjs": "~7.8.0", "style-dictionary": "^5.1.1", "svelte-routing": "^2.13.0", @@ -52,21 +52,21 @@ "@babel/core": "^7.14.5", "@babel/preset-react": "^7.14.5", "@faker-js/faker": "^8.3.1", - "@nx/angular": "22.3.3", - "@nx/eslint": "22.3.3", - "@nx/eslint-plugin": "22.3.3", - "@nx/jest": "22.3.3", - "@nx/js": "22.3.3", - "@nx/react": "22.3.3", - "@nx/vite": "22.3.3", - "@nx/vitest": "22.3.3", - "@nx/web": "22.3.3", - "@nx/workspace": "22.3.3", + "@nx/angular": "22.5.2", + "@nx/eslint": "22.5.2", + "@nx/eslint-plugin": "22.5.2", + "@nx/jest": "22.5.2", + "@nx/js": "22.5.2", + "@nx/react": "22.5.2", + "@nx/vite": "22.5.2", + "@nx/vitest": "22.5.2", + "@nx/web": "22.5.2", + "@nx/workspace": "22.5.2", "@schematics/angular": "20.1.5", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "@swc-node/register": "1.9.2", - "@swc/cli": "0.6.0", - "@swc/core": "1.9.3", + "@swc-node/register": "1.11.1", + "@swc/cli": "0.7.10", + "@swc/core": "1.15.8", "@testing-library/dom": "^10.1.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.1.0", @@ -100,7 +100,7 @@ "jsdom": "^26.1.0", "jsonc-eslint-parser": "^2.1.0", "ng-packagr": "20.1.0", - "nx": "22.3.3", + "nx": "22.5.2", "playwright": "^1.50.1", "postcss": "^8.4.5", "postcss-import": "~14.1.0", @@ -4526,9 +4526,9 @@ } }, "node_modules/@bufbuild/protobuf": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.10.2.tgz", - "integrity": "sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.11.0.tgz", + "integrity": "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==", "dev": true, "license": "(Apache-2.0 AND BSD-3-Clause)" }, @@ -6571,6 +6571,29 @@ } } }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -8241,57 +8264,49 @@ } }, "node_modules/@module-federation/node": { - "version": "2.7.26", - "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.26.tgz", - "integrity": "sha512-C7aIABSxbZKOvVDMIivmV9Q/aOVh9xpUv+y+nwSWuQr9v2pgmMzVK3rxWoeusmkpaENia8h5AWNpYjcrMi+O9g==", + "version": "2.7.32", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.32.tgz", + "integrity": "sha512-hUj5v2GGwpNzl2gaJS4AyzCYRzJBhN8875A+ucKF9tq3jaQb5zpy3izYMISqqbN2q9a7jz3nEUgwAh3pjri+rQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/enhanced": "0.22.0", - "@module-federation/runtime": "0.22.0", - "@module-federation/sdk": "0.22.0", + "@module-federation/enhanced": "2.0.1", + "@module-federation/runtime": "2.0.1", + "@module-federation/sdk": "2.0.1", "btoa": "1.2.1", "encoding": "^0.1.13", "node-fetch": "2.7.0" }, "peerDependencies": { - "react": "^16||^17||^18||^19", - "react-dom": "^16||^17||^18||^19", "webpack": "^5.40.0" }, "peerDependenciesMeta": { - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { + "webpack": { "optional": true } } }, "node_modules/@module-federation/node/node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.22.0.tgz", - "integrity": "sha512-OzMBBbUhOMbDVX/wkVDxaOshgyUdxv+kRQDtxl1/ipV5GXTjs1tpS4NHtDwiJi0qKeG0AvnvGCrPu7bjMOcAVw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-D7LMW5EMAJShOMR1aZDAJ6s+MdsYDHaQyJADLQ3LaY0sne/BkVqkPikUwcO1IwOwKbXjYsDlQVOEvk9wZVRFhA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.22.0", + "@module-federation/sdk": "2.0.1", "@types/semver": "7.5.8", "semver": "7.6.3" } }, "node_modules/@module-federation/node/node_modules/@module-federation/cli": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-0.22.0.tgz", - "integrity": "sha512-kdeDg6HuOqJYKtPeoupWQg6wLZT7B+AwMDwMjwhcKHxKEmKFPImbJLymBWEgmKTktZKh1ERtEOplwFt9u5iEBA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-2.0.1.tgz", + "integrity": "sha512-2SL5Y8iODNX10y9T3CBLhHjSXo4afnA1BK82m4sNfZebuVO+o34bxewqwod9xfWq9xhTZmOSFZ+n+lgTKRv+CQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "0.22.0", - "@module-federation/sdk": "0.22.0", + "@module-federation/dts-plugin": "2.0.1", + "@module-federation/sdk": "2.0.1", "chalk": "3.0.0", "commander": "11.1.0", "jiti": "2.4.2" @@ -8304,32 +8319,40 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/data-prefetch": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.22.0.tgz", - "integrity": "sha512-NESR/5Wcn9unPY18oQSSXlbXTnMbUFwqqvSZnpJt5vBb/8QlcJEiPnxERZqKhKrIS6GTD8KneHPRCOQsP6Xcqw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-2.0.1.tgz", + "integrity": "sha512-Kq0P1OABGt6QAvs6TaE/zY9Ut9Y/oJFrzoSF3eWaCYbUAr2KD2SpTyMsPz4ssBzjeKXTgimugh6tHHd6mpCBIQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.22.0", - "@module-federation/sdk": "0.22.0", + "@module-federation/runtime": "2.0.1", + "@module-federation/sdk": "2.0.1", "fs-extra": "9.1.0" }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, "node_modules/@module-federation/node/node_modules/@module-federation/dts-plugin": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.22.0.tgz", - "integrity": "sha512-lj5YtUZz0moaT1XziM0OyizE0mIhMa8W65RUiX/+UZ4iNK/KMs4e/CGpfhEt2Lj9+j6KYSzI2+676d+73j/kag==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-2.0.1.tgz", + "integrity": "sha512-PLneTsf1fQS5/RTBedtLAAmCPRdMfIlhfJkOa8QH3WDJaQsqm8Wb3r2cTUBf2aNj/bP3aH/y6Hs9JFB/4x0l5g==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.22.0", - "@module-federation/managers": "0.22.0", - "@module-federation/sdk": "0.22.0", - "@module-federation/third-party-dts-extractor": "0.22.0", + "@module-federation/error-codes": "2.0.1", + "@module-federation/managers": "2.0.1", + "@module-federation/sdk": "2.0.1", + "@module-federation/third-party-dts-extractor": "2.0.1", "adm-zip": "^0.5.10", "ansi-colors": "^4.1.3", "axios": "^1.12.0", @@ -8354,23 +8377,23 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/enhanced": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.22.0.tgz", - "integrity": "sha512-OysyO6xbhpP+CeOEDp2v6HyFcVT5wWAdQrfga3jhlFUAdIR7nZZ2albysnF2CGn/xyU050Ss74ttgy7GiKi5fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.22.0", - "@module-federation/cli": "0.22.0", - "@module-federation/data-prefetch": "0.22.0", - "@module-federation/dts-plugin": "0.22.0", - "@module-federation/error-codes": "0.22.0", - "@module-federation/inject-external-runtime-core-plugin": "0.22.0", - "@module-federation/managers": "0.22.0", - "@module-federation/manifest": "0.22.0", - "@module-federation/rspack": "0.22.0", - "@module-federation/runtime-tools": "0.22.0", - "@module-federation/sdk": "0.22.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-2.0.1.tgz", + "integrity": "sha512-EZIARQ/8ScoTP6PV8+E4SsmMYWK4ErrikZJ0G/FX8wvK8mCtdoKatFtvDN9++P6Nl78kN9zHYgAV4AHKdBVjfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "2.0.1", + "@module-federation/cli": "2.0.1", + "@module-federation/data-prefetch": "2.0.1", + "@module-federation/dts-plugin": "2.0.1", + "@module-federation/error-codes": "2.0.1", + "@module-federation/inject-external-runtime-core-plugin": "2.0.1", + "@module-federation/managers": "2.0.1", + "@module-federation/manifest": "2.0.1", + "@module-federation/rspack": "2.0.1", + "@module-federation/runtime-tools": "2.0.1", + "@module-federation/sdk": "2.0.1", "btoa": "^1.2.1", "schema-utils": "^4.3.0", "upath": "2.0.1" @@ -8396,66 +8419,66 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/error-codes": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz", - "integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-2.0.1.tgz", + "integrity": "sha512-2bJF/ft+qL9L6Zvq2t/G9/f/0wFL73cM8/NJ04uyYz9BjIgvx28K5qu8/6+IwgEEKATG7vOhBBVj6wH3S+5ASA==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/node/node_modules/@module-federation/inject-external-runtime-core-plugin": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.22.0.tgz", - "integrity": "sha512-zeN6XiLV9l0tAsZzQxHLEQM28sWiijmIBp9CiIDc4iqk2f/kgCSqiBWTiNcS4sZODzupPkktaWsC5+5eWk0ENQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-2.0.1.tgz", + "integrity": "sha512-oAA7G+4GCHM+WRYfscR/x4GwCyM9CEqfdD9/x2L6y8mtLWK9anRLKTocsI759AvzXsbT1m3EQ5ki1O6wlwDu3g==", "dev": true, "license": "MIT", "peerDependencies": { - "@module-federation/runtime-tools": "0.22.0" + "@module-federation/runtime-tools": "2.0.1" } }, "node_modules/@module-federation/node/node_modules/@module-federation/managers": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.22.0.tgz", - "integrity": "sha512-Ptv8gEUihPBeoQEpsKq3GZUEB4y/hqG83mKw5NrKpXMIfcoF6SZjcknXz5LuN7NF3xMi1XHYU74z/nKzr+izew==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-2.0.1.tgz", + "integrity": "sha512-KR01lSlcYRQ9C6hW2a8CQQtAE0LvfTLgtV/6ZNUTagw8sRfeDln+ggrZsYilKu9zl0i8RPDgpv/kS60o4lcxCQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.22.0", + "@module-federation/sdk": "2.0.1", "find-pkg": "2.0.0", "fs-extra": "9.1.0" } }, "node_modules/@module-federation/node/node_modules/@module-federation/manifest": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.22.0.tgz", - "integrity": "sha512-Exv+frMkRGKDs3KKXeBBKcHvL7nNTk5Yt2ftEvxCUIRPC16Ebvy6RcQvFFvbvmOhuM/If6j6E/aZu5Z9oau6xw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-2.0.1.tgz", + "integrity": "sha512-p8nYGjHWp17MsYdW/Vv0ogBDiTTsI1PHWPQbvVIqLQXDqwiesaRSRR1zziECXQoEL8lV5Bs+uSkcaJGhea9P+A==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "0.22.0", - "@module-federation/managers": "0.22.0", - "@module-federation/sdk": "0.22.0", + "@module-federation/dts-plugin": "2.0.1", + "@module-federation/managers": "2.0.1", + "@module-federation/sdk": "2.0.1", "chalk": "3.0.0", "find-pkg": "2.0.0" } }, "node_modules/@module-federation/node/node_modules/@module-federation/rspack": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.22.0.tgz", - "integrity": "sha512-PvDlFxzCbufArZvt6wSLsJNm20hdDsz/4X04YAxAZfp/dTECZghZsebLcR7nHOzOwR2gCX8vv+gB3r+5MheobA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-2.0.1.tgz", + "integrity": "sha512-SAlNE8iclFmzrKtx3/C2GivXYx6nPzx4MgQV01QG/a4LpnLbwlxzdZu3rqQ2swp4NNWT/t/GT7Y+7gfhyVa7mg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.22.0", - "@module-federation/dts-plugin": "0.22.0", - "@module-federation/inject-external-runtime-core-plugin": "0.22.0", - "@module-federation/managers": "0.22.0", - "@module-federation/manifest": "0.22.0", - "@module-federation/runtime-tools": "0.22.0", - "@module-federation/sdk": "0.22.0", + "@module-federation/bridge-react-webpack-plugin": "2.0.1", + "@module-federation/dts-plugin": "2.0.1", + "@module-federation/inject-external-runtime-core-plugin": "2.0.1", + "@module-federation/managers": "2.0.1", + "@module-federation/manifest": "2.0.1", + "@module-federation/runtime-tools": "2.0.1", + "@module-federation/sdk": "2.0.1", "btoa": "1.2.1" }, "peerDependencies": { - "@rspack/core": ">=0.7", + "@rspack/core": "^0.7.0 || ^1.0.0 || ^2.0.0-0", "typescript": "^4.9.0 || ^5.0.0", "vue-tsc": ">=1.0.24" }, @@ -8469,50 +8492,50 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/runtime": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz", - "integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.0.1.tgz", + "integrity": "sha512-UQ72P5Oo40dS6vdhHetwTtIsbGciEr+bjoYvDgh1WLPfFlTYd8zo9cLfqaf3juuPfV3cMVARAVPmh16lQYpUGA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.22.0", - "@module-federation/runtime-core": "0.22.0", - "@module-federation/sdk": "0.22.0" + "@module-federation/error-codes": "2.0.1", + "@module-federation/runtime-core": "2.0.1", + "@module-federation/sdk": "2.0.1" } }, "node_modules/@module-federation/node/node_modules/@module-federation/runtime-core": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz", - "integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-2.0.1.tgz", + "integrity": "sha512-gOuCPSHoQGUGwlxfSTMInFX+QvLxdEWegGGMiLdU5vqbXuva4E9M+kXBBO7/0MkcBPMmVs0wOJGm0XOLeV2f1Q==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.22.0", - "@module-federation/sdk": "0.22.0" + "@module-federation/error-codes": "2.0.1", + "@module-federation/sdk": "2.0.1" } }, "node_modules/@module-federation/node/node_modules/@module-federation/runtime-tools": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz", - "integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-2.0.1.tgz", + "integrity": "sha512-AStdwBtsGB3jIfDg9oP+KyVPsimdaeHsP855gqCxDp1hi2+GKjlZWZx9ThkS8NytVSXSUysxqoUL1ivDoKgcCQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.22.0", - "@module-federation/webpack-bundler-runtime": "0.22.0" + "@module-federation/runtime": "2.0.1", + "@module-federation/webpack-bundler-runtime": "2.0.1" } }, "node_modules/@module-federation/node/node_modules/@module-federation/sdk": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz", - "integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.0.1.tgz", + "integrity": "sha512-32PwudojGjog51cwpTali7D6ud82oVgsyvOx9JjAzhvXBX96YI4mRsursuWcthDxmigJP9ZvUTXDuRUEDh1OQA==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/node/node_modules/@module-federation/third-party-dts-extractor": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.22.0.tgz", - "integrity": "sha512-3y2DZdeEjArNKDqA1Ds32Q6A5RATcsmywCXyQaWcfaScprpmzfEWiDkeD/nzoA/0+4ePY8OEinJ4hLtoMNLbLQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.0.1.tgz", + "integrity": "sha512-neKSr6FNUeGRh+YR57l/QZUzPytJXuJx+babF7j5iGJG3FP+kfizr6QD0hgVis5KEoXMVbQ8yyvG0slERizeyw==", "dev": true, "license": "MIT", "dependencies": { @@ -8522,14 +8545,14 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz", - "integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-2.0.1.tgz", + "integrity": "sha512-u1NId3SF4lHDTmD2CHFEszulmXmIq1TGw9JYvnLx5rKJL7xt3aNxcb1GvkaYbRNVBXhSMjJ75E5LsQlZzyBx9A==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.22.0", - "@module-federation/sdk": "0.22.0" + "@module-federation/runtime": "2.0.1", + "@module-federation/sdk": "2.0.1" } }, "node_modules/@module-federation/node/node_modules/chalk": { @@ -11981,21 +12004,21 @@ } }, "node_modules/@nx/angular": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-22.3.3.tgz", - "integrity": "sha512-XE1grDPwpHySUSDMjgzgyjk/k6WjwooBXl19uilUR4solAPzlrz46qdyjzAPpEhvNAk0YsXflewgPebyuX5P2w==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-22.5.2.tgz", + "integrity": "sha512-wZkLpwp92lar65AkaxOC08VrSEFmfzIs+Ru/bOphEGXsRAgYyXNBPxVYbo/mNpIkJPhDXZo7BLFreH9mZ0r8IQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.3.3", - "@nx/eslint": "22.3.3", - "@nx/js": "22.3.3", - "@nx/module-federation": "22.3.3", - "@nx/rspack": "22.3.3", - "@nx/web": "22.3.3", - "@nx/webpack": "22.3.3", - "@nx/workspace": "22.3.3", - "@phenomnomnominal/tsquery": "~5.0.1", + "@nx/devkit": "22.5.2", + "@nx/eslint": "22.5.2", + "@nx/js": "22.5.2", + "@nx/module-federation": "22.5.2", + "@nx/rspack": "22.5.2", + "@nx/web": "22.5.2", + "@nx/webpack": "22.5.2", + "@nx/workspace": "22.5.2", + "@phenomnomnominal/tsquery": "~6.1.4", "@typescript-eslint/type-utils": "^8.0.0", "enquirer": "~2.3.6", "magic-string": "~0.30.2", @@ -12026,6 +12049,20 @@ } } }, + "node_modules/@nx/angular/node_modules/@phenomnomnominal/tsquery": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", + "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/esquery": "^1.5.0", + "esquery": "^1.5.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, "node_modules/@nx/angular/node_modules/picomatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", @@ -12055,16 +12092,16 @@ } }, "node_modules/@nx/devkit": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.3.3.tgz", - "integrity": "sha512-/hxcdhE+QDalsWEbJurHtZh9aY27taHeImbCVJnogwv85H3RbAE+0YuKXGInutfLszAs7phwzli71yq+d2P45Q==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.5.2.tgz", + "integrity": "sha512-5JuCMlU6AwXBKCoMWp1hTyTzjfB5vXL5khmoziZPmnaIBg+gX0Hp13YhWfO1C6/HuXS+i4mor7dtFHukPKWemQ==", "dev": true, "license": "MIT", "dependencies": { "@zkochan/js-yaml": "0.0.7", "ejs": "^3.1.7", "enquirer": "~2.3.6", - "minimatch": "9.0.3", + "minimatch": "10.1.1", "semver": "^7.6.3", "tslib": "^2.3.0", "yargs-parser": "21.1.1" @@ -12073,15 +12110,31 @@ "nx": ">= 21 <= 23 || ^22.0.0-0" } }, + "node_modules/@nx/devkit/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nx/eslint": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-22.3.3.tgz", - "integrity": "sha512-iG/LvrYf2CFAm2A0kfmRU4VeCTAN5PjUw8xc6oD1zfQ/KTmE/gFG2P1aJBo2mTIyzk9k8ZI0dqIhPLdl/AAtxg==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-22.5.2.tgz", + "integrity": "sha512-TDMaZzqJNZYB+6dOtzUPWBJHR5IrV0+i8k5domvHB+kPkynrIvgg8Ys5vRQ4p7j80p7L+KJhR9RgZ04llQ99Lw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.3.3", - "@nx/js": "22.3.3", + "@nx/devkit": "22.5.2", + "@nx/js": "22.5.2", "semver": "^7.6.3", "tslib": "^2.3.0", "typescript": "~5.9.2" @@ -12097,15 +12150,15 @@ } }, "node_modules/@nx/eslint-plugin": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-22.3.3.tgz", - "integrity": "sha512-UGAqvYUlKGupBUsO9ppEzYkai1VrrFrUkzHPOVUu5JM4zYGN30ruoO+j3K5OXu5jQLGCmOVfAQD3jzqT2balmw==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-22.5.2.tgz", + "integrity": "sha512-B3Vgfy3H7/NLZOBkYaAogli77MDG1JWuBo+v20Vuh1OFeqqaqZeaRnZ6ax2xtUJxt1bCIa2KtgF01i/zoTccDQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.3.3", - "@nx/js": "22.3.3", - "@phenomnomnominal/tsquery": "~5.0.1", + "@nx/devkit": "22.5.2", + "@nx/js": "22.5.2", + "@phenomnomnominal/tsquery": "~6.1.4", "@typescript-eslint/type-utils": "^8.0.0", "@typescript-eslint/utils": "^8.0.0", "chalk": "^4.1.0", @@ -12125,6 +12178,20 @@ } } }, + "node_modules/@nx/eslint-plugin/node_modules/@phenomnomnominal/tsquery": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", + "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/esquery": "^1.5.0", + "esquery": "^1.5.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { "version": "8.56.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", @@ -12337,22 +12404,22 @@ } }, "node_modules/@nx/jest": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-22.3.3.tgz", - "integrity": "sha512-BC+5E6oAM6h9x67UCtpsapfLRTwqVLtoG39f5tVZNVZ4a1spdMh0tPHRPtu2hSlsHHtaYsmTvjz5L+N7UguAtA==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-22.5.2.tgz", + "integrity": "sha512-v1/LiwtfBjpmZmMf/4lM+fwxoLwElfS6YI6VgPZV+yO/UDHtuRmccwVOnyrnVmREv/dhIQFPqcko7d1KdDc2yw==", "dev": true, "license": "MIT", "dependencies": { "@jest/reporters": "^30.0.2", "@jest/test-result": "^30.0.2", - "@nx/devkit": "22.3.3", - "@nx/js": "22.3.3", - "@phenomnomnominal/tsquery": "~5.0.1", + "@nx/devkit": "22.5.2", + "@nx/js": "22.5.2", + "@phenomnomnominal/tsquery": "~6.1.4", "identity-obj-proxy": "3.0.0", "jest-config": "^30.0.2", "jest-resolve": "^30.0.2", "jest-util": "^30.0.2", - "minimatch": "9.0.3", + "minimatch": "10.1.1", "picocolors": "^1.1.0", "resolve.exports": "2.0.3", "semver": "^7.6.3", @@ -12604,6 +12671,20 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/@nx/jest/node_modules/@phenomnomnominal/tsquery": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", + "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/esquery": "^1.5.0", + "esquery": "^1.5.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, "node_modules/@nx/jest/node_modules/@sinclair/typebox": { "version": "0.34.47", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", @@ -13213,6 +13294,22 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/@nx/jest/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nx/jest/node_modules/pretty-format": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", @@ -13304,9 +13401,9 @@ } }, "node_modules/@nx/js": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-22.3.3.tgz", - "integrity": "sha512-L3MOb8cLc2TIg2R3hGC9FLlcuVqlqST/fztmOihw9wS3lo52E4v2gP/BpYGfRh/u9r6Ekm6LF03Or+VwYzPuzA==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-22.5.2.tgz", + "integrity": "sha512-7FO+EYdYgR3tOY0h584jiVw8s4GVoqKZMMXldF7LciTSNS4aApO4Lz79B6gKnR4QGHExcRX/FBd0mznioXCNCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13317,8 +13414,8 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nx/devkit": "22.3.3", - "@nx/workspace": "22.3.3", + "@nx/devkit": "22.5.2", + "@nx/workspace": "22.5.2", "@zkochan/js-yaml": "0.0.7", "babel-plugin-const-enum": "^1.0.1", "babel-plugin-macros": "^3.1.0", @@ -13388,19 +13485,19 @@ } }, "node_modules/@nx/module-federation": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-22.3.3.tgz", - "integrity": "sha512-bo0qsW0hDhuyS/WnHQ1nndHcd7VeuMS3bxCwPJkPm8+qsVhWT88GO9WoYnlvdpx/LfTT/N6k1AOVOKAygRuUNQ==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-22.5.2.tgz", + "integrity": "sha512-it7Jziku9fhBpO2LOI/pyzo6ls0j36Ma11aOQieM9z2RnxYOJjuKKT7ltBJYPf/L1iIO6J9jxI+QsPwtG03USw==", "dev": true, "license": "MIT", "dependencies": { "@module-federation/enhanced": "^0.21.2", "@module-federation/node": "^2.7.21", "@module-federation/sdk": "^0.21.2", - "@nx/devkit": "22.3.3", - "@nx/js": "22.3.3", - "@nx/web": "22.3.3", - "@rspack/core": "^1.5.2", + "@nx/devkit": "22.5.2", + "@nx/js": "22.5.2", + "@nx/web": "22.5.2", + "@rspack/core": "1.6.8", "express": "^4.21.2", "http-proxy-middleware": "^3.0.5", "picocolors": "^1.1.0", @@ -13713,9 +13810,9 @@ } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.3.3.tgz", - "integrity": "sha512-zBAGFGLal09CxhQkdMpOVwcwa9Y01aFm88jTTn35s/DdIWsfngmPzz0t4mG7u2D05q7TJfGQ31pIf5GkNUjo6g==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.2.tgz", + "integrity": "sha512-CPtgK/s4FQ0Y/6WmHpJccOTANve5UjlFajLp+S8Z538zHdc5a5MjJBcXo9oRzKNvhTHoGijr/fCMU2erMrYYtg==", "cpu": [ "arm64" ], @@ -13727,9 +13824,9 @@ ] }, "node_modules/@nx/nx-darwin-x64": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.3.3.tgz", - "integrity": "sha512-6ZQ6rMqH8NY4Jz+Gc89D5bIH2NxZb5S/vaA4yJ9RrqAfl4QWchNFD5na+aRivSd+UdsYLPKKl6qohet5SE6vOg==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.5.2.tgz", + "integrity": "sha512-YuFGIpmtMPbMM3QchJttlLFE5oNenE+3mRCWcMNrXPOixsw28flvYWhFcHE3CPV8q/E+Yg0FsOG+8u1p7eEgWg==", "cpu": [ "x64" ], @@ -13741,9 +13838,9 @@ ] }, "node_modules/@nx/nx-freebsd-x64": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.3.3.tgz", - "integrity": "sha512-J/PP5pIOQtR7ZzrFwP6d6h0yfY7r9EravG2m940GsgzGbtZGYIDqnh5Wdt+4uBWPH8VpdNOwFqH0afELtJA3MA==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.5.2.tgz", + "integrity": "sha512-Oy3jejPB7lszxAf4rdTpJfOBVgAUtkUZJCLTdGdnpveF/m3s9MN9DaeEXgUs0mMp1qV3Y0KE3KcVHqII54AoBQ==", "cpu": [ "x64" ], @@ -13755,9 +13852,9 @@ ] }, "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.3.3.tgz", - "integrity": "sha512-/zn0altzM15S7qAgXMaB41vHkEn18HyTVUvRrjmmwaVqk9WfmDmqOQlGWoJ6XCbpvKQ8bh14RyhR9LGw1JJkNA==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.5.2.tgz", + "integrity": "sha512-38bZGStG6bZ+R7ZbGxvnDVjVrV6bRTsiX8rr3fmM/AkEfvgyhWgE3R+xqUHoJVM4PK0I2YlYoSjIny4gFeOBxQ==", "cpu": [ "arm" ], @@ -13769,9 +13866,9 @@ ] }, "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.3.3.tgz", - "integrity": "sha512-NmPeCexWIZHW9RM3lDdFENN9C3WtlQ5L4RSNFESIjreS921rgePhulsszYdGnHdcnKPYlBBJnX/NxVsfioBbnQ==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.5.2.tgz", + "integrity": "sha512-D+tPXB0tkSuDPsuXvyQIsF3f3PBWfAwIe9FkBWtVoDVYqE+jbz+tVGsjQMNWGafLE4sC8ZQdjhsxyT8I53Anbw==", "cpu": [ "arm64" ], @@ -13783,9 +13880,9 @@ ] }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.3.3.tgz", - "integrity": "sha512-K02U88Q0dpvCfmSXXvY7KbYQSa1m+mkYeqDBRHp11yHk1GoIqaHp8oEWda7FV4gsriNExPSS5tX1/QGVoLZrCw==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.5.2.tgz", + "integrity": "sha512-UbO527qqa8KLBi13uXto5SmxcZv1Smer7sPexJonshDlmrJsyvx5m8nm6tcSv04W5yQEL90vPlTux8dNvEDWrw==", "cpu": [ "arm64" ], @@ -13797,9 +13894,9 @@ ] }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.3.3.tgz", - "integrity": "sha512-04TEbvgwRaB9ifr39YwJmWh3RuXb4Ry4m84SOJyjNXAfPrepcWgfIQn1VL2ul1Ybq+P023dLO9ME8uqFh6j1YQ==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.5.2.tgz", + "integrity": "sha512-wR6596Vr/Z+blUAmjLHG2TCQMs4O1oi9JXK1J/PoPeO9UqdHwStCJBAd61zDFSUYJe0x+dkeRQu96fE5BW8Kcg==", "cpu": [ "x64" ], @@ -13811,9 +13908,9 @@ ] }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.3.3.tgz", - "integrity": "sha512-uxBXx5q+S5OGatbYDxnamsKXRKlYn+Eq1nrCAHaf8rIfRoHlDiRV2PqtWuF+O2pxR5FWKpvr+/sZtt9rAf7KMw==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.5.2.tgz", + "integrity": "sha512-MBXOw4AH4FWl4orwVykj/e75awTNDePogrl3pXNX9NcQLdj6JzS4e2jaALQeRBQLxQzeFvFQV/W4PBzoPV6/NA==", "cpu": [ "x64" ], @@ -13825,9 +13922,9 @@ ] }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.3.3.tgz", - "integrity": "sha512-aOwlfD6ZA1K6hjZtbhBSp7s1yi3sHbMpLCa4stXzfhCCpKUv46HU/EdiWdE1N8AsyNFemPZFq81k1VTowcACdg==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.5.2.tgz", + "integrity": "sha512-SaWSZkRH5uV8vP2lj6RRv+kw2IzaIDXkutReOXpooshIWZl9KjrQELNTCZTYyhLDsMlcyhSvLFlTiA4NkZ8udw==", "cpu": [ "arm64" ], @@ -13839,9 +13936,9 @@ ] }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.3.3.tgz", - "integrity": "sha512-EDR8BtqeDvVNQ+kPwnfeSfmerYetitU3tDkxOMIybjKJDh69U2JwTB8n9ARwNaZQbNk7sCGNRUSZFTbAAUKvuQ==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.2.tgz", + "integrity": "sha512-IK9Xd5Gh9ys4oun5ko8Uv8AEi2byN2FPXBsR1BLkt93SJ0bJVTdXGyEA+fWmEclLZIM0PiZj1KbCajVn9NEPtw==", "cpu": [ "x64" ], @@ -13853,30 +13950,43 @@ ] }, "node_modules/@nx/react": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/react/-/react-22.3.3.tgz", - "integrity": "sha512-rbnI34j2UwvS8K5I6KS1IkndYI5psRV+jV7+NfVhfBpDLzEW4NU7WB1IVuK7t1grrLKFfTs7GKw5cTSX33hnNg==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/react/-/react-22.5.2.tgz", + "integrity": "sha512-kqWcn4+gJc1rnk1YKBpDXFN3QZOpyblO0F9WXDAyKPqvuXVvhl/ILoTzLOK631hOe5K8Oq3rIvt9s5WnyyXHvQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.3.3", - "@nx/eslint": "22.3.3", - "@nx/js": "22.3.3", - "@nx/module-federation": "22.3.3", - "@nx/rollup": "22.3.3", - "@nx/web": "22.3.3", - "@phenomnomnominal/tsquery": "~5.0.1", + "@nx/devkit": "22.5.2", + "@nx/eslint": "22.5.2", + "@nx/js": "22.5.2", + "@nx/module-federation": "22.5.2", + "@nx/rollup": "22.5.2", + "@nx/web": "22.5.2", + "@phenomnomnominal/tsquery": "~6.1.4", "@svgr/webpack": "^8.0.1", "express": "^4.21.2", - "file-loader": "^6.2.0", "http-proxy-middleware": "^3.0.5", - "minimatch": "9.0.3", + "minimatch": "10.1.1", "picocolors": "^1.1.0", "semver": "^7.6.3", "tslib": "^2.3.0" }, "optionalDependencies": { - "@nx/vite": "22.3.3" + "@nx/vite": "22.5.2" + } + }, + "node_modules/@nx/react/node_modules/@phenomnomnominal/tsquery": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", + "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/esquery": "^1.5.0", + "esquery": "^1.5.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" } }, "node_modules/@nx/react/node_modules/accepts": { @@ -14105,6 +14215,22 @@ "node": ">= 0.6" } }, + "node_modules/@nx/react/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nx/react/node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -14245,14 +14371,14 @@ } }, "node_modules/@nx/rollup": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/rollup/-/rollup-22.3.3.tgz", - "integrity": "sha512-BJdOHx0CcZ6YMvn7quKTfh9C/X7X9s1e2XAZv+LC2vxiRdxN80w4cq04yZE8i5PPpQNC6SG3OWIG6eDlkJhw5A==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/rollup/-/rollup-22.5.2.tgz", + "integrity": "sha512-alkeW9nWgUKJH6RDAerqfMjsxGpJXgBlpWv5+KYAoU+HQncXkZhldPlGNCKGV5W1HcEdTYFlr+MbqsihQO65NQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.3.3", - "@nx/js": "22.3.3", + "@nx/devkit": "22.5.2", + "@nx/js": "22.5.2", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-image": "^3.0.3", @@ -14260,11 +14386,12 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-typescript": "^12.1.0", "autoprefixer": "^10.4.9", + "concat-with-sourcemaps": "^1.1.0", "picocolors": "^1.1.0", "picomatch": "4.0.2", "postcss": "^8.4.38", + "postcss-modules": "^6.0.1", "rollup": "^4.14.0", - "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-typescript2": "^0.36.0", "tslib": "^2.3.0" } @@ -14283,18 +14410,18 @@ } }, "node_modules/@nx/rspack": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-22.3.3.tgz", - "integrity": "sha512-5GDYYeUctJTzWX3DYSvVQvbK+GMB9PX9m4FmjNRCaxVGWZAe1LM7oQz61vj501m+CbkXxh1+hsVTPXzYOtTolQ==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-22.5.2.tgz", + "integrity": "sha512-SDN4flb71lbpCAd1ym2bWccH/jOp/bZ46a3Jn5cbsDLfagWKmcXDKrYGblOC4/ZulkaNiOEi7EZF47hWvpZvfw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.3.3", - "@nx/js": "22.3.3", - "@nx/module-federation": "22.3.3", - "@nx/web": "22.3.3", - "@phenomnomnominal/tsquery": "~5.0.1", - "@rspack/core": "^1.5.2", + "@nx/devkit": "22.5.2", + "@nx/js": "22.5.2", + "@nx/module-federation": "22.5.2", + "@nx/web": "22.5.2", + "@phenomnomnominal/tsquery": "~6.1.4", + "@rspack/core": "1.6.8", "@rspack/dev-server": "^1.1.4", "@rspack/plugin-react-refresh": "^1.0.0", "autoprefixer": "^10.4.9", @@ -14326,6 +14453,20 @@ "@module-federation/node": "^2.7.21" } }, + "node_modules/@nx/rspack/node_modules/@phenomnomnominal/tsquery": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", + "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/esquery": "^1.5.0", + "esquery": "^1.5.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, "node_modules/@nx/rspack/node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -14700,16 +14841,16 @@ } }, "node_modules/@nx/vite": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/vite/-/vite-22.3.3.tgz", - "integrity": "sha512-JYtQeKJVID6Am65M1gDxCBLyO7pA6p/dBxnQyWEHsbJ5VLiOyCxr+W+YOE4p4roVlQxjAaCMqvtGH3cWnNQWxg==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/vite/-/vite-22.5.2.tgz", + "integrity": "sha512-E3zTMLfY203lW8RxH+j3U4mR9btSVwWw3mY8XslND0Png1AliZ4fH638moH/eRsJvWS454oSYp86m3FlouSkqA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.3.3", - "@nx/js": "22.3.3", - "@nx/vitest": "22.3.3", - "@phenomnomnominal/tsquery": "~5.0.1", + "@nx/devkit": "22.5.2", + "@nx/js": "22.5.2", + "@nx/vitest": "22.5.2", + "@phenomnomnominal/tsquery": "~6.1.4", "ajv": "^8.0.0", "enquirer": "~2.3.6", "picomatch": "4.0.2", @@ -14722,6 +14863,20 @@ "vitest": "^1.3.1 || ^2.0.0 || ^3.0.0 || ^4.0.0" } }, + "node_modules/@nx/vite/node_modules/@phenomnomnominal/tsquery": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", + "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/esquery": "^1.5.0", + "esquery": "^1.5.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, "node_modules/@nx/vite/node_modules/picomatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", @@ -14736,15 +14891,15 @@ } }, "node_modules/@nx/vitest": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/vitest/-/vitest-22.3.3.tgz", - "integrity": "sha512-9BNwWadIfT5EAnEPXLM0n/ucuJ7IQyn+QRMUkUBt6wmms9f0OKMtLpiFxHIMrnQDf0eEk845jo21j7Og2cCZyA==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/vitest/-/vitest-22.5.2.tgz", + "integrity": "sha512-hKtKB5BInOwub7+3QOolZZvqv89pkaU2+CbN0iD3Wk2BzTfGY/dlcTvvgcEUDRCTMDn7G+G30cyq+nbz6Z+R6A==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.3.3", - "@nx/js": "22.3.3", - "@phenomnomnominal/tsquery": "~5.0.1", + "@nx/devkit": "22.5.2", + "@nx/js": "22.5.2", + "@phenomnomnominal/tsquery": "~6.1.4", "semver": "^7.6.3", "tslib": "^2.3.0" }, @@ -14761,15 +14916,29 @@ } } }, + "node_modules/@nx/vitest/node_modules/@phenomnomnominal/tsquery": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", + "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/esquery": "^1.5.0", + "esquery": "^1.5.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, "node_modules/@nx/web": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-22.3.3.tgz", - "integrity": "sha512-0iuAxXCljxCAfQ5N4SffMuf0CuUFGJoO5nzOTqnZ60pRy+JIWZ+DXfh7bfHxTEcE3JQ6nT/hbZVLPMVNleoy7Q==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-22.5.2.tgz", + "integrity": "sha512-UAK03jaLHy4VqLnQnpXqC9CCGIToXWQIPmMIQiSqi6GOf/fZIzHrfu0ssVfs4nh7jyFt0SeWV00UoVHnH3K65g==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.3.3", - "@nx/js": "22.3.3", + "@nx/devkit": "22.5.2", + "@nx/js": "22.5.2", "detect-port": "^1.5.1", "http-server": "^14.1.0", "picocolors": "^1.1.0", @@ -14777,16 +14946,16 @@ } }, "node_modules/@nx/webpack": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-22.3.3.tgz", - "integrity": "sha512-Ga8KuMoTl7fVvOEMPk+l/+C//IHwbLeCyhBx4+9xsB6o+TqvB/P7M5S70VRB+BIpf9JRgO7KU6ZfabAUkDMqTA==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-22.5.2.tgz", + "integrity": "sha512-peGSgQuvsi3ypMZaCXCv0P/dExfVCulMrWi65IKggZSWmJAskREI8PlCQliAxNF340er50XrKD83HHkOB2Lc8A==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", - "@nx/devkit": "22.3.3", - "@nx/js": "22.3.3", - "@phenomnomnominal/tsquery": "~5.0.1", + "@nx/devkit": "22.5.2", + "@nx/js": "22.5.2", + "@phenomnomnominal/tsquery": "~6.1.4", "ajv": "^8.12.0", "autoprefixer": "^10.4.9", "babel-loader": "^9.1.2", @@ -14821,6 +14990,20 @@ "webpack-subresource-integrity": "^5.1.0" } }, + "node_modules/@nx/webpack/node_modules/@phenomnomnominal/tsquery": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", + "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/esquery": "^1.5.0", + "esquery": "^1.5.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, "node_modules/@nx/webpack/node_modules/array-union": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", @@ -15172,17 +15355,17 @@ } }, "node_modules/@nx/workspace": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-22.3.3.tgz", - "integrity": "sha512-A7Qd1Yi/hp/VPvig6tV+JmlYVSA4WhckNkP1giYZoESpGLxRlpwINpd5ii3oafOlglUdEZ8AiS3X+RUg9QmCAQ==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-22.5.2.tgz", + "integrity": "sha512-XImJ2NhUXo/bgNkuF1NAdYJjSzhN/iXZYSdhSREPN6Bh/thhloAQfpOrgFkxgxgNZv3RvldnnYNmGeKqMEW2jg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.3.3", + "@nx/devkit": "22.5.2", "@zkochan/js-yaml": "0.0.7", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "22.3.3", + "nx": "22.5.2", "picomatch": "4.0.2", "semver": "^7.6.3", "tslib": "^2.3.0", @@ -15364,6 +15547,306 @@ "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", "license": "MIT" }, + "node_modules/@oxc-resolver/binding-android-arm-eabi": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.18.0.tgz", + "integrity": "sha512-EhwJNzbfLwQQIeyak3n08EB3UHknMnjy1dFyL98r3xlorje2uzHOT2vkB5nB1zqtTtzT31uSot3oGZFfODbGUg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@oxc-resolver/binding-android-arm64": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.18.0.tgz", + "integrity": "sha512-esOPsT9S9B6vEMMp1qR9Yz5UepQXljoWRJYoyp7GV/4SYQOSTpN0+V2fTruxbMmzqLK+fjCEU2x3SVhc96LQLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@oxc-resolver/binding-darwin-arm64": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.18.0.tgz", + "integrity": "sha512-iJknScn8fRLRhGR6VHG31bzOoyLihSDmsJHRjHwRUL0yF1MkLlvzmZ+liKl9MGl+WZkZHaOFT5T1jNlLSWTowQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxc-resolver/binding-darwin-x64": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.18.0.tgz", + "integrity": "sha512-3rMweF2GQLzkaUoWgFKy1fRtk0dpj4JDqucoZLJN9IZG+TC+RZg7QMwG5WKMvmEjzdYmOTw1L1XqZDVXF2ksaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxc-resolver/binding-freebsd-x64": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.18.0.tgz", + "integrity": "sha512-TfXsFby4QvpGwmUP66+X+XXQsycddZe9ZUUu/vHhq2XGI1EkparCSzjpYW1Nz5fFncbI5oLymQLln/qR+qxyOw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.18.0.tgz", + "integrity": "sha512-WolOILquy9DJsHcfFMHeA5EjTCI9A7JoERFJru4UI2zKZcnfNPo5GApzYwiloscEp/s+fALPmyRntswUns0qHg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.18.0.tgz", + "integrity": "sha512-r+5nHJyPdiBqOGTYAFyuq5RtuAQbm4y69GYWNG/uup9Cqr7RG9Ak0YZgGEbkQsc+XBs00ougu/D1+w3UAYIWHA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.18.0.tgz", + "integrity": "sha512-bUzg6QxljqMLLwsxYajAQEHW1LYRLdKOg/aykt14PSqUUOmfnOJjPdSLTiHIZCluVzPCQxv1LjoyRcoTAXfQaQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm64-musl": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.18.0.tgz", + "integrity": "sha512-l43GVwls5+YR8WXOIez5x7Pp/MfhdkMOZOOjFUSWC/9qMnSLX1kd95j9oxDrkWdD321JdHTyd4eau5KQPxZM9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.18.0.tgz", + "integrity": "sha512-ayj7TweYWi/azxWmRpUZGz41kKNvfkXam20UrFhaQDrSNGNqefQRODxhJn0iv6jt4qChh7TUxDIoavR6ftRsjw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.18.0.tgz", + "integrity": "sha512-2Jz7jpq6BBNlBBup3usZB6sZWEZOBbjWn++/bKC2lpAT+sTEwdTonnf3rNcb+XY7+v53jYB9pM8LEKVXZfr8BA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.18.0.tgz", + "integrity": "sha512-omw8/ISOc6ubR247iEMma4/JRfbY2I+nGJC59oKBhCIEZoyqEg/NmDSBc4ToMH+AsZDucqQUDOCku3k7pBiEag==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.18.0.tgz", + "integrity": "sha512-uFipBXaS+honSL5r5G/rlvVrkffUjpKwD3S/aIiwp64bylK3+RztgV+mM1blk+OT5gBRG864auhH6jCfrOo3ZA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-x64-gnu": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.18.0.tgz", + "integrity": "sha512-bY4uMIoKRv8Ine3UiKLFPWRZ+fPCDamTHZFf5pNOjlfmTJIANtJo0mzWDUdFZLYhVgQdegrDL9etZbTMR8qieg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-x64-musl": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.18.0.tgz", + "integrity": "sha512-40IicL/aitfNOWur06x7Do41WcqFJ9VUNAciFjZCXzF6wR2i6uVsi6N19ecqgSRoLYFCAoRYi9F50QteIxCwKQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-openharmony-arm64": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.18.0.tgz", + "integrity": "sha512-DJIzYjUnSJtz4Trs/J9TnzivtPcUKn9AeL3YjHlM5+RvK27ZL9xISs3gg2VAo2nWU7ThuadC1jSYkWaZyONMwg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@oxc-resolver/binding-wasm32-wasi": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.18.0.tgz", + "integrity": "sha512-57+R8Ioqc8g9k80WovoupOoyIOfLEceHTizkUcwOXspXLhiZ67ScM7Q8OuvhDoRRSZzH6yI0qML3WZwMFR3s7g==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.18.0.tgz", + "integrity": "sha512-t9Oa4BPptJqVlHTT1cV1frs+LY/vjsKhHI6ltj2EwoGM1TykJ0WW43UlQaU4SC8N+oTY8JRbAywVMNkfqjSu9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.18.0.tgz", + "integrity": "sha512-4maf/f6ea5IEtIXqGwSw38srRtVHTre9iKShG4gjzat7c3Iq6B1OppXMj8gNmTuM4n8Xh1hQM9z2hBELccJr1g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxc-resolver/binding-win32-x64-msvc": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.18.0.tgz", + "integrity": "sha512-EhW8Su3AEACSw5HfzKMmyCtV0oArNrVViPdeOfvVYL9TrkL+/4c8fWHFTBtxUMUyCjhSG5xYNdwty1D/TAgL0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -16265,28 +16748,28 @@ } }, "node_modules/@rspack/binding": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.1.tgz", - "integrity": "sha512-qVTV1/UWpMSZktvK5A8+HolgR1Qf0nYR3Gg4Vax5x3/BcHDpwGZ0fbdFRUirGVWH/XwxZ81zoI6F2SZq7xbX+w==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.6.8.tgz", + "integrity": "sha512-lUeL4mbwGo+nqRKqFDCm9vH2jv9FNMVt1X8jqayWRcOCPlj/2UVMEFgqjR7Pp2vlvnTKq//31KbDBJmDZq31RQ==", "dev": true, "license": "MIT", "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.7.1", - "@rspack/binding-darwin-x64": "1.7.1", - "@rspack/binding-linux-arm64-gnu": "1.7.1", - "@rspack/binding-linux-arm64-musl": "1.7.1", - "@rspack/binding-linux-x64-gnu": "1.7.1", - "@rspack/binding-linux-x64-musl": "1.7.1", - "@rspack/binding-wasm32-wasi": "1.7.1", - "@rspack/binding-win32-arm64-msvc": "1.7.1", - "@rspack/binding-win32-ia32-msvc": "1.7.1", - "@rspack/binding-win32-x64-msvc": "1.7.1" + "@rspack/binding-darwin-arm64": "1.6.8", + "@rspack/binding-darwin-x64": "1.6.8", + "@rspack/binding-linux-arm64-gnu": "1.6.8", + "@rspack/binding-linux-arm64-musl": "1.6.8", + "@rspack/binding-linux-x64-gnu": "1.6.8", + "@rspack/binding-linux-x64-musl": "1.6.8", + "@rspack/binding-wasm32-wasi": "1.6.8", + "@rspack/binding-win32-arm64-msvc": "1.6.8", + "@rspack/binding-win32-ia32-msvc": "1.6.8", + "@rspack/binding-win32-x64-msvc": "1.6.8" } }, "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.1.tgz", - "integrity": "sha512-3C0w0kfCHfgOH+AP/Dx1bm/b3AR/or5CmU22Abevek0m95ndU3iT902eLcm9JNiMQnDQLBQbolfj5P591t0oPg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.6.8.tgz", + "integrity": "sha512-e8CTQtzaeGnf+BIzR7wRMUwKfIg0jd/sxMRc1Vd0bCMHBhSN9EsGoMuJJaKeRrSmy2nwMCNWHIG+TvT1CEKg+A==", "cpu": [ "arm64" ], @@ -16298,9 +16781,9 @@ ] }, "node_modules/@rspack/binding-darwin-x64": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.1.tgz", - "integrity": "sha512-HTrBpdw2gWwcpJ3c8h4JF8B1YRNvrFT+K620ycttrlu/HvI4/U770BBJ/ej36R/hdh59JvMCGe+w49FyXv6rzg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.6.8.tgz", + "integrity": "sha512-ku1XpTEPt6Za11zhpFWhfwrTQogcgi9RJrOUVC4FESiPO9aKyd4hJ+JiPgLY0MZOqsptK6vEAgOip+uDVXrCpg==", "cpu": [ "x64" ], @@ -16312,9 +16795,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.1.tgz", - "integrity": "sha512-BX9yAPCO0WBFyOzKl9bSXT/cH27nnOJp02smIQMxfv7RNfwGkJg5GgakYcuYG+9U1HEFitBSzmwS2+dxDcAxlg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.6.8.tgz", + "integrity": "sha512-fvZX6xZPvBT8qipSpvkKMX5M7yd2BSpZNCZXcefw6gA3uC7LI3gu+er0LrDXY1PtPzVuHTyDx+abwWpagV3PiQ==", "cpu": [ "arm64" ], @@ -16326,9 +16809,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.1.tgz", - "integrity": "sha512-maBX19XyiVkxzh/NA79ALetCobc4zUyoWkWLeCGyW5xKzhPVFatJp+qCiHqHkqUZcgRo+1i5ihoZ2bXmelIeZg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.6.8.tgz", + "integrity": "sha512-++XMKcMNrt59HcFBLnRaJcn70k3X0GwkAegZBVpel8xYIAgvoXT5+L8P1ExId/yTFxqedaz8DbcxQnNmMozviw==", "cpu": [ "arm64" ], @@ -16340,9 +16823,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.1.tgz", - "integrity": "sha512-8KJAeBLiWcN7zEc9aaS7LRJPZVtZuQU8mCsn+fRhdQDSc+a9FcTN8b6Lw29z8cejwbU6Gxr/8wk5XGexMWFaZA==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.6.8.tgz", + "integrity": "sha512-tv3BWkTE1TndfX+DsE1rSTg8fBevCxujNZ3MlfZ22Wfy9x1FMXTJlWG8VIOXmaaJ1wUHzv8S7cE2YUUJ2LuiCg==", "cpu": [ "x64" ], @@ -16354,9 +16837,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-musl": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.1.tgz", - "integrity": "sha512-Gn9x5vhKRELvSoZ3ZjquY8eWtCXur0OsYnZ2/ump8mofM6IDaL7Qqu3Hf4Kud31PDH0tfz0jWf9piX32HHPmgg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.6.8.tgz", + "integrity": "sha512-DCGgZ5/in1O3FjHWqXnDsncRy+48cMhfuUAAUyl0yDj1NpsZu9pP+xfGLvGcQTiYrVl7IH9Aojf1eShP/77WGA==", "cpu": [ "x64" ], @@ -16368,9 +16851,9 @@ ] }, "node_modules/@rspack/binding-wasm32-wasi": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.1.tgz", - "integrity": "sha512-2r9M5iVchmsFkp3sz7A5YnMm2TfpkB71LK3AoaRWKMfvf5oFky0GSGISYd2TCBASO+X2Qskaq+B24Szo8zH5FA==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.6.8.tgz", + "integrity": "sha512-VUwdhl/lI4m6o1OGCZ9JwtMjTV/yLY5VZTQdEPKb40JMTlmZ5MBlr5xk7ByaXXYHr6I+qnqEm73iMKQvg6iknw==", "cpu": [ "wasm32" ], @@ -16382,9 +16865,9 @@ } }, "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.1.tgz", - "integrity": "sha512-/WIHp982yqqqAuiz2WLtf1ofo9d1lHDGZJ7flxFllb1iMgnUeSRyX6stxEi11K3Rg6pQa7FdCZGKX/engyj2bw==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.6.8.tgz", + "integrity": "sha512-23YX7zlOZlub+nPGDBUzktb4D5D6ETUAluKjXEeHIZ9m7fSlEYBnGL66YE+3t1DHXGd0OqsdwlvrNGcyo6EXDQ==", "cpu": [ "arm64" ], @@ -16396,9 +16879,9 @@ ] }, "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.1.tgz", - "integrity": "sha512-Kpela29n+kDGGsss6q/3qTd6n9VW7TOQaiA7t1YLdCCl8qqcdKlz/vWjFMd2MqgcSGC/16PvChE4sgpUvryfCQ==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.6.8.tgz", + "integrity": "sha512-cFgRE3APxrY4AEdooVk2LtipwNNT/9mrnjdC5lVbsIsz+SxvGbZR231bxDJEqP15+RJOaD07FO1sIjINFqXMEg==", "cpu": [ "ia32" ], @@ -16410,9 +16893,9 @@ ] }, "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.1.tgz", - "integrity": "sha512-B/y4MWqP2Xeto1/HV0qtZNOMPSLrEVOqi2b7JSIXG/bhlf+3IAkDzEEoHs+ZikLR4C8hMaS0pVJsDGKFmGzC9A==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.6.8.tgz", + "integrity": "sha512-cIuhVsZYd3o3Neo1JSAhJYw6BDvlxaBoqvgwRkG1rs0ExFmEmgYyG7ip9pFKnKNWph/tmW3rDYypmEfjs1is7g==", "cpu": [ "x64" ], @@ -16424,14 +16907,14 @@ ] }, "node_modules/@rspack/core": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.1.tgz", - "integrity": "sha512-kRxfY8RRa6nU3/viDvAIP6CRpx+0rfXFRonPL0pHBx8u6HhV7m9rLEyaN6MWsLgNIAWkleFGb7tdo4ux2ljRJQ==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.6.8.tgz", + "integrity": "sha512-FolcIAH5FW4J2FET+qwjd1kNeFbCkd0VLuIHO0thyolEjaPSxw5qxG67DA7BZGm6PVcoiSgPLks1DL6eZ8c+fA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime-tools": "0.22.0", - "@rspack/binding": "1.7.1", + "@module-federation/runtime-tools": "0.21.6", + "@rspack/binding": "1.6.8", "@rspack/lite-tapable": "1.1.0" }, "engines": { @@ -16446,83 +16929,86 @@ } } }, - "node_modules/@rspack/core/node_modules/@module-federation/error-codes": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz", - "integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rspack/core/node_modules/@module-federation/runtime": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz", - "integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/error-codes": "0.22.0", - "@module-federation/runtime-core": "0.22.0", - "@module-federation/sdk": "0.22.0" - } - }, - "node_modules/@rspack/core/node_modules/@module-federation/runtime-core": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz", - "integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/error-codes": "0.22.0", - "@module-federation/sdk": "0.22.0" - } - }, - "node_modules/@rspack/core/node_modules/@module-federation/runtime-tools": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz", - "integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==", + "node_modules/@rspack/dev-server": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.2.1.tgz", + "integrity": "sha512-e/ARvskYn2Qdd02qLvc0i6H9BnOmzP0xGHS2XCr7GZ3t2k5uC5ZlLkeN1iEebU0FkAW+6ot89NahFo3nupKuww==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.22.0", - "@module-federation/webpack-bundler-runtime": "0.22.0" + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.8.1", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.22.1", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "peerDependencies": { + "@rspack/core": "*" } }, - "node_modules/@rspack/core/node_modules/@module-federation/sdk": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz", - "integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rspack/core/node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz", - "integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==", + "node_modules/@rspack/dev-server/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.22.0", - "@module-federation/sdk": "0.22.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/@rspack/dev-server": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.1.5.tgz", - "integrity": "sha512-cwz0qc6iqqoJhyWqxP7ZqE2wyYNHkBMQUXxoQ0tNoZ4YNRkDyQ4HVJ/3oPSmMKbvJk/iJ16u7xZmwG6sK47q/A==", + "node_modules/@rspack/dev-server/node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, "license": "MIT", "dependencies": { - "chokidar": "^3.6.0", - "http-proxy-middleware": "^2.0.9", - "p-retry": "^6.2.0", - "webpack-dev-server": "5.2.2", - "ws": "^8.18.0" + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" }, "engines": { - "node": ">= 18.12.0" - }, - "peerDependencies": { - "@rspack/core": "*" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/@rspack/dev-server/node_modules/chokidar": { @@ -16550,6 +17036,106 @@ "fsevents": "~2.3.2" } }, + "node_modules/@rspack/dev-server/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rspack/dev-server/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@rspack/dev-server/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rspack/dev-server/node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@rspack/dev-server/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@rspack/dev-server/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/@rspack/dev-server/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -16563,6 +17149,27 @@ "node": ">= 6" } }, + "node_modules/@rspack/dev-server/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/@rspack/dev-server/node_modules/http-proxy-middleware": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", @@ -16588,6 +17195,29 @@ } } }, + "node_modules/@rspack/dev-server/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@rspack/dev-server/node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/@rspack/dev-server/node_modules/is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -16601,6 +17231,66 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@rspack/dev-server/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@rspack/dev-server/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@rspack/dev-server/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@rspack/dev-server/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@rspack/dev-server/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@rspack/dev-server/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@rspack/dev-server/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -16614,6 +17304,22 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/@rspack/dev-server/node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/@rspack/dev-server/node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -16627,6 +17333,61 @@ "node": ">=8.10.0" } }, + "node_modules/@rspack/dev-server/node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@rspack/dev-server/node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@rspack/dev-server/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/@rspack/lite-tapable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz", @@ -16635,9 +17396,9 @@ "license": "MIT" }, "node_modules/@rspack/plugin-react-refresh": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.6.0.tgz", - "integrity": "sha512-OO53gkrte/Ty4iRXxxM6lkwPGxsSsupFKdrPFnjwFIYrPvFLjeolAl5cTx+FzO5hYygJiGnw7iEKTmD+ptxqDA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.6.1.tgz", + "integrity": "sha512-eqqW5645VG3CzGzFgNg5HqNdHVXY+567PGjtDhhrM8t67caxmsSzRmT5qfoEIfBcGgFkH9vEg7kzXwmCYQdQDw==", "dev": true, "license": "MIT", "dependencies": { @@ -17805,18 +18566,19 @@ } }, "node_modules/@swc-node/register": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.9.2.tgz", - "integrity": "sha512-BBjg0QNuEEmJSoU/++JOXhrjWdu3PTyYeJWsvchsI0Aqtj8ICkz/DqlwtXbmZVZ5vuDPpTfFlwDBZe81zgShMA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.11.1.tgz", + "integrity": "sha512-VQ0hJ5jX31TVv/fhZx4xJRzd8pwn6VvzYd2tGOHHr2TfXGCBixZoqdPDXTiEoJLCTS2MmvBf6zyQZZ0M8aGQCQ==", "dev": true, "license": "MIT", "dependencies": { - "@swc-node/core": "^1.13.1", - "@swc-node/sourcemap-support": "^0.5.0", + "@swc-node/core": "^1.14.1", + "@swc-node/sourcemap-support": "^0.6.1", "colorette": "^2.0.20", - "debug": "^4.3.4", - "pirates": "^4.0.6", - "tslib": "^2.6.2" + "debug": "^4.4.1", + "oxc-resolver": "^11.6.1", + "pirates": "^4.0.7", + "tslib": "^2.8.1" }, "funding": { "type": "github", @@ -17828,32 +18590,32 @@ } }, "node_modules/@swc-node/sourcemap-support": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.5.1.tgz", - "integrity": "sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.6.1.tgz", + "integrity": "sha512-ovltDVH5QpdHXZkW138vG4+dgcNsxfwxHVoV6BtmTbz2KKl1A8ZSlbdtxzzfNjCjbpayda8Us9eMtcHobm38dA==", "dev": true, "license": "MIT", "dependencies": { "source-map-support": "^0.5.21", - "tslib": "^2.6.3" + "tslib": "^2.8.1" } }, "node_modules/@swc/cli": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.6.0.tgz", - "integrity": "sha512-Q5FsI3Cw0fGMXhmsg7c08i4EmXCrcl+WnAxb6LYOLHw4JFFC3yzmx9LaXZ7QMbA+JZXbigU2TirI7RAfO0Qlnw==", + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.7.10.tgz", + "integrity": "sha512-QQ36Q1VwGTT2YzvMeNe/j1x4DKS277DscNhWc57dIwQn//C+zAgvuSupMB/XkmYqPKQX+8hjn5/cHRJrMvWy0Q==", "dev": true, "license": "MIT", "dependencies": { "@swc/counter": "^0.1.3", "@xhmikosr/bin-wrapper": "^13.0.5", "commander": "^8.3.0", - "fast-glob": "^3.2.5", "minimatch": "^9.0.3", "piscina": "^4.3.1", "semver": "^7.3.8", "slash": "3.0.0", - "source-map": "^0.7.3" + "source-map": "^0.7.3", + "tinyglobby": "^0.2.13" }, "bin": { "spack": "bin/spack.js", @@ -17894,15 +18656,15 @@ } }, "node_modules/@swc/core": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.3.tgz", - "integrity": "sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.8.tgz", + "integrity": "sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.17" + "@swc/types": "^0.1.25" }, "engines": { "node": ">=10" @@ -17912,19 +18674,19 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.9.3", - "@swc/core-darwin-x64": "1.9.3", - "@swc/core-linux-arm-gnueabihf": "1.9.3", - "@swc/core-linux-arm64-gnu": "1.9.3", - "@swc/core-linux-arm64-musl": "1.9.3", - "@swc/core-linux-x64-gnu": "1.9.3", - "@swc/core-linux-x64-musl": "1.9.3", - "@swc/core-win32-arm64-msvc": "1.9.3", - "@swc/core-win32-ia32-msvc": "1.9.3", - "@swc/core-win32-x64-msvc": "1.9.3" + "@swc/core-darwin-arm64": "1.15.8", + "@swc/core-darwin-x64": "1.15.8", + "@swc/core-linux-arm-gnueabihf": "1.15.8", + "@swc/core-linux-arm64-gnu": "1.15.8", + "@swc/core-linux-arm64-musl": "1.15.8", + "@swc/core-linux-x64-gnu": "1.15.8", + "@swc/core-linux-x64-musl": "1.15.8", + "@swc/core-win32-arm64-msvc": "1.15.8", + "@swc/core-win32-ia32-msvc": "1.15.8", + "@swc/core-win32-x64-msvc": "1.15.8" }, "peerDependencies": { - "@swc/helpers": "*" + "@swc/helpers": ">=0.5.17" }, "peerDependenciesMeta": { "@swc/helpers": { @@ -17933,9 +18695,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.3.tgz", - "integrity": "sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.8.tgz", + "integrity": "sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg==", "cpu": [ "arm64" ], @@ -17950,9 +18712,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.3.tgz", - "integrity": "sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.8.tgz", + "integrity": "sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ==", "cpu": [ "x64" ], @@ -17967,9 +18729,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.3.tgz", - "integrity": "sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.8.tgz", + "integrity": "sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg==", "cpu": [ "arm" ], @@ -17984,9 +18746,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.3.tgz", - "integrity": "sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.8.tgz", + "integrity": "sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q==", "cpu": [ "arm64" ], @@ -18001,9 +18763,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.3.tgz", - "integrity": "sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.8.tgz", + "integrity": "sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw==", "cpu": [ "arm64" ], @@ -18018,9 +18780,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.3.tgz", - "integrity": "sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.8.tgz", + "integrity": "sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ==", "cpu": [ "x64" ], @@ -18035,9 +18797,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.3.tgz", - "integrity": "sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.8.tgz", + "integrity": "sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA==", "cpu": [ "x64" ], @@ -18052,9 +18814,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.3.tgz", - "integrity": "sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.8.tgz", + "integrity": "sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ==", "cpu": [ "arm64" ], @@ -18069,9 +18831,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.3.tgz", - "integrity": "sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.8.tgz", + "integrity": "sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ==", "cpu": [ "ia32" ], @@ -18086,9 +18848,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.3.tgz", - "integrity": "sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.8.tgz", + "integrity": "sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA==", "cpu": [ "x64" ], @@ -18110,12 +18872,12 @@ "license": "Apache-2.0" }, "node_modules/@swc/helpers": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", - "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", + "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.8.0" } }, "node_modules/@swc/types": { @@ -18606,6 +19368,16 @@ "@types/estree": "*" } }, + "node_modules/@types/esquery": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/esquery/-/esquery-1.5.4.tgz", + "integrity": "sha512-yYO4Q8H+KJHKW1rEeSzHxcZi90durqYgWVfnh5K6ZADVBjBv2e1NEveYX5yT2bffgN7RqzH3k9930m+i2yBoMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -19888,215 +20660,6 @@ "vite": "^4 || ^5 || ^6 || ^7" } }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.2.tgz", - "integrity": "sha512-OQm+yJdXxvSjqGeaWhP6Ia264ogifwAO7Q12uTDVYj/Ks4jBTI4JknlcjDRAXtRhqbWsfbZyK/5RtuIPyptk3w==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.25" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.2", - "@swc/core-darwin-x64": "1.15.2", - "@swc/core-linux-arm-gnueabihf": "1.15.2", - "@swc/core-linux-arm64-gnu": "1.15.2", - "@swc/core-linux-arm64-musl": "1.15.2", - "@swc/core-linux-x64-gnu": "1.15.2", - "@swc/core-linux-x64-musl": "1.15.2", - "@swc/core-win32-arm64-msvc": "1.15.2", - "@swc/core-win32-ia32-msvc": "1.15.2", - "@swc/core-win32-x64-msvc": "1.15.2" - }, - "peerDependencies": { - "@swc/helpers": ">=0.5.17" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-darwin-arm64": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.2.tgz", - "integrity": "sha512-Ghyz4RJv4zyXzrUC1B2MLQBbppIB5c4jMZJybX2ebdEQAvryEKp3gq1kBksCNsatKGmEgXul88SETU19sMWcrw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-darwin-x64": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.2.tgz", - "integrity": "sha512-7n/PGJOcL2QoptzL42L5xFFfXY5rFxLHnuz1foU+4ruUTG8x2IebGhtwVTpaDN8ShEv2UZObBlT1rrXTba15Zw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.2.tgz", - "integrity": "sha512-ZUQVCfRJ9wimuxkStRSlLwqX4TEDmv6/J+E6FicGkQ6ssLMWoKDy0cAo93HiWt/TWEee5vFhFaSQYzCuBEGO6A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.2.tgz", - "integrity": "sha512-GZh3pYBmfnpQ+JIg+TqLuz+pM+Mjsk5VOzi8nwKn/m+GvQBsxD5ectRtxuWUxMGNG8h0lMy4SnHRqdK3/iJl7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.2.tgz", - "integrity": "sha512-5av6VYZZeneiYIodwzGMlnyVakpuYZryGzFIbgu1XP8wVylZxduEzup4eP8atiMDFmIm+s4wn8GySJmYqeJC0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.2.tgz", - "integrity": "sha512-1nO/UfdCLuT/uE/7oB3EZgTeZDCIa6nL72cFEpdegnqpJVNDI6Qb8U4g/4lfVPkmHq2lvxQ0L+n+JdgaZLhrRA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.2.tgz", - "integrity": "sha512-Ksfrb0Tx310kr+TLiUOvB/I80lyZ3lSOp6cM18zmNRT/92NB4mW8oX2Jo7K4eVEI2JWyaQUAFubDSha2Q+439A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.2.tgz", - "integrity": "sha512-IzUb5RlMUY0r1A9IuJrQ7Tbts1wWb73/zXVXT8VhewbHGoNlBKE0qUhKMED6Tv4wDF+pmbtUJmKXDthytAvLmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.2.tgz", - "integrity": "sha512-kCATEzuY2LP9AlbU2uScjcVhgnCAkRdu62vbce17Ro5kxEHxYWcugkveyBRS3AqZGtwAKYbMAuNloer9LS/hpw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.2.tgz", - "integrity": "sha512-iJaHeYCF4jTn7OEKSa3KRiuVFIVYts8jYjNmCdyz1u5g8HRyTDISD76r8+ljEOgm36oviRQvcXaw6LFp1m0yyA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, "node_modules/@vitest/browser": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.0.13.tgz", @@ -23118,13 +23681,6 @@ "ieee754": "^1.2.1" } }, - "node_modules/buffer-builder": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", - "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", - "dev": true, - "license": "MIT/X11" - }, "node_modules/buffer-crc32": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", @@ -27605,95 +28161,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/file-loader/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/file-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/file-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/file-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/file-type": { "version": "20.5.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-20.5.0.tgz", @@ -29795,13 +30262,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", - "dev": true, - "license": "ISC" - }, "node_modules/icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", @@ -29929,19 +30389,6 @@ "dev": true, "license": "MIT" }, - "node_modules/import-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", - "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-from": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -29967,19 +30414,6 @@ "node": ">=4" } }, - "node_modules/import-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", - "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/import-from-esm": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", @@ -32646,7 +33080,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "license": "MIT", "dependencies": { @@ -38001,9 +38434,9 @@ "license": "MIT" }, "node_modules/nx": { - "version": "22.3.3", - "resolved": "https://registry.npmjs.org/nx/-/nx-22.3.3.tgz", - "integrity": "sha512-pOxtKWUfvf0oD8Geqs8D89Q2xpstRTaSY+F6Ut/Wd0GnEjUjO32SS1ymAM6WggGPHDZN4qpNrd5cfIxQmAbRLg==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/nx/-/nx-22.5.2.tgz", + "integrity": "sha512-s7dd2BZQOremv1AYhxwBY6NzJV9ETa6/OJ/zau/ulbLnHu8E5UAv+EjMC80m3qP3nob5OXnWiITKM9CcOHy6qw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -38013,12 +38446,12 @@ "@yarnpkg/parsers": "3.0.2", "@zkochan/js-yaml": "0.0.7", "axios": "^1.12.0", - "chalk": "^4.1.0", "cli-cursor": "3.1.0", "cli-spinners": "2.6.1", "cliui": "^8.0.1", "dotenv": "~16.4.5", "dotenv-expand": "~11.0.6", + "ejs": "^3.1.7", "enquirer": "~2.3.6", "figures": "3.2.0", "flat": "^5.0.2", @@ -38027,11 +38460,12 @@ "jest-diff": "^30.0.2", "jsonc-parser": "3.2.0", "lines-and-columns": "2.0.3", - "minimatch": "9.0.3", + "minimatch": "10.1.1", "node-machine-id": "1.1.12", "npm-run-path": "^4.0.1", "open": "^8.4.0", "ora": "5.3.0", + "picocolors": "^1.1.0", "resolve.exports": "2.0.3", "semver": "^7.6.3", "string-width": "^4.2.3", @@ -38049,20 +38483,20 @@ "nx-cloud": "bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "22.3.3", - "@nx/nx-darwin-x64": "22.3.3", - "@nx/nx-freebsd-x64": "22.3.3", - "@nx/nx-linux-arm-gnueabihf": "22.3.3", - "@nx/nx-linux-arm64-gnu": "22.3.3", - "@nx/nx-linux-arm64-musl": "22.3.3", - "@nx/nx-linux-x64-gnu": "22.3.3", - "@nx/nx-linux-x64-musl": "22.3.3", - "@nx/nx-win32-arm64-msvc": "22.3.3", - "@nx/nx-win32-x64-msvc": "22.3.3" + "@nx/nx-darwin-arm64": "22.5.2", + "@nx/nx-darwin-x64": "22.5.2", + "@nx/nx-freebsd-x64": "22.5.2", + "@nx/nx-linux-arm-gnueabihf": "22.5.2", + "@nx/nx-linux-arm64-gnu": "22.5.2", + "@nx/nx-linux-arm64-musl": "22.5.2", + "@nx/nx-linux-x64-gnu": "22.5.2", + "@nx/nx-linux-x64-musl": "22.5.2", + "@nx/nx-win32-arm64-msvc": "22.5.2", + "@nx/nx-win32-x64-msvc": "22.5.2" }, "peerDependencies": { - "@swc-node/register": "^1.8.0", - "@swc/core": "^1.3.85" + "@swc-node/register": "^1.11.1", + "@swc/core": "^1.15.8" }, "peerDependenciesMeta": { "@swc-node/register": { @@ -38099,9 +38533,9 @@ } }, "node_modules/nx/node_modules/@sinclair/typebox": { - "version": "0.34.47", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", - "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, "license": "MIT" }, @@ -38270,6 +38704,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/nx/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/nx/node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -38860,6 +39310,38 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/oxc-resolver": { + "version": "11.18.0", + "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.18.0.tgz", + "integrity": "sha512-Fv/b05AfhpYoCDvsog6tgsDm2yIwIeJafpMFLncNwKHRYu+Y1xQu5Q/rgUn7xBfuhNgjtPO7C0jCf7p2fLDj1g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-resolver/binding-android-arm-eabi": "11.18.0", + "@oxc-resolver/binding-android-arm64": "11.18.0", + "@oxc-resolver/binding-darwin-arm64": "11.18.0", + "@oxc-resolver/binding-darwin-x64": "11.18.0", + "@oxc-resolver/binding-freebsd-x64": "11.18.0", + "@oxc-resolver/binding-linux-arm-gnueabihf": "11.18.0", + "@oxc-resolver/binding-linux-arm-musleabihf": "11.18.0", + "@oxc-resolver/binding-linux-arm64-gnu": "11.18.0", + "@oxc-resolver/binding-linux-arm64-musl": "11.18.0", + "@oxc-resolver/binding-linux-ppc64-gnu": "11.18.0", + "@oxc-resolver/binding-linux-riscv64-gnu": "11.18.0", + "@oxc-resolver/binding-linux-riscv64-musl": "11.18.0", + "@oxc-resolver/binding-linux-s390x-gnu": "11.18.0", + "@oxc-resolver/binding-linux-x64-gnu": "11.18.0", + "@oxc-resolver/binding-linux-x64-musl": "11.18.0", + "@oxc-resolver/binding-openharmony-arm64": "11.18.0", + "@oxc-resolver/binding-wasm32-wasi": "11.18.0", + "@oxc-resolver/binding-win32-arm64-msvc": "11.18.0", + "@oxc-resolver/binding-win32-ia32-msvc": "11.18.0", + "@oxc-resolver/binding-win32-x64-msvc": "11.18.0" + } + }, "node_modules/p-cancelable": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", @@ -38928,16 +39410,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/p-is-promise": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", @@ -38992,23 +39464,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-reduce": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", @@ -39040,19 +39495,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -40292,56 +40734,6 @@ "postcss": "^8.2" } }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-load-config/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, "node_modules/postcss-loader": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", @@ -40562,20 +40954,20 @@ } }, "node_modules/postcss-modules": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", - "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-6.0.1.tgz", + "integrity": "sha512-zyo2sAkVvuZFFy0gc2+4O+xar5dYlaVy/ebO24KT0ftk/iJevSNyPyQellsBLlnccwh7f6V6Y4GvuKRYToNgpQ==", "dev": true, "license": "MIT", "dependencies": { "generic-names": "^4.0.0", - "icss-replace-symbols": "^1.1.0", + "icss-utils": "^5.1.0", "lodash.camelcase": "^4.3.0", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", - "string-hash": "^1.1.1" + "string-hash": "^1.1.3" }, "peerDependencies": { "postcss": "^8.0.0" @@ -41357,16 +41749,6 @@ "node": ">= 4" } }, - "node_modules/promise.series": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", - "integrity": "sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -42750,783 +43132,6 @@ "typescript": "^4.5 || ^5.0" } }, - "node_modules/rollup-plugin-postcss": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz", - "integrity": "sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "concat-with-sourcemaps": "^1.1.0", - "cssnano": "^5.0.1", - "import-cwd": "^3.0.0", - "p-queue": "^6.6.2", - "pify": "^5.0.0", - "postcss-load-config": "^3.0.0", - "postcss-modules": "^4.0.0", - "promise.series": "^0.2.0", - "resolve": "^1.19.0", - "rollup-pluginutils": "^2.8.2", - "safe-identifier": "^0.4.2", - "style-inject": "^0.3.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "postcss": "8.x" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/css-declaration-sorter": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", - "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/rollup-plugin-postcss/node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "license": "MIT", - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, "node_modules/rollup-plugin-typescript2": { "version": "0.36.0", "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.36.0.tgz", @@ -43587,23 +43192,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true, - "license": "MIT" - }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -43733,13 +43321,6 @@ ], "license": "MIT" }, - "node_modules/safe-identifier": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", - "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", - "dev": true, - "license": "ISC" - }, "node_modules/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", @@ -43837,14 +43418,13 @@ } }, "node_modules/sass-embedded": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.97.2.tgz", - "integrity": "sha512-lKJcskySwAtJ4QRirKrikrWMFa2niAuaGenY2ElHjd55IwHUiur5IdKu6R1hEmGYMs4Qm+6rlRW0RvuAkmcryg==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.97.3.tgz", + "integrity": "sha512-eKzFy13Nk+IRHhlAwP3sfuv+PzOrvzUkwJK2hdoCKYcWGSdmwFpeGpWmyewdw8EgBnsKaSBtgf/0b2K635ecSA==", "dev": true, "license": "MIT", "dependencies": { "@bufbuild/protobuf": "^2.5.0", - "buffer-builder": "^0.2.0", "colorjs.io": "^0.5.0", "immutable": "^5.0.2", "rxjs": "^7.4.0", @@ -43859,30 +43439,30 @@ "node": ">=16.0.0" }, "optionalDependencies": { - "sass-embedded-all-unknown": "1.97.2", - "sass-embedded-android-arm": "1.97.2", - "sass-embedded-android-arm64": "1.97.2", - "sass-embedded-android-riscv64": "1.97.2", - "sass-embedded-android-x64": "1.97.2", - "sass-embedded-darwin-arm64": "1.97.2", - "sass-embedded-darwin-x64": "1.97.2", - "sass-embedded-linux-arm": "1.97.2", - "sass-embedded-linux-arm64": "1.97.2", - "sass-embedded-linux-musl-arm": "1.97.2", - "sass-embedded-linux-musl-arm64": "1.97.2", - "sass-embedded-linux-musl-riscv64": "1.97.2", - "sass-embedded-linux-musl-x64": "1.97.2", - "sass-embedded-linux-riscv64": "1.97.2", - "sass-embedded-linux-x64": "1.97.2", - "sass-embedded-unknown-all": "1.97.2", - "sass-embedded-win32-arm64": "1.97.2", - "sass-embedded-win32-x64": "1.97.2" + "sass-embedded-all-unknown": "1.97.3", + "sass-embedded-android-arm": "1.97.3", + "sass-embedded-android-arm64": "1.97.3", + "sass-embedded-android-riscv64": "1.97.3", + "sass-embedded-android-x64": "1.97.3", + "sass-embedded-darwin-arm64": "1.97.3", + "sass-embedded-darwin-x64": "1.97.3", + "sass-embedded-linux-arm": "1.97.3", + "sass-embedded-linux-arm64": "1.97.3", + "sass-embedded-linux-musl-arm": "1.97.3", + "sass-embedded-linux-musl-arm64": "1.97.3", + "sass-embedded-linux-musl-riscv64": "1.97.3", + "sass-embedded-linux-musl-x64": "1.97.3", + "sass-embedded-linux-riscv64": "1.97.3", + "sass-embedded-linux-x64": "1.97.3", + "sass-embedded-unknown-all": "1.97.3", + "sass-embedded-win32-arm64": "1.97.3", + "sass-embedded-win32-x64": "1.97.3" } }, "node_modules/sass-embedded-all-unknown": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.97.2.tgz", - "integrity": "sha512-Fj75+vOIDv1T/dGDwEpQ5hgjXxa2SmMeShPa8yrh2sUz1U44bbmY4YSWPCdg8wb7LnwiY21B2KRFM+HF42yO4g==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.97.3.tgz", + "integrity": "sha512-t6N46NlPuXiY3rlmG6/+1nwebOBOaLFOOVqNQOC2cJhghOD4hh2kHNQQTorCsbY9S1Kir2la1/XLBwOJfui0xg==", "cpu": [ "!arm", "!arm64", @@ -43893,13 +43473,13 @@ "license": "MIT", "optional": true, "dependencies": { - "sass": "1.97.2" + "sass": "1.97.3" } }, "node_modules/sass-embedded-all-unknown/node_modules/sass": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.2.tgz", - "integrity": "sha512-y5LWb0IlbO4e97Zr7c3mlpabcbBtS+ieiZ9iwDooShpFKWXf62zz5pEPdwrLYm+Bxn1fnbwFGzHuCLSA9tBmrw==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", + "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", "dev": true, "license": "MIT", "optional": true, @@ -43919,9 +43499,9 @@ } }, "node_modules/sass-embedded-android-arm": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.97.2.tgz", - "integrity": "sha512-BPT9m19ttY0QVHYYXRa6bmqmS3Fa2EHByNUEtSVcbm5PkIk1ntmYkG9fn5SJpIMbNmFDGwHx+pfcZMmkldhnRg==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.97.3.tgz", + "integrity": "sha512-cRTtf/KV/q0nzGZoUzVkeIVVFv3L/tS1w4WnlHapphsjTXF/duTxI8JOU1c/9GhRPiMdfeXH7vYNcMmtjwX7jg==", "cpu": [ "arm" ], @@ -43936,9 +43516,9 @@ } }, "node_modules/sass-embedded-android-arm64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.97.2.tgz", - "integrity": "sha512-pF6I+R5uThrscd3lo9B3DyNTPyGFsopycdx0tDAESN6s+dBbiRgNgE4Zlpv50GsLocj/lDLCZaabeTpL3ubhYA==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.97.3.tgz", + "integrity": "sha512-aiZ6iqiHsUsaDx0EFbbmmA0QgxicSxVVN3lnJJ0f1RStY0DthUkquGT5RJ4TPdaZ6ebeJWkboV4bra+CP766eA==", "cpu": [ "arm64" ], @@ -43953,9 +43533,9 @@ } }, "node_modules/sass-embedded-android-riscv64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.97.2.tgz", - "integrity": "sha512-fprI8ZTJdz+STgARhg8zReI2QhhGIT9G8nS7H21kc3IkqPRzhfaemSxEtCqZyvDbXPcgYiDLV7AGIReHCuATog==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.97.3.tgz", + "integrity": "sha512-zVEDgl9JJodofGHobaM/q6pNETG69uuBIGQHRo789jloESxxZe82lI3AWJQuPmYCOG5ElfRthqgv89h3gTeLYA==", "cpu": [ "riscv64" ], @@ -43970,9 +43550,9 @@ } }, "node_modules/sass-embedded-android-x64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.97.2.tgz", - "integrity": "sha512-RswwSjURZxupsukEmNt2t6RGvuvIw3IAD5sDq1Pc65JFvWFY3eHqCmH0lG0oXqMg6KJcF0eOxHOp2RfmIm2+4w==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.97.3.tgz", + "integrity": "sha512-3ke0le7ZKepyXn/dKKspYkpBC0zUk/BMciyP5ajQUDy4qJwobd8zXdAq6kOkdiMB+d9UFJOmEkvgFJHl3lqwcw==", "cpu": [ "x64" ], @@ -43987,9 +43567,9 @@ } }, "node_modules/sass-embedded-darwin-arm64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.97.2.tgz", - "integrity": "sha512-xcsZNnU1XZh21RE/71OOwNqPVcGBU0qT9A4k4QirdA34+ts9cDIaR6W6lgHOBR/Bnnu6w6hXJR4Xth7oFrefPA==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.97.3.tgz", + "integrity": "sha512-fuqMTqO4gbOmA/kC5b9y9xxNYw6zDEyfOtMgabS7Mz93wimSk2M1quQaTJnL98Mkcsl2j+7shNHxIS/qpcIDDA==", "cpu": [ "arm64" ], @@ -44004,9 +43584,9 @@ } }, "node_modules/sass-embedded-darwin-x64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.97.2.tgz", - "integrity": "sha512-T/9DTMpychm6+H4slHCAsYJRJ6eM+9H9idKlBPliPrP4T8JdC2Cs+ZOsYqrObj6eOtAD0fGf+KgyNhnW3xVafA==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.97.3.tgz", + "integrity": "sha512-b/2RBs/2bZpP8lMkyZ0Px0vkVkT8uBd0YXpOwK7iOwYkAT8SsO4+WdVwErsqC65vI5e1e5p1bb20tuwsoQBMVA==", "cpu": [ "x64" ], @@ -44021,9 +43601,9 @@ } }, "node_modules/sass-embedded-linux-arm": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.97.2.tgz", - "integrity": "sha512-yDRe1yifGHl6kibkDlRIJ2ZzAU03KJ1AIvsAh4dsIDgK5jx83bxZLV1ZDUv7a8KK/iV/80LZnxnu/92zp99cXQ==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.97.3.tgz", + "integrity": "sha512-2lPQ7HQQg4CKsH18FTsj2hbw5GJa6sBQgDsls+cV7buXlHjqF8iTKhAQViT6nrpLK/e8nFCoaRgSqEC8xMnXuA==", "cpu": [ "arm" ], @@ -44038,9 +43618,9 @@ } }, "node_modules/sass-embedded-linux-arm64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.97.2.tgz", - "integrity": "sha512-Wh+nQaFer9tyE5xBPv5murSUZE/+kIcg8MyL5uqww6be9Iq+UmZpcJM7LUk+q8klQ9LfTmoDSNFA74uBqxD6IA==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.97.3.tgz", + "integrity": "sha512-IP1+2otCT3DuV46ooxPaOKV1oL5rLjteRzf8ldZtfIEcwhSgSsHgA71CbjYgLEwMY9h4jeal8Jfv3QnedPvSjg==", "cpu": [ "arm64" ], @@ -44055,9 +43635,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.97.2.tgz", - "integrity": "sha512-GIO6xfAtahJAWItvsXZ3MD1HM6s8cKtV1/HL088aUpKJaw/2XjTCveiOO2AdgMpLNztmq9DZ1lx5X5JjqhS45g==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.97.3.tgz", + "integrity": "sha512-cBTMU68X2opBpoYsSZnI321gnoaiMBEtc+60CKCclN6PCL3W3uXm8g4TLoil1hDD6mqU9YYNlVG6sJ+ZNef6Lg==", "cpu": [ "arm" ], @@ -44072,9 +43652,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.97.2.tgz", - "integrity": "sha512-NfUqZSjHwnHvpSa7nyNxbWfL5obDjNBqhHUYmqbHUcmqBpFfHIQsUPgXME9DKn1yBlBc3mWnzMxRoucdYTzd2Q==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.97.3.tgz", + "integrity": "sha512-Lij0SdZCsr+mNRSyDZ7XtJpXEITrYsaGbOTz5e6uFLJ9bmzUbV7M8BXz2/cA7bhfpRPT7/lwRKPdV4+aR9Ozcw==", "cpu": [ "arm64" ], @@ -44089,9 +43669,9 @@ } }, "node_modules/sass-embedded-linux-musl-riscv64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.97.2.tgz", - "integrity": "sha512-qtM4dJ5gLfvyTZ3QencfNbsTEShIWImSEpkThz+Y2nsCMbcMP7/jYOA03UWgPfEOKSehQQ7EIau7ncbFNoDNPQ==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.97.3.tgz", + "integrity": "sha512-sBeLFIzMGshR4WmHAD4oIM7WJVkSoCIEwutzptFtGlSlwfNiijULp+J5hA2KteGvI6Gji35apR5aWj66wEn/iA==", "cpu": [ "riscv64" ], @@ -44106,9 +43686,9 @@ } }, "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.97.2.tgz", - "integrity": "sha512-ZAxYOdmexcnxGnzdsDjYmNe3jGj+XW3/pF/n7e7r8y+5c6D2CQRrCUdapLgaqPt1edOPQIlQEZF8q5j6ng21yw==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.97.3.tgz", + "integrity": "sha512-/oWJ+OVrDg7ADDQxRLC/4g1+Nsz1g4mkYS2t6XmyMJKFTFK50FVI2t5sOdFH+zmMp+nXHKM036W94y9m4jjEcw==", "cpu": [ "x64" ], @@ -44123,9 +43703,9 @@ } }, "node_modules/sass-embedded-linux-riscv64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.97.2.tgz", - "integrity": "sha512-reVwa9ZFEAOChXpDyNB3nNHHyAkPMD+FTctQKECqKiVJnIzv2EaFF6/t0wzyvPgBKeatA8jszAIeOkkOzbYVkQ==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.97.3.tgz", + "integrity": "sha512-l3IfySApLVYdNx0Kjm7Zehte1CDPZVcldma3dZt+TfzvlAEerM6YDgsk5XEj3L8eHBCgHgF4A0MJspHEo2WNfA==", "cpu": [ "riscv64" ], @@ -44140,9 +43720,9 @@ } }, "node_modules/sass-embedded-linux-x64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.97.2.tgz", - "integrity": "sha512-bvAdZQsX3jDBv6m4emaU2OMTpN0KndzTAMgJZZrKUgiC0qxBmBqbJG06Oj/lOCoXGCxAvUOheVYpezRTF+Feog==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.97.3.tgz", + "integrity": "sha512-Kwqwc/jSSlcpRjULAOVbndqEy2GBzo6OBmmuBVINWUaJLJ8Kczz3vIsDUWLfWz/kTEw9FHBSiL0WCtYLVAXSLg==", "cpu": [ "x64" ], @@ -44157,9 +43737,9 @@ } }, "node_modules/sass-embedded-unknown-all": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.97.2.tgz", - "integrity": "sha512-86tcYwohjPgSZtgeU9K4LikrKBJNf8ZW/vfsFbdzsRlvc73IykiqanufwQi5qIul0YHuu9lZtDWyWxM2dH/Rsg==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.97.3.tgz", + "integrity": "sha512-/GHajyYJmvb0IABUQHbVHf1nuHPtIDo/ClMZ81IDr59wT5CNcMe7/dMNujXwWugtQVGI5UGmqXWZQCeoGnct8Q==", "dev": true, "license": "MIT", "optional": true, @@ -44170,13 +43750,13 @@ "!win32" ], "dependencies": { - "sass": "1.97.2" + "sass": "1.97.3" } }, "node_modules/sass-embedded-unknown-all/node_modules/sass": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.2.tgz", - "integrity": "sha512-y5LWb0IlbO4e97Zr7c3mlpabcbBtS+ieiZ9iwDooShpFKWXf62zz5pEPdwrLYm+Bxn1fnbwFGzHuCLSA9tBmrw==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", + "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", "dev": true, "license": "MIT", "optional": true, @@ -44196,9 +43776,9 @@ } }, "node_modules/sass-embedded-win32-arm64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.97.2.tgz", - "integrity": "sha512-Cv28q8qNjAjZfqfzTrQvKf4JjsZ6EOQ5FxyHUQQeNzm73R86nd/8ozDa1Vmn79Hq0kwM15OCM9epanDuTG1ksA==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.97.3.tgz", + "integrity": "sha512-RDGtRS1GVvQfMGAmVXNxYiUOvPzn9oO1zYB/XUM9fudDRnieYTcUytpNTQZLs6Y1KfJxgt5Y+giRceC92fT8Uw==", "cpu": [ "arm64" ], @@ -44213,9 +43793,9 @@ } }, "node_modules/sass-embedded-win32-x64": { - "version": "1.97.2", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.97.2.tgz", - "integrity": "sha512-DVxLxkeDCGIYeyHLAvWW3yy9sy5Ruk5p472QWiyfyyG1G1ASAR8fgfIY5pT0vE6Rv+VAKVLwF3WTspUYu7S1/Q==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.97.3.tgz", + "integrity": "sha512-SFRa2lED9UEwV6vIGeBXeBOLKF+rowF3WmNfb/BzhxmdAsKofCXrJ8ePW7OcDVrvNEbTOGwhsReIsF5sH8fVaw==", "cpu": [ "x64" ], @@ -45873,14 +45453,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true, - "license": "MIT" - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -46450,13 +46022,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/style-inject": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", - "integrity": "sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==", - "dev": true, - "license": "MIT" - }, "node_modules/style-loader": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", @@ -46904,9 +46469,9 @@ } }, "node_modules/sync-message-port": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", - "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.2.0.tgz", + "integrity": "sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index e7e51a92df..56369d1e78 100644 --- a/package.json +++ b/package.json @@ -50,21 +50,21 @@ "@babel/core": "^7.14.5", "@babel/preset-react": "^7.14.5", "@faker-js/faker": "^8.3.1", - "@nx/angular": "22.3.3", - "@nx/eslint": "22.3.3", - "@nx/eslint-plugin": "22.3.3", - "@nx/jest": "22.3.3", - "@nx/js": "22.3.3", - "@nx/react": "22.3.3", - "@nx/vite": "22.3.3", - "@nx/vitest": "22.3.3", - "@nx/web": "22.3.3", - "@nx/workspace": "22.3.3", + "@nx/angular": "22.5.2", + "@nx/eslint": "22.5.2", + "@nx/eslint-plugin": "22.5.2", + "@nx/jest": "22.5.2", + "@nx/js": "22.5.2", + "@nx/react": "22.5.2", + "@nx/vite": "22.5.2", + "@nx/vitest": "22.5.2", + "@nx/web": "22.5.2", + "@nx/workspace": "22.5.2", "@schematics/angular": "20.1.5", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "@swc-node/register": "1.9.2", - "@swc/cli": "0.6.0", - "@swc/core": "1.9.3", + "@swc-node/register": "1.11.1", + "@swc/cli": "0.7.10", + "@swc/core": "1.15.8", "@testing-library/dom": "^10.1.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.1.0", @@ -98,7 +98,7 @@ "jsdom": "^26.1.0", "jsonc-eslint-parser": "^2.1.0", "ng-packagr": "20.1.0", - "nx": "22.3.3", + "nx": "22.5.2", "playwright": "^1.50.1", "postcss": "^8.4.5", "postcss-import": "~14.1.0", @@ -130,7 +130,7 @@ "@angular/platform-browser": "20.1.6", "@angular/platform-browser-dynamic": "20.1.6", "@angular/router": "20.1.6", - "@swc/helpers": "0.5.11", + "@swc/helpers": "0.5.19", "@astrojs/mdx": "^4.3.13", "@astrojs/react": "^4.4.2", "astro": "^5.16.6", @@ -141,7 +141,7 @@ "@nrwl/jest": "19.5.4", "react": "^19.2.3", "react-dom": "^19.2.3", - "react-router-dom": "^6.30.3", + "react-router-dom": "6.30.3", "rxjs": "~7.8.0", "style-dictionary": "^5.1.1", "svelte-routing": "^2.13.0", From ad71456a1f13163bb3cc8070067c1bae5efeaef0 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Wed, 25 Feb 2026 13:58:54 -0700 Subject: [PATCH 015/103] chore: upgrade nx-release lib --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 436ac6f50c..dfafe0efdd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "devDependencies": { "@abgov/design-tokens": "^1.10.0", "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", - "@abgov/nx-release": "^10.0.0", + "@abgov/nx-release": "^12.0.0", "@angular-devkit/build-angular": "^20.3.16", "@angular-devkit/core": "20.1.5", "@angular-devkit/schematics": "20.1.5", @@ -138,9 +138,9 @@ "dev": true }, "node_modules/@abgov/nx-release": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@abgov/nx-release/-/nx-release-10.0.0.tgz", - "integrity": "sha512-Lf0RzBix1KNmIrmrzfdsDAT3RlToho0dvoCC+8ORZxwK6QhUGi7+fblDeDCIM/JHnJroWgH4L/33EflUDd2r0w==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@abgov/nx-release/-/nx-release-12.0.0.tgz", + "integrity": "sha512-xVeuiW0kKvF+WMgGF2geBOdULW3WOKSeIKl1d9Hui/xyYlJVkG8DxT4RQPiPUEJ0jk0OBXQxX/bKukH5J/CFDQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -150,8 +150,8 @@ "split2": "~4.2.0" }, "peerDependencies": { - "@nx/devkit": "^20.0.0", - "semantic-release": "^23.0.0", + "@nx/devkit": "^22.0.0", + "semantic-release": "^24.0.0", "tslib": "^2.0.0" } }, diff --git a/package.json b/package.json index 56369d1e78..3450ccbd7a 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "devDependencies": { "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", "@abgov/design-tokens": "^1.10.0", - "@abgov/nx-release": "^10.0.0", + "@abgov/nx-release": "^12.0.0", "@angular-devkit/build-angular": "^20.3.16", "@angular-devkit/core": "20.1.5", "@angular-devkit/schematics": "20.1.5", From 7412ea9746c685ae1c8fd1d388465d6225d2a472 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Wed, 25 Feb 2026 14:00:06 -0700 Subject: [PATCH 016/103] chore: npm audit fix --- package-lock.json | 84 +++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index dfafe0efdd..f8d66219f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7817,19 +7817,19 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.57.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.3.tgz", - "integrity": "sha512-2+k2FNp+6zug/VmpK0wZFPQu7cKMihjHBP1iUuZs6Ep5P9uR1hD4dR5Ss7z/MiBkwVmKnUm6Pojhkz/c431SMw==", + "version": "7.57.5", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.5.tgz", + "integrity": "sha512-QwbB6UgdB+ASXA2kdhuOfBOkVdE4PO+rETfBhbIakE3eTSd3gwUvL8PBf4YVRJUq1aBWYP8lkp7PzUShvh2ODw==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/api-extractor-model": "7.33.1", + "@microsoft/api-extractor-model": "7.33.3", "@microsoft/tsdoc": "~0.16.0", "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.20.1", - "@rushstack/rig-package": "0.7.1", - "@rushstack/terminal": "0.22.1", - "@rushstack/ts-command-line": "5.3.1", + "@rushstack/node-core-library": "5.20.3", + "@rushstack/rig-package": "0.7.2", + "@rushstack/terminal": "0.22.3", + "@rushstack/ts-command-line": "5.3.3", "diff": "~8.0.2", "lodash": "~4.17.23", "minimatch": "10.2.1", @@ -7843,15 +7843,15 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.33.1", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.1.tgz", - "integrity": "sha512-KX0LI6xzI0gcBOXXmr5mnnbdhsK2W93pqvJo8OgJgWvRRh+wMEp0Ccj38h1XKeJ29E1tuAZKSUOfHUQ1WA8fZg==", + "version": "7.33.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.3.tgz", + "integrity": "sha512-EMwfPbyt0bAxPEOf2skhaURyNayxSDinjyInOuZJleG1Zb4YmDrKpNP9XRI01jfJCT1OKdUyEIuX5GYHi11y2A==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "~0.16.0", "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.20.1" + "@rushstack/node-core-library": "5.20.3" } }, "node_modules/@microsoft/api-extractor/node_modules/balanced-match": { @@ -7971,29 +7971,29 @@ "license": "MIT" }, "node_modules/@microsoft/tsdoc-config": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.0.tgz", - "integrity": "sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.1.tgz", + "integrity": "sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "0.16.0", - "ajv": "~8.12.0", + "ajv": "~8.18.0", "jju": "~1.4.0", "resolve": "~1.22.2" } }, "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -17423,13 +17423,13 @@ "license": "MIT" }, "node_modules/@rushstack/node-core-library": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.1.tgz", - "integrity": "sha512-QvxZyh+RsTJ77JpQkS9K9lJujh6lj5WyMxieT0bdACtwqxEkGB9zCuSMX5UlXRweaIgSpu1ztdHmhV07fKUpMg==", + "version": "5.20.3", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.3.tgz", + "integrity": "sha512-95JgEPq2k7tHxhF9/OJnnyHDXfC9cLhhta0An/6MlkDsX2A6dTzDrTUG18vx4vjc280V0fi0xDH9iQczpSuWsw==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "~8.13.0", + "ajv": "~8.18.0", "ajv-draft-04": "~1.0.0", "ajv-formats": "~3.0.1", "fs-extra": "~11.3.0", @@ -17448,16 +17448,16 @@ } }, "node_modules/@rushstack/node-core-library/node_modules/ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -17531,9 +17531,9 @@ } }, "node_modules/@rushstack/rig-package": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.1.tgz", - "integrity": "sha512-hLwDnp4yMcAd/gcUol8NPWNctpIXzVOgMyhZ8DagnEJls9TOZd0xF//5hS+YTiX7/+4rLfBra+NoB3rtFxjDdA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.2.tgz", + "integrity": "sha512-9XbFWuqMYcHUso4mnETfhGVUSaADBRj6HUAAEYk50nMPn8WRICmBuCphycQGNB3duIR6EEZX3Xj3SYc2XiP+9A==", "dev": true, "license": "MIT", "dependencies": { @@ -17542,13 +17542,13 @@ } }, "node_modules/@rushstack/terminal": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.1.tgz", - "integrity": "sha512-Mdtu0VN7v31O5Zcno8ZZH5kQHF13Ez7WN9Aio7nFJVcR36i4bkERionYrWgBDQJ0JdVPLKGecZER/xRU5IvGLw==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.3.tgz", + "integrity": "sha512-gHC9pIMrUPzAbBiI4VZMU7Q+rsCzb8hJl36lFIulIzoceKotyKL3Rd76AZ2CryCTKEg+0bnTj406HE5YY5OQvw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.20.1", + "@rushstack/node-core-library": "5.20.3", "@rushstack/problem-matcher": "0.2.1", "supports-color": "~8.1.1" }, @@ -17578,13 +17578,13 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.1.tgz", - "integrity": "sha512-mid/JIZSJafwy3x9e4v0wVLuAqSSYYErEHV0HXPALYLSBN13YNkR5caOk0hf97lSRKrxhtvQjGaDKSEelR3sMg==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.3.tgz", + "integrity": "sha512-c+ltdcvC7ym+10lhwR/vWiOhsrm/bP3By2VsFcs5qTKv+6tTmxgbVrtJ5NdNjANiV5TcmOZgUN+5KYQ4llsvEw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.22.1", + "@rushstack/terminal": "0.22.3", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" From ee33cd4f8d18182f9a0789a6204a6c1ae9190073 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Thu, 15 Jan 2026 14:00:58 -0700 Subject: [PATCH 017/103] fix(#3399): correct V2 checkbox spacing behavior --- apps/prs/angular/src/app/app.component.html | 1 + apps/prs/angular/src/app/app.routes.ts | 2 + .../featV2Checkbox.component.html | 184 ++++++++++ .../featV2Checkbox.component.ts | 85 +++++ apps/prs/react/src/app/app.tsx | 1 + apps/prs/react/src/main.tsx | 2 + .../src/routes/features/featV2Checkbox.tsx | 324 ++++++++++++++++++ .../checkbox-list/checkbox-list.spec.ts | 115 +++++++ .../checkbox-list/checkbox-list.ts | 92 +++++ .../src/experimental/index.ts | 1 + .../specs/checkbox-list-v2.browser.spec.tsx | 303 ++++++++++++++++ .../checkbox-list/checkbox-list.spec.tsx | 98 ++++++ .../checkbox-list/checkbox-list.tsx | 94 +++++ .../src/experimental/index.ts | 1 + .../src/lib/checkbox-list/checkbox-list.tsx | 19 - .../checkbox-list/CheckboxList.svelte | 14 +- .../src/components/checkbox/Checkbox.svelte | 11 +- 17 files changed, 1325 insertions(+), 22 deletions(-) create mode 100644 apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.html create mode 100644 apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.ts create mode 100644 apps/prs/react/src/routes/features/featV2Checkbox.tsx create mode 100644 libs/angular-components/src/experimental/checkbox-list/checkbox-list.spec.ts create mode 100644 libs/angular-components/src/experimental/checkbox-list/checkbox-list.ts create mode 100644 libs/react-components/specs/checkbox-list-v2.browser.spec.tsx create mode 100644 libs/react-components/src/experimental/checkbox-list/checkbox-list.spec.tsx create mode 100644 libs/react-components/src/experimental/checkbox-list/checkbox-list.tsx diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index dff5067192..885b9d505d 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -88,6 +88,7 @@ 3396 Text heading-2xs size 3407 Skip Focus on Tab 3407 Tabs Orientation + 3399 V2 Checkbox Spacing diff --git a/apps/prs/angular/src/app/app.routes.ts b/apps/prs/angular/src/app/app.routes.ts index 7c300d9ee0..3e11b19234 100644 --- a/apps/prs/angular/src/app/app.routes.ts +++ b/apps/prs/angular/src/app/app.routes.ts @@ -73,6 +73,7 @@ import { Feat3407SkipOnFocusTabComponent } from "../routes/features/feat3407Skip import { Feat3407StackOnMobileComponent } from "../routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component"; import { FeatV2IconsComponent } from "../routes/features/featV2Icons/feat-v2-icons.component"; import { Feat3396Component } from "../routes/features/feat3396/feat3396.component"; +import { FeatV2CheckboxComponent } from "../routes/features/featV2Checkbox/featV2Checkbox.component"; export const appRoutes: Route[] = [ { path: "everything", component: EverythingComponent }, @@ -149,4 +150,5 @@ export const appRoutes: Route[] = [ { path: "features/3396", component: Feat3396Component }, { path: "features/3407-skip-on-focus-tab", component: Feat3407SkipOnFocusTabComponent }, { path: "features/3407-stack-on-mobile", component: Feat3407StackOnMobileComponent }, + { path: "features/v2-checkbox", component: FeatV2CheckboxComponent }, ]; diff --git a/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.html b/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.html new file mode 100644 index 0000000000..908eea3d2b --- /dev/null +++ b/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.html @@ -0,0 +1,184 @@ +
+ V2 Checkbox Fixes + + + This page demonstrates fixes for checkbox spacing issues: + + + + 1. Checkbox auto-margin removed - Checkboxes no longer have + default bottom margin, fixing alignment in tables + + + 2. CheckboxList gap - CheckboxList now controls its own spacing + between items using gap: var(--goa-space-m) + + + + + + + + Test 1: Checkbox in Table + + + Previously, checkboxes in tables had unwanted bottom margin causing misalignment. + Now they align properly with the row content. + + + + + + + + + Name + Email + Status + + + + + + + + {{ row.name }} + {{ row.email }} + {{ row.status }} + + + + + + Selected: {{ selectedRows.size }} of {{ tableData.length }} rows + + + + + + + Test 2: CheckboxList Spacing + + + CheckboxList now uses gap: var(--goa-space-m) for consistent spacing between items. + Previously relied on individual checkbox margins. + + + + + + + + + + Selected: {{ checkboxListValue.length > 0 ? checkboxListValue.join(', ') : 'none' }} + + + + + + + Test 3: V2 Compact CheckboxList + + + Compact checkbox list uses smaller gap (var(--goa-space-s)) between items. + + + + + + + + + + Selected: {{ compactListValue.length > 0 ? compactListValue.join(', ') : 'none' }} + + + + + + + Test 4: V2 Standalone Checkbox (No Auto-Margin) + + + V2 checkboxes no longer have default bottom margin. + Spacing should be controlled by the parent layout. + + + + + + + + + + Notice: No extra margin between checkboxes - spacing controlled by goab-block gap. + + + + + + + V1 Regression Tests + + + These tests verify V1 checkboxes still behave correctly after the V2 spacing changes. + + + + + Test 5: V1 Standalone Checkboxes (Auto-Margin) + + + V1 checkboxes should still have their default bottom margin (space-m). + + +
+ + +
+ + + + + + Test 6: V1 CheckboxList (No Gap Change) + + + V1 checkbox lists should look the same as before - individual checkbox margins control spacing, list gap is 0. + + + + + + + + + + Selected: {{ v1ListValue.length > 0 ? v1ListValue.join(', ') : 'none' }} + +
diff --git a/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.ts b/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.ts new file mode 100644 index 0000000000..b90ed46470 --- /dev/null +++ b/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.ts @@ -0,0 +1,85 @@ +import { Component } from "@angular/core"; +import { + GoabCheckbox, + GoabCheckboxList, + GoabxCheckbox, + GoabxCheckboxList, + GoabText, + GoabTable, + GoabBlock, + GoabDivider, + GoabCheckboxOnChangeDetail, + GoabCheckboxListOnChangeDetail, +} from "@abgov/angular-components"; +import { CommonModule } from "@angular/common"; + +@Component({ + standalone: true, + selector: "abgov-feat-v2-checkbox", + templateUrl: "./featV2Checkbox.component.html", + imports: [ + CommonModule, + GoabCheckbox, + GoabCheckboxList, + GoabxCheckbox, + GoabxCheckboxList, + GoabText, + GoabTable, + GoabBlock, + GoabDivider, + ], +}) +export class FeatV2CheckboxComponent { + selectedRows: Set = new Set(); + checkboxListValue: string[] = []; + compactListValue: string[] = []; + v1ListValue: string[] = []; + + tableData = [ + { id: "row1", name: "Alice Johnson", email: "alice@example.com", status: "Active" }, + { id: "row2", name: "Bob Smith", email: "bob@example.com", status: "Pending" }, + { id: "row3", name: "Carol Davis", email: "carol@example.com", status: "Active" }, + ]; + + get allSelected(): boolean { + return this.selectedRows.size === this.tableData.length; + } + + get someSelected(): boolean { + return this.selectedRows.size > 0 && this.selectedRows.size < this.tableData.length; + } + + isRowSelected(rowId: string): boolean { + return this.selectedRows.has(rowId); + } + + toggleSelectAll(event: GoabCheckboxOnChangeDetail) { + if (event.checked) { + this.selectedRows = new Set(this.tableData.map(row => row.id)); + } else { + this.selectedRows = new Set(); + } + } + + toggleRow(rowId: string, event: GoabCheckboxOnChangeDetail) { + const newSelected = new Set(this.selectedRows); + if (event.checked) { + newSelected.add(rowId); + } else { + newSelected.delete(rowId); + } + this.selectedRows = newSelected; + } + + onCheckboxListChange(event: GoabCheckboxListOnChangeDetail) { + this.checkboxListValue = event.value; + } + + onCompactListChange(event: GoabCheckboxListOnChangeDetail) { + this.compactListValue = event.value; + } + + onV1ListChange(event: GoabCheckboxListOnChangeDetail) { + this.v1ListValue = event.value; + } +} diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index 9ea799e245..5a0e7b1015 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -98,6 +98,7 @@ export function App() { 3306 Custom slug value for tabs 3370 Clear calendar day selection 3396 Text heading-2xs size + 3399 V2 Checkbox Spacing
A diff --git a/apps/prs/react/src/main.tsx b/apps/prs/react/src/main.tsx index 4cf795a65e..edf5d1c7df 100644 --- a/apps/prs/react/src/main.tsx +++ b/apps/prs/react/src/main.tsx @@ -78,6 +78,7 @@ import { Feat2469Route } from "./routes/features/feat2469"; import { Feat3370Route } from "./routes/features/feat3370"; import { Feat3396Route } from "./routes/features/feat3396"; import { Feat3229Route } from "./routes/features/feat3229"; +import { FeatV2CheckboxRoute } from "./routes/features/featV2Checkbox"; const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); @@ -163,6 +164,7 @@ root.render( } /> } /> } /> + } /> diff --git a/apps/prs/react/src/routes/features/featV2Checkbox.tsx b/apps/prs/react/src/routes/features/featV2Checkbox.tsx new file mode 100644 index 0000000000..76116e0abd --- /dev/null +++ b/apps/prs/react/src/routes/features/featV2Checkbox.tsx @@ -0,0 +1,324 @@ +import React, { useState } from "react"; +import { + GoabBlock, + GoabText, + GoabOneColumnLayout, + GoabPageBlock, + GoabDivider, + GoabCheckbox, + GoabCheckboxList, +} from "@abgov/react-components"; +import { GoabxCheckbox, GoabxCheckboxList } from "@abgov/react-components/experimental"; +import { + GoabCheckboxOnChangeDetail, + GoabCheckboxListOnChangeDetail, +} from "@abgov/ui-components-common"; +import { Link } from "react-router-dom"; + +export function FeatV2CheckboxRoute() { + const [selectedRows, setSelectedRows] = useState>(new Set()); + const [checkboxListValue, setCheckboxListValue] = useState([]); + const [v2CompactListValue, setV2CompactListValue] = useState([]); + const [v1ListValue, setV1ListValue] = useState([]); + const [descListValue, setDescListValue] = useState([]); + const [v1DescListValue, setV1DescListValue] = useState([]); + + const tableData = [ + { id: "row1", name: "Alice Johnson", email: "alice@example.com", status: "Active" }, + { id: "row2", name: "Bob Smith", email: "bob@example.com", status: "Pending" }, + { id: "row3", name: "Carol Davis", email: "carol@example.com", status: "Active" }, + ]; + + const handleRowSelect = (rowId: string, detail: GoabCheckboxOnChangeDetail) => { + const newSelected = new Set(selectedRows); + if (detail.checked) { + newSelected.add(rowId); + } else { + newSelected.delete(rowId); + } + setSelectedRows(newSelected); + }; + + return ( + + + + + Back + + + V2 Checkbox Fixes + + + + This page demonstrates fixes for checkbox spacing issues: + + + + 1. Checkbox auto-margin removed - Checkboxes no longer have + default bottom margin, fixing alignment in tables + + + 2. CheckboxList gap - CheckboxList now controls its own spacing + between items using gap: var(--goa-space-m) + + + + + + {/* Test Case 1: Checkbox in Table */} + + Test 1: Checkbox in Table + + + Previously, checkboxes in tables had unwanted bottom margin causing misalignment. + Now they align properly with the row content. + + + + + + + 0 && selectedRows.size < tableData.length} + onChange={(detail: GoabCheckboxOnChangeDetail) => { + if (detail.checked) { + setSelectedRows(new Set(tableData.map(row => row.id))); + } else { + setSelectedRows(new Set()); + } + }} + ariaLabel="Select all rows" + /> + + Name + Email + Status + + + + {tableData.map((row) => ( + + + handleRowSelect(row.id, detail)} + ariaLabel={`Select ${row.name}`} + /> + + {row.name} + {row.email} + {row.status} + + ))} + + + + + Selected: {selectedRows.size} of {tableData.length} rows + + + + + {/* Test Case 2: CheckboxList Spacing */} + + Test 2: CheckboxList Spacing + + + CheckboxList now uses gap: var(--goa-space-m) for consistent spacing between items. + Previously relied on individual checkbox margins. + + + setCheckboxListValue(detail.value)} + > + + + + + + + Selected: {checkboxListValue.join(", ") || "none"} + + + + + {/* Test Case 2b: CheckboxList with Descriptions */} + + Test 2b: V2 CheckboxList with Descriptions + + + Testing checkbox description alignment when descriptions are set per option. + + + setDescListValue(detail.value)} + > + + + + + + + + {/* Test Case 2c: V1 CheckboxList with Descriptions (comparison) */} + + Test 2c: V1 CheckboxList with Descriptions (comparison) + + + V1 version for comparison. + + + setV1DescListValue(detail.value)} + > + + + + + + + + {/* Test Case 3: V2 Compact CheckboxList */} + + Test 3: V2 Compact CheckboxList + + + Compact checkbox list uses smaller gap (var(--goa-space-s)) between items. + + + setV2CompactListValue(detail.value)} + > + + + + + + + Selected: {v2CompactListValue.join(", ") || "none"} + + + + + {/* Test Case 4: Standalone Checkbox */} + + Test 4: V2 Standalone Checkbox (No Auto-Margin) + + + V2 checkboxes no longer have default bottom margin. + Spacing should be controlled by the parent layout. + + + + + + + + + + Notice: No extra margin between checkboxes - spacing controlled by GoabBlock gap. + + + + + {/* V1 Regression Tests */} + + V1 Regression Tests + + + These tests verify V1 checkboxes still behave correctly after the V2 spacing changes. + + + {/* Test Case 5: V1 Standalone Checkboxes */} + + Test 5: V1 Standalone Checkboxes (Auto-Margin) + + + V1 checkboxes should still have their default bottom margin (space-m). + + +
+ + +
+ + + + {/* Test Case 6: V1 CheckboxList */} + + Test 6: V1 CheckboxList (No Gap Change) + + + V1 checkbox lists should look the same as before - individual checkbox margins control spacing, list gap is 0. + + + setV1ListValue(detail.value)} + > + + + + + + + Selected: {v1ListValue.join(", ") || "none"} + +
+
+
+ ); +} diff --git a/libs/angular-components/src/experimental/checkbox-list/checkbox-list.spec.ts b/libs/angular-components/src/experimental/checkbox-list/checkbox-list.spec.ts new file mode 100644 index 0000000000..9ad664d1ec --- /dev/null +++ b/libs/angular-components/src/experimental/checkbox-list/checkbox-list.spec.ts @@ -0,0 +1,115 @@ +import { ComponentFixture, TestBed, fakeAsync, tick } from "@angular/core/testing"; +import { GoabxCheckboxList } from "./checkbox-list"; +import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; +import { ReactiveFormsModule } from "@angular/forms"; +import { fireEvent } from "@testing-library/dom"; +import { By } from "@angular/platform-browser"; +import { Spacing } from "@abgov/ui-components-common"; + +@Component({ + standalone: true, + imports: [GoabxCheckboxList], + template: ` + + + `, +}) +class TestCheckboxListComponent { + name?: string; + value?: string[]; + disabled?: boolean; + error?: boolean; + testId?: string; + maxWidth?: string; + size?: "default" | "compact"; + mt?: Spacing; + mb?: Spacing; + ml?: Spacing; + mr?: Spacing; + + onChange() { + /* do nothing */ + } +} + +describe("GoabxCheckboxList", () => { + let fixture: ComponentFixture; + let component: TestCheckboxListComponent; + + beforeEach(fakeAsync(() => { + TestBed.configureTestingModule({ + imports: [TestCheckboxListComponent, GoabxCheckboxList, ReactiveFormsModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + }).compileComponents(); + + fixture = TestBed.createComponent(TestCheckboxListComponent); + component = fixture.componentInstance; + + component.name = "foo"; + component.value = ["option1"]; + component.disabled = false; + component.error = false; + component.testId = "testId"; + component.maxWidth = "480px"; + component.size = "compact"; + component.mt = "s"; + component.mr = "m"; + component.mb = "l"; + component.ml = "xl"; + fixture.detectChanges(); + tick(); + fixture.detectChanges(); + })); + + it("should render properties", () => { + const el = fixture.debugElement.query( + By.css("goa-checkbox-list"), + ).nativeElement; + expect(el.getAttribute("name")).toBe(component.name); + expect(el.getAttribute("version")).toBe("2"); + expect(el.getAttribute("size")).toBe("compact"); + expect(el.getAttribute("testid")).toBe(component.testId); + expect(el.getAttribute("maxwidth")).toBe(component.maxWidth); + expect(el.getAttribute("mt")).toBe(component.mt); + expect(el.getAttribute("mr")).toBe(component.mr); + expect(el.getAttribute("mb")).toBe(component.mb); + expect(el.getAttribute("ml")).toBe(component.ml); + }); + + it("should default version to 2", () => { + const el = fixture.debugElement.query( + By.css("goa-checkbox-list"), + ).nativeElement; + expect(el.getAttribute("version")).toBe("2"); + }); + + it("should handle onChange event", async () => { + const onChange = jest.spyOn(component, "onChange"); + + const el = fixture.debugElement.query( + By.css("goa-checkbox-list"), + ).nativeElement; + + fireEvent( + el, + new CustomEvent("_change", { + detail: { name: "foo", value: ["option1", "option2"] }, + }), + ); + + expect(onChange).toHaveBeenCalled(); + }); +}); diff --git a/libs/angular-components/src/experimental/checkbox-list/checkbox-list.ts b/libs/angular-components/src/experimental/checkbox-list/checkbox-list.ts new file mode 100644 index 0000000000..b1da9ef847 --- /dev/null +++ b/libs/angular-components/src/experimental/checkbox-list/checkbox-list.ts @@ -0,0 +1,92 @@ +import { GoabCheckboxListOnChangeDetail } from "@abgov/ui-components-common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + EventEmitter, + Input, + Output, + forwardRef, + OnInit, + ChangeDetectorRef, + Renderer2, +} from "@angular/core"; +import { NG_VALUE_ACCESSOR } from "@angular/forms"; +import { CommonModule } from "@angular/common"; +import { GoabControlValueAccessor } from "../base.component"; + +@Component({ + standalone: true, + selector: "goabx-checkbox-list", + template: ` + + `, + schemas: [CUSTOM_ELEMENTS_SCHEMA], + imports: [CommonModule], + providers: [ + { + provide: NG_VALUE_ACCESSOR, + multi: true, + useExisting: forwardRef(() => GoabxCheckboxList), + }, + ], +}) +export class GoabxCheckboxList extends GoabControlValueAccessor implements OnInit { + isReady = false; + version = "2"; + @Input() name!: string; + @Input() maxWidth?: string; + @Input() size?: "default" | "compact" = "default"; + + // Override value to handle string arrays consistently + @Input() override value?: string[]; + + constructor( + private cdr: ChangeDetectorRef, + renderer: Renderer2, + ) { + super(renderer); + } + + ngOnInit(): void { + setTimeout(() => { + this.isReady = true; + this.cdr.detectChanges(); + }); + } + + @Output() onChange = new EventEmitter(); + + _onChange(e: Event) { + const detail = { ...(e as CustomEvent).detail, event: e }; + this.onChange.emit(detail); + this.markAsTouched(); + + // Update the form control with the selected values + const selectedValues = detail.value || []; + // clone to ensure a new reference so the underlying web component updates + this.value = [...selectedValues]; + this.fcChange?.([...selectedValues]); + } + + // Simplified writeValue - expects array input directly + override writeValue(value: string[] | null): void { + // clone to ensure a new reference and trigger downstream updates + this.value = Array.isArray(value) ? [...value] : []; + } +} diff --git a/libs/angular-components/src/experimental/index.ts b/libs/angular-components/src/experimental/index.ts index dce7588403..fc4efbf097 100644 --- a/libs/angular-components/src/experimental/index.ts +++ b/libs/angular-components/src/experimental/index.ts @@ -3,6 +3,7 @@ export * from "./button/button"; export * from "./calendar/calendar"; export * from "./callout/callout"; export * from "./checkbox/checkbox"; +export * from "./checkbox-list/checkbox-list"; export * from "./date-picker/date-picker"; export * from "./drawer/drawer"; export * from "./dropdown/dropdown"; diff --git a/libs/react-components/specs/checkbox-list-v2.browser.spec.tsx b/libs/react-components/specs/checkbox-list-v2.browser.spec.tsx new file mode 100644 index 0000000000..00ed2a6fcd --- /dev/null +++ b/libs/react-components/specs/checkbox-list-v2.browser.spec.tsx @@ -0,0 +1,303 @@ +import { render } from "vitest-browser-react"; +import { GoabxCheckboxList, GoabxCheckbox } from "../src/experimental"; +import { expect, describe, it, vi } from "vitest"; +import { useState } from "react"; +import { userEvent } from "@vitest/browser/context"; + +describe("CheckboxList V2", () => { + it("should render with version 2 set on the web component", async () => { + const Component = () => { + return ( +
+ + + + +
+ ); + }; + + const result = render(); + + const container = result.getByTestId("container"); + const checkboxList = result.getByTestId("checkbox-list"); + + expect(container).toBeTruthy(); + expect(checkboxList).toBeTruthy(); + + // V2 wrapper should set version="2" on the web component + const wcElement = container.element().querySelector("goa-checkbox-list") as any; + expect(wcElement).toBeTruthy(); + expect(wcElement.version).toBe("2"); + }); + + it("should handle checkbox selection and state management", async () => { + const Component = () => { + const [selectedValues, setSelectedValues] = useState([]); + + return ( +
+ {selectedValues.join(",")} + setSelectedValues(detail.value)} + > + + + + +
+ ); + }; + + const result = render(); + + const selectedValues = result.getByTestId("selected-values"); + const checkbox1 = result.getByTestId("checkbox-1"); + const checkbox2 = result.getByTestId("checkbox-2"); + + // Initial state should be empty + await vi.waitFor(() => { + expect(selectedValues.element().textContent).toBe(""); + }); + + // Click first checkbox + await checkbox1.click(); + await vi.waitFor(() => { + expect(selectedValues.element().textContent).toBe("option1"); + }); + + // Click second checkbox + await checkbox2.click(); + await vi.waitFor(() => { + const text = selectedValues.element().textContent || ""; + expect(text.split(",")).toEqual(expect.arrayContaining(["option1", "option2"])); + expect(text.split(",").length).toBe(2); + }); + + // Unclick first checkbox + await checkbox1.click(); + await vi.waitFor(() => { + expect(selectedValues.element().textContent).toBe("option2"); + }); + }); + + it("should handle programmatic value changes", async () => { + const Component = () => { + const [selectedValues, setSelectedValues] = useState([]); + + return ( +
+ {selectedValues.join(",")} + + + setSelectedValues(detail.value)} + > + + + + +
+ ); + }; + + const result = render(); + + const selectedValues = result.getByTestId("selected-values"); + const setValuesBtn = result.getByTestId("set-values-btn"); + const clearValuesBtn = result.getByTestId("clear-values-btn"); + + // Initial state should be empty + await vi.waitFor(() => { + expect(selectedValues.element().textContent).toBe(""); + }); + + // Set values programmatically + await setValuesBtn.click(); + await vi.waitFor( + () => { + const text = selectedValues.element().textContent || ""; + if (text === "") return false; + const values = text.split(",").filter((v) => v.trim() !== ""); + return ( + values.length === 2 && values.includes("option1") && values.includes("option3") + ); + }, + { timeout: 2000 }, + ); + + // Clear values programmatically + await clearValuesBtn.click(); + await vi.waitFor(() => { + expect(selectedValues.element().textContent).toBe(""); + }); + }); + + it("should handle disabled state", async () => { + const Component = () => { + const [isDisabled, setIsDisabled] = useState(false); + const [selectedValues, setSelectedValues] = useState([]); + + return ( +
+ {selectedValues.join(",")} + {isDisabled ? "disabled" : "enabled"} + + setSelectedValues(detail.value)} + > + + + +
+ ); + }; + + const result = render(); + + const selectedValues = result.getByTestId("selected-values"); + const disabledState = result.getByTestId("disabled-state"); + const toggleBtn = result.getByTestId("toggle-disabled-btn"); + const checkbox1 = result.getByTestId("checkbox-1"); + + // Initially not disabled - should be able to click + await vi.waitFor(() => { + expect(disabledState.element().textContent).toBe("enabled"); + }); + + await checkbox1.click(); + await vi.waitFor(() => { + expect(selectedValues.element().textContent).toBe("option1"); + }); + + // Disable the checkbox list + await toggleBtn.click(); + await vi.waitFor(() => { + expect(disabledState.element().textContent).toBe("disabled"); + }); + + // disabled state is applied + expect(disabledState.element().textContent).toBe("disabled"); + }); + + it("should propagate disabled state to child checkboxes on mount", async () => { + const Component = () => ( + + + + + ); + + const result = render(); + + // Verify child checkboxes are disabled (label gets 'disabled' class) + const checkbox1 = result.getByTestId("checkbox-1"); + const checkbox2 = result.getByTestId("checkbox-2"); + await vi.waitFor(() => { + const checkbox1El = checkbox1.element() as HTMLElement; + const checkbox2El = checkbox2.element() as HTMLElement; + expect(checkbox1El.classList.contains("disabled")).toBe(true); + expect(checkbox2El.classList.contains("disabled")).toBe(true); + }); + }); + + it("should propagate error state to child checkboxes on mount", async () => { + const Component = () => ( + + + + + ); + + const result = render(); + + // Verify child checkboxes have error state (label gets 'error' class) + const checkbox1 = result.getByTestId("checkbox-1"); + const checkbox2 = result.getByTestId("checkbox-2"); + await vi.waitFor(() => { + const checkbox1El = checkbox1.element() as HTMLElement; + const checkbox2El = checkbox2.element() as HTMLElement; + expect(checkbox1El.classList.contains("error")).toBe(true); + expect(checkbox2El.classList.contains("error")).toBe(true); + }); + }); + + it("passes the browser event in change detail", async () => { + const onChange = vi.fn(); + + const Component = () => ( + + + + ); + + const result = render(); + const checkbox = result.getByTestId("event-checkbox-1"); + + await userEvent.click(checkbox); + + await vi.waitFor(() => { + expect(onChange).toHaveBeenCalledTimes(1); + const detail = onChange.mock.calls[0][0]; + expect(detail.name).toBe("event-list"); + expect(detail.value).toEqual(["event-option1"]); + expect(detail.event).toBeInstanceOf(Event); + }); + }); + + it("should support compact size", async () => { + const Component = () => { + return ( +
+ + + + +
+ ); + }; + + const result = render(); + + const container = result.getByTestId("container"); + expect(container).toBeTruthy(); + + const wcElement = container.element().querySelector("goa-checkbox-list") as any; + expect(wcElement).toBeTruthy(); + expect(wcElement.size).toBe("compact"); + }); +}); diff --git a/libs/react-components/src/experimental/checkbox-list/checkbox-list.spec.tsx b/libs/react-components/src/experimental/checkbox-list/checkbox-list.spec.tsx new file mode 100644 index 0000000000..4239ae77b1 --- /dev/null +++ b/libs/react-components/src/experimental/checkbox-list/checkbox-list.spec.tsx @@ -0,0 +1,98 @@ +import { render } from "@testing-library/react"; +import { fireEvent } from "@testing-library/dom"; +import GoabxCheckboxList, { GoabxCheckboxListProps as CheckboxListProps } from "./checkbox-list"; +import { describe, it, expect, vi } from "vitest"; +import { GoabCheckboxListOnChangeDetail } from "@abgov/ui-components-common"; + +const testId = "test-id"; + +describe("GoabxCheckboxList", () => { + it("should render", () => { + render(); + + const checkboxList = document.querySelector("goa-checkbox-list"); + expect(checkboxList?.getAttribute("name")).toBe("foo"); + expect(checkboxList?.getAttribute("version")).toBe("2"); + expect(checkboxList?.getAttribute("disabled")).toBeNull(); + expect(checkboxList?.getAttribute("error")).toBeNull(); + }); + + it("should render with props", () => { + const props: CheckboxListProps = { + name: "foo", + value: ["option1", "option2"], + maxWidth: "480px", + size: "compact", + disabled: true, + error: true, + testId: testId, + mt: "s", + mr: "m", + mb: "l", + ml: "xl", + }; + + render(); + + const checkboxList = document.querySelector("goa-checkbox-list"); + expect(checkboxList?.getAttribute("name")).toBe("foo"); + expect(checkboxList?.getAttribute("maxwidth")).toBe("480px"); + expect(checkboxList?.getAttribute("size")).toBe("compact"); + expect(checkboxList?.getAttribute("version")).toBe("2"); + expect(checkboxList?.getAttribute("disabled")).toBe("true"); + expect(checkboxList?.getAttribute("error")).toBe("true"); + expect(checkboxList?.getAttribute("testid")).toBe(testId); + expect(checkboxList?.getAttribute("mt")).toBe("s"); + expect(checkboxList?.getAttribute("mr")).toBe("m"); + expect(checkboxList?.getAttribute("mb")).toBe("l"); + expect(checkboxList?.getAttribute("ml")).toBe("xl"); + }); + + it("should default version to 2", () => { + render(); + + const checkboxList = document.querySelector("goa-checkbox-list"); + expect(checkboxList?.getAttribute("version")).toBe("2"); + }); + + it("should handle the onChange event", async function () { + const onChangeStub = vi.fn(); + + function onChange({ name, value }: GoabCheckboxListOnChangeDetail) { + expect(name).toBe("foo"); + expect(value).toEqual(["option1"]); + onChangeStub(); + } + + const props: CheckboxListProps = { + name: "foo", + value: [], + onChange: onChange, + testId: testId, + }; + + render(); + const checkboxList = document.querySelector("goa-checkbox-list"); + + checkboxList && + fireEvent( + checkboxList, + new CustomEvent("_change", { + detail: { name: "foo", value: ["option1"] }, + }), + ); + expect(onChangeStub).toBeCalled(); + }); + + it("should render children", () => { + render( + +
Child content
+
+ ); + + const child = document.querySelector("[data-testid='child']"); + expect(child).toBeTruthy(); + expect(child?.textContent).toBe("Child content"); + }); +}); diff --git a/libs/react-components/src/experimental/checkbox-list/checkbox-list.tsx b/libs/react-components/src/experimental/checkbox-list/checkbox-list.tsx new file mode 100644 index 0000000000..88f96e1195 --- /dev/null +++ b/libs/react-components/src/experimental/checkbox-list/checkbox-list.tsx @@ -0,0 +1,94 @@ +import { + GoabCheckboxListOnChangeDetail, + Margins, +} from "@abgov/ui-components-common"; +import { useEffect, useRef, type JSX } from "react"; + +interface WCProps extends Margins { + ref: React.RefObject; + name: string; + value?: string[]; + disabled?: string; + error?: string; + testid?: string; + maxwidth?: string; + version?: string; + size?: string; +} + +declare module "react" { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace JSX { + interface IntrinsicElements { + "goa-checkbox-list": WCProps & React.HTMLAttributes; + } + } +} + +export interface GoabxCheckboxListProps extends Margins { + name: string; + value?: string[]; + disabled?: boolean; + error?: boolean; + testId?: string; + maxWidth?: string; + size?: "default" | "compact"; + children?: React.ReactNode; + onChange?: (detail: GoabCheckboxListOnChangeDetail) => void; +} + +export function GoabxCheckboxList({ + name, + value = [], + disabled, + error, + testId, + maxWidth, + size = "default", + children, + onChange, + mt, + mr, + mb, + ml, +}: GoabxCheckboxListProps): JSX.Element { + const el = useRef(null); + + useEffect(() => { + if (!el.current) return; + + const current = el.current; + const listener = (e: Event) => { + const detail = (e as CustomEvent).detail; + onChange?.({ ...detail, event: e }); + }; + + current.addEventListener("_change", listener); + + return () => { + current.removeEventListener("_change", listener); + }; + }, [onChange]); + + return ( + + {children} + + ); +} + +export default GoabxCheckboxList; diff --git a/libs/react-components/src/experimental/index.ts b/libs/react-components/src/experimental/index.ts index 84f2eb6b08..bd126fe0ff 100644 --- a/libs/react-components/src/experimental/index.ts +++ b/libs/react-components/src/experimental/index.ts @@ -3,6 +3,7 @@ export * from "./button/button"; export * from "./calendar/calendar"; export * from "./callout/callout"; export * from "./checkbox/checkbox"; +export * from "./checkbox-list/checkbox-list"; export * from "./date-picker/date-picker"; export * from "./drawer/drawer"; export * from "./dropdown/dropdown"; diff --git a/libs/react-components/src/lib/checkbox-list/checkbox-list.tsx b/libs/react-components/src/lib/checkbox-list/checkbox-list.tsx index c1d83754f6..fcaad9fc75 100644 --- a/libs/react-components/src/lib/checkbox-list/checkbox-list.tsx +++ b/libs/react-components/src/lib/checkbox-list/checkbox-list.tsx @@ -4,25 +4,6 @@ import { } from "@abgov/ui-components-common"; import { useEffect, useRef, type JSX } from "react"; -declare module "react" { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace JSX { - interface IntrinsicElements { - "goa-checkbox-list": WCProps & React.HTMLAttributes; - } - } -} - -interface WCProps extends Margins { - ref: React.RefObject; - name: string; - value?: string[]; - disabled?: string; - error?: string; - testid?: string; - maxwidth?: string; -} - export interface GoabCheckboxListProps extends Margins { name: string; value?: string[]; diff --git a/libs/web-components/src/components/checkbox-list/CheckboxList.svelte b/libs/web-components/src/components/checkbox-list/CheckboxList.svelte index 54d0ee30f4..1ba05434ab 100644 --- a/libs/web-components/src/components/checkbox-list/CheckboxList.svelte +++ b/libs/web-components/src/components/checkbox-list/CheckboxList.svelte @@ -38,6 +38,10 @@ export let testid: string = ""; /** Sets the maximum width of the checkbox list container. */ export let maxwidth: string = "none"; + /** @internal Design system version for styling. */ + export let version: "1" | "2" = "1"; + /** Sets the size of the checkbox list. 'compact' reduces spacing between items. */ + export let size: "default" | "compact" = "default"; /** Top margin. */ export let mt: Spacing = null; @@ -426,7 +430,7 @@ data-testid={testid} on:focus={onFocus} > -
+
@@ -449,4 +453,12 @@ flex-direction: column; gap: 0; } + + .checkbox-container.v2 { + gap: var(--goa-space-m); + } + + .checkbox-container.v2.compact { + gap: var(--goa-space-s); + } diff --git a/libs/web-components/src/components/checkbox/Checkbox.svelte b/libs/web-components/src/components/checkbox/Checkbox.svelte index 4d9fdf94d6..a94dc336b2 100644 --- a/libs/web-components/src/components/checkbox/Checkbox.svelte +++ b/libs/web-components/src/components/checkbox/Checkbox.svelte @@ -103,7 +103,10 @@ // hold on to the initial value to prevent losing it on check changes _value = value; _descriptionId = `description_${name}`; - mb ??= size === "compact" ? "s" : "m"; + + // V1: preserve backwards-compatible auto-margin + // V2: parent controls spacing, no auto-margin + if (version === "1") mb ??= size === "compact" ? "s" : "m"; addRelayListener(); addRevealSlotListener(); @@ -420,7 +423,7 @@ max-width: ${maxwidth}; .description { font: var(--goa-checkbox-description-font-size); - margin-left: var(--goa-space-xl); + margin-left: calc(var(--goa-checkbox-size) + var(--goa-checkbox-gap)); margin-top: var(--goa-space-2xs); /* Space between text and description */ } @@ -647,4 +650,8 @@ max-width: ${maxwidth}; padding-left: var(--goa-checkbox-gap-compact); font: var(--goa-checkbox-label-font-size-compact); } + + .compact .description { + margin-left: calc(var(--goa-checkbox-size) + var(--goa-checkbox-gap-compact)); + } From b7e7433c499094f17f416fec81b83bd9c61d7248 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 19:33:29 +0000 Subject: [PATCH 018/103] chore(deps): bump @angular/core from 20.3.16 to 20.3.17 Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) from 20.3.16 to 20.3.17. - [Release notes](https://github.com/angular/angular/releases) - [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md) - [Commits](https://github.com/angular/angular/commits/v20.3.17/packages/core) --- updated-dependencies: - dependency-name: "@angular/core" dependency-version: 20.3.17 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8d66219f6..a896d5819b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@angular/animations": "20.1.6", "@angular/common": "20.3.14", "@angular/compiler": "^20.3.16", - "@angular/core": "^20.3.16", + "@angular/core": "^20.3.17", "@angular/forms": "20.1.6", "@angular/platform-browser": "20.1.6", "@angular/platform-browser-dynamic": "20.1.6", @@ -2038,9 +2038,9 @@ } }, "node_modules/@angular/core": { - "version": "20.3.16", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.16.tgz", - "integrity": "sha512-KSFPKvOmWWLCJBbEO+CuRUXfecX2FRuO0jNi9c54ptXMOPHlK1lIojUnyXmMNzjdHgRug8ci9qDuftvC2B7MKg==", + "version": "20.3.17", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.17.tgz", + "integrity": "sha512-YlQqxMeHI9XJw7I7oM3hYFQd4lQbK37IdlD9ztROIw5FjX6i6lmLU7+X1MQGSRi2r+X9l3IZtl33hRTNvkoUBw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2049,7 +2049,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "20.3.16", + "@angular/compiler": "20.3.17", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0" }, diff --git a/package.json b/package.json index 3450ccbd7a..804fe86b3f 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "@angular/animations": "20.1.6", "@angular/common": "20.3.14", "@angular/compiler": "^20.3.16", - "@angular/core": "^20.3.16", + "@angular/core": "^20.3.17", "@angular/forms": "20.1.6", "@angular/platform-browser": "20.1.6", "@angular/platform-browser-dynamic": "20.1.6", From 3372f989d60ba2cf7152dd2ea8eadab964293962 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 19:33:45 +0000 Subject: [PATCH 019/103] chore(deps-dev): bump rollup and @angular-devkit/build-angular Bumps [rollup](https://github.com/rollup/rollup) and [@angular-devkit/build-angular](https://github.com/angular/angular-cli). These dependencies needed to be updated together. Updates `rollup` from 4.53.2 to 4.59.0 - [Release notes](https://github.com/rollup/rollup/releases) - [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md) - [Commits](https://github.com/rollup/rollup/compare/v4.53.2...v4.59.0) Updates `@angular-devkit/build-angular` from 20.3.17 to 20.3.17 - [Release notes](https://github.com/angular/angular-cli/releases) - [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md) - [Commits](https://github.com/angular/angular-cli/compare/v20.3.17...v20.3.17) --- updated-dependencies: - dependency-name: rollup dependency-version: 4.59.0 dependency-type: direct:development - dependency-name: "@angular-devkit/build-angular" dependency-version: 20.3.17 dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- package-lock.json | 228 +++++++++++++++++++++++++++------------------- package.json | 4 +- 2 files changed, 137 insertions(+), 95 deletions(-) diff --git a/package-lock.json b/package-lock.json index a896d5819b..566b520637 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,7 @@ "@abgov/design-tokens": "^1.10.0", "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", "@abgov/nx-release": "^12.0.0", - "@angular-devkit/build-angular": "^20.3.16", + "@angular-devkit/build-angular": "^20.3.17", "@angular-devkit/core": "20.1.5", "@angular-devkit/schematics": "20.1.5", "@angular-eslint/eslint-plugin": "18.0.1", @@ -109,7 +109,7 @@ "postcss-url": "~10.1.3", "prettier": "^3.2.0", "prettier-plugin-svelte": "^3.1.2", - "rollup": "^4.9.6", + "rollup": "^4.59.0", "semantic-release": "^25.0.3", "svelte": "^4.2.20", "svelte-check": "^3.6.2", @@ -16442,9 +16442,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", - "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", "cpu": [ "arm" ], @@ -16455,9 +16455,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", - "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", "cpu": [ "arm64" ], @@ -16468,9 +16468,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", - "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", "cpu": [ "arm64" ], @@ -16481,9 +16481,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", - "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", "cpu": [ "x64" ], @@ -16494,9 +16494,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", - "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", "cpu": [ "arm64" ], @@ -16507,9 +16507,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", - "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", "cpu": [ "x64" ], @@ -16520,9 +16520,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", - "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", "cpu": [ "arm" ], @@ -16533,9 +16533,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", - "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", "cpu": [ "arm" ], @@ -16546,9 +16546,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", - "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", "cpu": [ "arm64" ], @@ -16559,9 +16559,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", - "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", "cpu": [ "arm64" ], @@ -16572,9 +16572,22 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", - "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", "cpu": [ "loong64" ], @@ -16585,9 +16598,22 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", - "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", "cpu": [ "ppc64" ], @@ -16598,9 +16624,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", - "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", "cpu": [ "riscv64" ], @@ -16611,9 +16637,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", - "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", "cpu": [ "riscv64" ], @@ -16624,9 +16650,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", - "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", "cpu": [ "s390x" ], @@ -16637,9 +16663,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", - "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", "cpu": [ "x64" ], @@ -16650,9 +16676,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", - "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", "cpu": [ "x64" ], @@ -16662,10 +16688,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", - "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", "cpu": [ "arm64" ], @@ -16676,9 +16715,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", - "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", "cpu": [ "arm64" ], @@ -16689,9 +16728,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", - "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", "cpu": [ "ia32" ], @@ -16702,9 +16741,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", - "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", "cpu": [ "x64" ], @@ -16715,9 +16754,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", - "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", "cpu": [ "x64" ], @@ -43069,9 +43108,9 @@ } }, "node_modules/rollup": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", - "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -43084,28 +43123,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.53.2", - "@rollup/rollup-android-arm64": "4.53.2", - "@rollup/rollup-darwin-arm64": "4.53.2", - "@rollup/rollup-darwin-x64": "4.53.2", - "@rollup/rollup-freebsd-arm64": "4.53.2", - "@rollup/rollup-freebsd-x64": "4.53.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", - "@rollup/rollup-linux-arm-musleabihf": "4.53.2", - "@rollup/rollup-linux-arm64-gnu": "4.53.2", - "@rollup/rollup-linux-arm64-musl": "4.53.2", - "@rollup/rollup-linux-loong64-gnu": "4.53.2", - "@rollup/rollup-linux-ppc64-gnu": "4.53.2", - "@rollup/rollup-linux-riscv64-gnu": "4.53.2", - "@rollup/rollup-linux-riscv64-musl": "4.53.2", - "@rollup/rollup-linux-s390x-gnu": "4.53.2", - "@rollup/rollup-linux-x64-gnu": "4.53.2", - "@rollup/rollup-linux-x64-musl": "4.53.2", - "@rollup/rollup-openharmony-arm64": "4.53.2", - "@rollup/rollup-win32-arm64-msvc": "4.53.2", - "@rollup/rollup-win32-ia32-msvc": "4.53.2", - "@rollup/rollup-win32-x64-gnu": "4.53.2", - "@rollup/rollup-win32-x64-msvc": "4.53.2", + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" } }, diff --git a/package.json b/package.json index 804fe86b3f..aeb259ffa5 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", "@abgov/design-tokens": "^1.10.0", "@abgov/nx-release": "^12.0.0", - "@angular-devkit/build-angular": "^20.3.16", + "@angular-devkit/build-angular": "^20.3.17", "@angular-devkit/core": "20.1.5", "@angular-devkit/schematics": "20.1.5", "@angular-eslint/eslint-plugin": "18.0.1", @@ -107,7 +107,7 @@ "postcss-url": "~10.1.3", "prettier": "^3.2.0", "prettier-plugin-svelte": "^3.1.2", - "rollup": "^4.9.6", + "rollup": "^4.59.0", "semantic-release": "^25.0.3", "svelte": "^4.2.20", "svelte-check": "^3.6.2", From d6e39690c0707147582799885574ae790537a007 Mon Sep 17 00:00:00 2001 From: Eric Hoff Date: Mon, 2 Mar 2026 23:31:34 -0700 Subject: [PATCH 020/103] fix: calendar specs are failing due to a hardcoded date --- .../src/components/calendar/calendar.spec.ts | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/libs/web-components/src/components/calendar/calendar.spec.ts b/libs/web-components/src/components/calendar/calendar.spec.ts index 5b29f11abe..5d4424265d 100644 --- a/libs/web-components/src/components/calendar/calendar.spec.ts +++ b/libs/web-components/src/components/calendar/calendar.spec.ts @@ -154,22 +154,19 @@ it("emits an event when a date is selected", async () => { it("updates the calendar when a new month is selected", async () => { const year = 2026; - const month = 4; + const month = 4; // 0-indexed: May const day = 1; - const date = new Date(year, month, day); + const date = new Date(year, month, day); // May 1, 2026 const { container, queryByTestId } = render(Calendar, { - value: `${year}-0${month}-${day}`, + value: getDateStamp(date), // "2026-05-01" (1-indexed month) }); await tick(); const dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; const monthsEl = queryByTestId("months"); - const today = toDayStart(new Date()); - today.setDate(1); - - // validate the day of the first day for the current month + // validate the day of the first day for the current month (May) { const dayOfWeek = date.getDay(); const buttonEl = container.querySelector( @@ -180,24 +177,33 @@ it("updates the calendar when a new month is selected", async () => { expect((buttonEl as HTMLElement).dataset.day).toBe(dayNames[dayOfWeek]); } - // The date should be selected + // The date should be selected and visible in the calendar grid expect(container.querySelector(".selected")).toBeTruthy(); - // change month - const nextMonth = addMonths(today, 1); + // change to a different month + const nextMonthIndex = month + 2; monthsEl?.dispatchEvent( new CustomEvent("_change", { - detail: { type: "month", value: nextMonth.getMonth() + 1 }, + detail: { type: "month", value: nextMonthIndex + 1 }, // 1-indexed }), ); - await waitFor(() => { - const date = toDayStart(nextMonth); - date.setMonth(nextMonth.getMonth() - 1); // revert to 0-index value - date.setDate(1); + const nextMonthFirstDay = new Date(year, nextMonthIndex, 1); // July 1, 2026 + await waitFor(() => { // 3370: After changing the month a day in the new month should not be selected expect(container.querySelector(".selected")).toBeFalsy(); + + // The calendar grid should now show the new month's dates + const buttonEl = container.querySelector( + `[data-date="${getDateStamp(nextMonthFirstDay)}"]`, + ); + expect(buttonEl).toBeTruthy(); + const dayEl = buttonEl?.querySelector("[data-testid=date]"); + expect(dayEl?.innerHTML).toBe("1"); + expect((buttonEl as HTMLElement).dataset.day).toBe( + dayNames[nextMonthFirstDay.getDay()], + ); }); }); From 8a1963170d9e0f3970820121eadac37c37f5dc01 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Tue, 3 Mar 2026 15:34:08 -0700 Subject: [PATCH 021/103] chore: nx updates --- package-lock.json | 2497 ++++++++++++++++++++------------------------- package.json | 22 +- 2 files changed, 1109 insertions(+), 1410 deletions(-) diff --git a/package-lock.json b/package-lock.json index 566b520637..7f8e02f206 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,16 +52,16 @@ "@babel/core": "^7.14.5", "@babel/preset-react": "^7.14.5", "@faker-js/faker": "^8.3.1", - "@nx/angular": "22.5.2", - "@nx/eslint": "22.5.2", - "@nx/eslint-plugin": "22.5.2", - "@nx/jest": "22.5.2", - "@nx/js": "22.5.2", - "@nx/react": "22.5.2", - "@nx/vite": "22.5.2", - "@nx/vitest": "22.5.2", - "@nx/web": "22.5.2", - "@nx/workspace": "22.5.2", + "@nx/angular": "22.5.3", + "@nx/eslint": "22.5.3", + "@nx/eslint-plugin": "22.5.3", + "@nx/jest": "22.5.3", + "@nx/js": "22.5.3", + "@nx/react": "22.5.3", + "@nx/vite": "22.5.3", + "@nx/vitest": "22.5.3", + "@nx/web": "22.5.3", + "@nx/workspace": "22.5.3", "@schematics/angular": "20.1.5", "@sveltejs/vite-plugin-svelte": "^3.0.1", "@swc-node/register": "1.11.1", @@ -100,7 +100,7 @@ "jsdom": "^26.1.0", "jsonc-eslint-parser": "^2.1.0", "ng-packagr": "20.1.0", - "nx": "22.5.2", + "nx": "22.5.3", "playwright": "^1.50.1", "postcss": "^8.4.5", "postcss-import": "~14.1.0", @@ -212,57 +212,57 @@ "license": "MIT" }, "node_modules/@algolia/abtesting": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.12.2.tgz", - "integrity": "sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.14.1.tgz", + "integrity": "sha512-Dkj0BgPiLAaim9sbQ97UKDFHJE/880wgStAM18U++NaJ/2Cws34J5731ovJifr6E3Pv4T2CqvMXf8qLCC417Ew==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-abtesting": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.46.2.tgz", - "integrity": "sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.48.1.tgz", + "integrity": "sha512-LV5qCJdj+/m9I+Aj91o+glYszrzd7CX6NgKaYdTOj4+tUYfbS62pwYgUfZprYNayhkQpVFcrW8x8ZlIHpS23Vw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.46.2.tgz", - "integrity": "sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.48.1.tgz", + "integrity": "sha512-/AVoMqHhPm14CcHq7mwB+bUJbfCv+jrxlNvRjXAuO+TQa+V37N8k1b0ijaRBPdmSjULMd8KtJbQyUyabXOu6Kg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.46.2.tgz", - "integrity": "sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.48.1.tgz", + "integrity": "sha512-VXO+qu2Ep6ota28ktvBm3sG53wUHS2n7bgLWmce5jTskdlCD0/JrV4tnBm1l7qpla1CeoQb8D7ShFhad+UoSOw==", "dev": true, "license": "MIT", "engines": { @@ -270,151 +270,151 @@ } }, "node_modules/@algolia/client-insights": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.46.2.tgz", - "integrity": "sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.48.1.tgz", + "integrity": "sha512-zl+Qyb0nLg+Y5YvKp1Ij+u9OaPaKg2/EPzTwKNiVyOHnQJlFxmXyUZL1EInczAZsEY8hVpPCLtNfhMhfxluXKQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.46.2.tgz", - "integrity": "sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.48.1.tgz", + "integrity": "sha512-r89Qf9Oo9mKWQXumRu/1LtvVJAmEDpn8mHZMc485pRfQUMAwSSrsnaw1tQ3sszqzEgAr1c7rw6fjBI+zrAXTOw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.46.2.tgz", - "integrity": "sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.48.1.tgz", + "integrity": "sha512-TPKNPKfghKG/bMSc7mQYD9HxHRUkBZA4q1PEmHgICaSeHQscGqL4wBrKkhfPlDV1uYBKW02pbFMUhsOt7p4ZpA==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.46.2.tgz", - "integrity": "sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.48.1.tgz", + "integrity": "sha512-4Fu7dnzQyQmMFknYwTiN/HxPbH4DyxvQ1m+IxpPp5oslOgz8m6PG5qhiGbqJzH4HiT1I58ecDiCAC716UyVA8Q==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/ingestion": { - "version": "1.46.2", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.46.2.tgz", - "integrity": "sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==", + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.48.1.tgz", + "integrity": "sha512-/RFq3TqtXDUUawwic/A9xylA2P3LDMO8dNhphHAUOU51b1ZLHrmZ6YYJm3df1APz7xLY1aht6okCQf+/vmrV9w==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.46.2", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.46.2.tgz", - "integrity": "sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==", + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.48.1.tgz", + "integrity": "sha512-Of0jTeAZRyRhC7XzDSjJef0aBkgRcvRAaw0ooYRlOw57APii7lZdq+layuNdeL72BRq1snaJhoMMwkmLIpJScw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.46.2.tgz", - "integrity": "sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.48.1.tgz", + "integrity": "sha512-bE7JcpFXzxF5zHwj/vkl2eiCBvyR1zQ7aoUdO+GDXxGp0DGw7nI0p8Xj6u8VmRQ+RDuPcICFQcCwRIJT5tDJFw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.46.2.tgz", - "integrity": "sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.48.1.tgz", + "integrity": "sha512-MK3wZ2koLDnvH/AmqIF1EKbJlhRS5j74OZGkLpxI4rYvNi9Jn/C7vb5DytBnQ4KUWts7QsmbdwHkxY5txQHXVw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2" + "@algolia/client-common": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.46.2.tgz", - "integrity": "sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.48.1.tgz", + "integrity": "sha512-2oDT43Y5HWRSIQMPQI4tA/W+TN/N2tjggZCUsqQV440kxzzoPGsvv9QP1GhQ4CoDa+yn6ygUsGp6Dr+a9sPPSg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2" + "@algolia/client-common": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.46.2.tgz", - "integrity": "sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.48.1.tgz", + "integrity": "sha512-xcaCqbhupVWhuBP1nwbk1XNvwrGljozutEiLx06mvqDf3o8cHyEgQSHS4fKJM+UAggaWVnnFW+Nne5aQ8SUJXg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2" + "@algolia/client-common": "5.48.1" }, "engines": { "node": ">= 14.0.0" @@ -435,13 +435,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.2003.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.17.tgz", - "integrity": "sha512-e6Mo4xFIhmtPLhjeai3kBW0yViHEtZ+210tcWfuEnPGRgr8X4rMxkYQRAT2X9dqgtsG+TmVZFHAN/Gbs6Tvr7Q==", + "version": "0.2003.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.18.tgz", + "integrity": "sha512-pPEDby3wQb40YSpH+UrjodJ78Z7q0Qvy3DTkS7mP2EIM4r0WVz8OlxLGS2uAc6tXSbIZe0bPp0B56P6uet3tUw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "20.3.17", + "@angular-devkit/core": "20.3.18", "rxjs": "7.8.2" }, "engines": { @@ -451,13 +451,13 @@ } }, "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { - "version": "20.3.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.17.tgz", - "integrity": "sha512-xlBT8rmyTjb5P/p6wDHp0EleagptjSHGNsJwqSY4FdIG0p59ezAbb2wbQGqkYDxuoptFSLUpAGE7sNWZ5OiLWw==", + "version": "20.3.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.18.tgz", + "integrity": "sha512-zGWMjMqE8qXYr8baYCs43k9HlKz9J4Gh3Yx+7XE0uS0Y1LXzzALevSoUw7GIPdSvOriQJAEgtWE6QKssqSGltQ==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "8.17.1", + "ajv": "8.18.0", "ajv-formats": "3.0.1", "jsonc-parser": "3.3.1", "picomatch": "4.0.3", @@ -478,6 +478,23 @@ } } }, + "node_modules/@angular-devkit/architect/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/@angular-devkit/architect/node_modules/source-map": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", @@ -489,17 +506,17 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "20.3.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.3.17.tgz", - "integrity": "sha512-WfwNWvceo7kF2+4zaJHhZ7dwG5rjCkHgrGQF15cJbCOp81dTu4nmDCfU0ndB1knisg4ObE6HYUb6lFUNaZ5VCQ==", + "version": "20.3.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.3.18.tgz", + "integrity": "sha512-ERjoEHnWDi9FFf7HBvJuWoDVHHEBvUL43vPp7vUAf3+0u/qOzXmuxFccdzT72BM1wU3y70MAXB76TUkr/KrxBA==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2003.17", - "@angular-devkit/build-webpack": "0.2003.17", - "@angular-devkit/core": "20.3.17", - "@angular/build": "20.3.17", + "@angular-devkit/architect": "0.2003.18", + "@angular-devkit/build-webpack": "0.2003.18", + "@angular-devkit/core": "20.3.18", + "@angular/build": "20.3.18", "@babel/core": "7.28.3", "@babel/generator": "7.28.3", "@babel/helper-annotate-as-pure": "7.27.3", @@ -510,7 +527,7 @@ "@babel/preset-env": "7.28.3", "@babel/runtime": "7.28.3", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "20.3.17", + "@ngtools/webpack": "20.3.18", "ansi-colors": "4.1.3", "autoprefixer": "10.4.21", "babel-loader": "10.0.0", @@ -565,7 +582,7 @@ "@angular/platform-browser": "^20.0.0", "@angular/platform-server": "^20.0.0", "@angular/service-worker": "^20.0.0", - "@angular/ssr": "^20.3.17", + "@angular/ssr": "^20.3.18", "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", "jest": "^29.5.0 || ^30.2.0", @@ -622,13 +639,13 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { - "version": "20.3.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.17.tgz", - "integrity": "sha512-xlBT8rmyTjb5P/p6wDHp0EleagptjSHGNsJwqSY4FdIG0p59ezAbb2wbQGqkYDxuoptFSLUpAGE7sNWZ5OiLWw==", + "version": "20.3.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.18.tgz", + "integrity": "sha512-zGWMjMqE8qXYr8baYCs43k9HlKz9J4Gh3Yx+7XE0uS0Y1LXzzALevSoUw7GIPdSvOriQJAEgtWE6QKssqSGltQ==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "8.17.1", + "ajv": "8.18.0", "ajv-formats": "3.0.1", "jsonc-parser": "3.3.1", "picomatch": "4.0.3", @@ -690,6 +707,23 @@ "semver": "bin/semver.js" } }, + "node_modules/@angular-devkit/build-angular/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/autoprefixer": { "version": "10.4.21", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", @@ -760,13 +794,13 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.2003.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2003.17.tgz", - "integrity": "sha512-hN8C+fg16RQN7YfoevhhjU57yrpo5/861KvFvLlohAjC9JovqN66fFPQ2O5nHIJvjSwa7QLsoeLyrGFQ0mtvOQ==", + "version": "0.2003.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2003.18.tgz", + "integrity": "sha512-E70aiRrmnzk+nMQnEpg7KemqhjyI2X53zCC+1SGAVIISmtKyHQNoJDXa48im+bhrcjHpY2LOo0bFgb/vcWHc8A==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2003.17", + "@angular-devkit/architect": "0.2003.18", "rxjs": "7.8.2" }, "engines": { @@ -927,14 +961,14 @@ } }, "node_modules/@angular/build": { - "version": "20.3.17", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.17.tgz", - "integrity": "sha512-HCHFZrBEyR1aWwkWH1MnSFAIwgzU31bEYbB4cFeOR+HKFJwglMamkv1MPHsF3+TZxYioJa5ieF/ipI1KTXZLUg==", + "version": "20.3.18", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.18.tgz", + "integrity": "sha512-t+Bg0uxnyrbm5ADa8Ka5rz4bSdf8ScCnY8Hua3bLnIPITzeuuunV7a14zMSOcPL6eLu0760CvszHsGX1k6aN7A==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2003.17", + "@angular-devkit/architect": "0.2003.18", "@babel/core": "7.28.3", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", @@ -952,7 +986,7 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.3", - "rollup": "4.52.3", + "rollup": "4.59.0", "sass": "1.90.0", "semver": "7.7.2", "source-map-support": "0.5.21", @@ -976,7 +1010,7 @@ "@angular/platform-browser": "^20.0.0", "@angular/platform-server": "^20.0.0", "@angular/service-worker": "^20.0.0", - "@angular/ssr": "^20.3.17", + "@angular/ssr": "^20.3.18", "karma": "^6.4.0", "less": "^4.2.0", "ng-packagr": "^20.0.0", @@ -1066,314 +1100,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@angular/build/node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz", - "integrity": "sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.3.tgz", - "integrity": "sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz", - "integrity": "sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.3.tgz", - "integrity": "sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.3.tgz", - "integrity": "sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.3.tgz", - "integrity": "sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.3.tgz", - "integrity": "sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.3.tgz", - "integrity": "sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.3.tgz", - "integrity": "sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.3.tgz", - "integrity": "sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.3.tgz", - "integrity": "sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.3.tgz", - "integrity": "sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.3.tgz", - "integrity": "sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.3.tgz", - "integrity": "sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.3.tgz", - "integrity": "sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.3.tgz", - "integrity": "sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.3.tgz", - "integrity": "sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.3.tgz", - "integrity": "sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.3.tgz", - "integrity": "sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.3.tgz", - "integrity": "sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.3.tgz", - "integrity": "sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@angular/build/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz", - "integrity": "sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@angular/build/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -1381,48 +1107,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@angular/build/node_modules/rollup": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz", - "integrity": "sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.3", - "@rollup/rollup-android-arm64": "4.52.3", - "@rollup/rollup-darwin-arm64": "4.52.3", - "@rollup/rollup-darwin-x64": "4.52.3", - "@rollup/rollup-freebsd-arm64": "4.52.3", - "@rollup/rollup-freebsd-x64": "4.52.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.3", - "@rollup/rollup-linux-arm-musleabihf": "4.52.3", - "@rollup/rollup-linux-arm64-gnu": "4.52.3", - "@rollup/rollup-linux-arm64-musl": "4.52.3", - "@rollup/rollup-linux-loong64-gnu": "4.52.3", - "@rollup/rollup-linux-ppc64-gnu": "4.52.3", - "@rollup/rollup-linux-riscv64-gnu": "4.52.3", - "@rollup/rollup-linux-riscv64-musl": "4.52.3", - "@rollup/rollup-linux-s390x-gnu": "4.52.3", - "@rollup/rollup-linux-x64-gnu": "4.52.3", - "@rollup/rollup-linux-x64-musl": "4.52.3", - "@rollup/rollup-openharmony-arm64": "4.52.3", - "@rollup/rollup-win32-arm64-msvc": "4.52.3", - "@rollup/rollup-win32-ia32-msvc": "4.52.3", - "@rollup/rollup-win32-x64-gnu": "4.52.3", - "@rollup/rollup-win32-x64-msvc": "4.52.3", - "fsevents": "~2.3.2" - } - }, "node_modules/@angular/build/node_modules/vite": { "version": "7.1.11", "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz", @@ -1516,31 +1200,30 @@ } }, "node_modules/@angular/cli": { - "version": "21.1.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.1.5.tgz", - "integrity": "sha512-ljqvAzSk8FKMaYW/aZhR+SXjudbQViYYkMlJvJUClGpokjDM9KfJWPX+QZfr2J+piW5yaaHmFaIMddO9QxkUDQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.0.tgz", + "integrity": "sha512-yaGEpckqgOemcHkoWeH92i9eNrcbr9iE/dnxL+Du6s9spTAXJ2jjtYfszhmowuQZkCK5rjecMb8ctNtHlaGCjg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2101.5", - "@angular-devkit/core": "21.1.5", - "@angular-devkit/schematics": "21.1.5", + "@angular-devkit/architect": "0.2102.0", + "@angular-devkit/core": "21.2.0", + "@angular-devkit/schematics": "21.2.0", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", "@modelcontextprotocol/sdk": "1.26.0", - "@schematics/angular": "21.1.5", + "@schematics/angular": "21.2.0", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.46.2", + "algoliasearch": "5.48.1", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", "npm-package-arg": "13.0.2", - "pacote": "21.0.4", + "pacote": "21.3.1", "parse5-html-rewriting-stream": "8.0.0", - "resolve": "1.22.11", - "semver": "7.7.3", + "semver": "7.7.4", "yargs": "18.0.0", - "zod": "4.3.5" + "zod": "4.3.6" }, "bin": { "ng": "bin/ng.js" @@ -1552,13 +1235,13 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { - "version": "0.2101.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2101.5.tgz", - "integrity": "sha512-eTo6wWzUW5AyBBLTbaUTpBHhGbZhzteErtNGklWkhjicCr/soNH+2mVtvg8bqA8sNreYffK1VXKFsq5NyMh5qg==", + "version": "0.2102.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.0.tgz", + "integrity": "sha512-kYFwTNzToG2SJMxj2f41w3QRtdqlrFuF+bpZrtIaHOP078Ktld8EPIp9KqB0Y46Vvs69ifby5Q1/wPD9wA3iaw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.5", + "@angular-devkit/core": "21.2.0", "rxjs": "7.8.2" }, "bin": { @@ -1571,9 +1254,9 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/core": { - "version": "21.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.5.tgz", - "integrity": "sha512-KUKbllHvHefkAbTBjWNpRPyrpBqecW+6HBBAR+XNbKBuFTHkG+gxtuwMXNsvO5KECKwQphvQt5h3g05Xtaf0LQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.0.tgz", + "integrity": "sha512-HZdTn46Ca6qbb9Zef8R/+TWsk6mNKRm4rJyL3PxHP6HnVCwSPNZ0LNN9BjVREBs+UlRdXqBGFBZh5D1nBgu5GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1599,16 +1282,16 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/schematics": { - "version": "21.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.1.5.tgz", - "integrity": "sha512-CGmoorQL5+mVCJEHwHWOrhSd1hFxB3h66i9wUDizJAEQUM3mSml5SiglHArpWY/G4GmFwi6XVe+Jm3U8J/mcFg==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.0.tgz", + "integrity": "sha512-3kn3FI5v7BQ7Zct6raek+WgvyDwOJ8wElbyC903GxMQCDBRGGcevhHvTAIHhknihEsrgplzPhTlWeMbk1JfdFg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.5", + "@angular-devkit/core": "21.2.0", "jsonc-parser": "3.3.1", "magic-string": "0.30.21", - "ora": "9.0.0", + "ora": "9.3.0", "rxjs": "7.8.2" }, "engines": { @@ -1618,14 +1301,14 @@ } }, "node_modules/@angular/cli/node_modules/@schematics/angular": { - "version": "21.1.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.1.5.tgz", - "integrity": "sha512-AndJ17ePYUoqJqiIF9VaXbGAFfOqDcHuAxhwozsQlWDzwgQSOUC/WWeG9hKVCgMD6tE02Sxr2ova9DiBKsLQNg==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.0.tgz", + "integrity": "sha512-GQUIeGzZwCT9/W5MAkKnkwETROPbA1eRmy3JF56jLmvr95tJnypGOG8jGYy0d+tcEVujIouh48r4J3bJQg5mrw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.5", - "@angular-devkit/schematics": "21.1.5", + "@angular-devkit/core": "21.2.0", + "@angular-devkit/schematics": "21.2.0", "jsonc-parser": "3.3.1" }, "engines": { @@ -1796,9 +1479,9 @@ } }, "node_modules/@angular/cli/node_modules/ora": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-9.0.0.tgz", - "integrity": "sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-9.3.0.tgz", + "integrity": "sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==", "dev": true, "license": "MIT", "dependencies": { @@ -1808,9 +1491,8 @@ "is-interactive": "^2.0.0", "is-unicode-supported": "^2.1.0", "log-symbols": "^7.0.1", - "stdin-discarder": "^0.2.2", - "string-width": "^8.1.0", - "strip-ansi": "^7.1.2" + "stdin-discarder": "^0.3.1", + "string-width": "^8.1.0" }, "engines": { "node": ">=20" @@ -1820,9 +1502,9 @@ } }, "node_modules/@angular/cli/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -1859,6 +1541,19 @@ "node": ">= 12" } }, + "node_modules/@angular/cli/node_modules/stdin-discarder": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.1.tgz", + "integrity": "sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@angular/cli/node_modules/string-width": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.1.tgz", @@ -5489,9 +5184,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -5542,9 +5237,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -5606,9 +5301,9 @@ "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -5658,6 +5353,19 @@ "npm": ">=6.14.13" } }, + "node_modules/@gar/promise-retry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.2.tgz", + "integrity": "sha512-Lm/ZLhDZcBECta3TmCQSngiQykFdfw+QtI1/GYMsZd4l3nG+P8WLB16XuS7WaBGLQ+9E+cOcWQsth9cayuGt8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "retry": "^0.13.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, "node_modules/@hono/node-server": { "version": "1.19.9", "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.9.tgz", @@ -5699,9 +5407,9 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -6575,7 +6283,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, "license": "MIT", "engines": { "node": "20 || >=22" @@ -6585,7 +6292,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "dev": true, "license": "MIT", "dependencies": { "@isaacs/balanced-match": "^4.0.1" @@ -7817,22 +7523,22 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.57.5", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.5.tgz", - "integrity": "sha512-QwbB6UgdB+ASXA2kdhuOfBOkVdE4PO+rETfBhbIakE3eTSd3gwUvL8PBf4YVRJUq1aBWYP8lkp7PzUShvh2ODw==", + "version": "7.56.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.56.3.tgz", + "integrity": "sha512-fRqok4aRNq5GpgGBv2fKlSSKbirPKTJ75vQefthB5x9dwt4Zz+AezUzdc1p/AG4wUBIgmhjcEwn/Rj+N4Wh4Mw==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/api-extractor-model": "7.33.3", + "@microsoft/api-extractor-model": "7.32.2", "@microsoft/tsdoc": "~0.16.0", "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.20.3", - "@rushstack/rig-package": "0.7.2", - "@rushstack/terminal": "0.22.3", - "@rushstack/ts-command-line": "5.3.3", + "@rushstack/node-core-library": "5.19.1", + "@rushstack/rig-package": "0.6.0", + "@rushstack/terminal": "0.21.0", + "@rushstack/ts-command-line": "5.2.0", "diff": "~8.0.2", "lodash": "~4.17.23", - "minimatch": "10.2.1", + "minimatch": "10.1.2", "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", @@ -7843,38 +7549,15 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.33.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.3.tgz", - "integrity": "sha512-EMwfPbyt0bAxPEOf2skhaURyNayxSDinjyInOuZJleG1Zb4YmDrKpNP9XRI01jfJCT1OKdUyEIuX5GYHi11y2A==", + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.32.2.tgz", + "integrity": "sha512-Ussc25rAalc+4JJs9HNQE7TuO9y6jpYQX9nWD1DhqUzYPBr3Lr7O9intf+ZY8kD5HnIqeIRJX7ccCT0QyBy2Ww==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "~0.16.0", "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.20.3" - } - }, - "node_modules/@microsoft/api-extractor/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@microsoft/api-extractor/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "@rushstack/node-core-library": "5.19.1" } }, "node_modules/@microsoft/api-extractor/node_modules/diff": { @@ -7901,13 +7584,13 @@ } }, "node_modules/@microsoft/api-extractor/node_modules/minimatch": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", - "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { "node": "20 || >=22" @@ -7971,29 +7654,29 @@ "license": "MIT" }, "node_modules/@microsoft/tsdoc-config": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.1.tgz", - "integrity": "sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.0.tgz", + "integrity": "sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "0.16.0", - "ajv": "~8.18.0", + "ajv": "~8.12.0", "jju": "~1.4.0", "resolve": "~1.22.2" } }, "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", + "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, "funding": { "type": "github", @@ -9133,9 +8816,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "20.3.17", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.3.17.tgz", - "integrity": "sha512-cfV7hdA1QkykNqegBu07KOQEeHzOwBV52snFz9gFSYLCqP669D8OqEzdRktYMgpGc7ZBOia7IC4gwhHkM3gOfg==", + "version": "20.3.18", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.3.18.tgz", + "integrity": "sha512-dFH/K6byV9oWbLIDoI/RTgYkbIqaofNr7PHVkH8MhMi/rSoKEgf2Un/xjaD7zCsODHou7HE/jfiXgC+6Adzveg==", "dev": true, "license": "MIT", "engines": { @@ -9202,9 +8885,9 @@ } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -9225,18 +8908,18 @@ } }, "node_modules/@npmcli/git": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz", - "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.2.tgz", + "integrity": "sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==", "dev": true, "license": "ISC", "dependencies": { + "@gar/promise-retry": "^1.0.0", "@npmcli/promise-spawn": "^9.0.0", "ini": "^6.0.0", "lru-cache": "^11.2.1", "npm-pick-manifest": "^11.0.1", "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^6.0.0" }, @@ -9245,19 +8928,19 @@ } }, "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=16" + "node": ">=20" } }, "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -9265,13 +8948,13 @@ } }, "node_modules/@npmcli/git/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" @@ -9308,9 +8991,9 @@ } }, "node_modules/@npmcli/package-json": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.4.tgz", - "integrity": "sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz", + "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==", "dev": true, "license": "ISC", "dependencies": { @@ -9320,12 +9003,23 @@ "json-parse-even-better-errors": "^5.0.0", "proc-log": "^6.0.0", "semver": "^7.5.3", - "validate-npm-package-license": "^3.0.4" + "spdx-expression-parse": "^4.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/@npmcli/package-json/node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/@npmcli/promise-spawn": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", @@ -9340,23 +9034,23 @@ } }, "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=16" + "node": ">=20" } }, "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" @@ -9376,9 +9070,9 @@ } }, "node_modules/@npmcli/run-script": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.3.tgz", - "integrity": "sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.4.tgz", + "integrity": "sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==", "dev": true, "license": "ISC", "dependencies": { @@ -9386,34 +9080,7 @@ "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "node-gyp": "^12.1.0", - "proc-log": "^6.0.0", - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "proc-log": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -12004,20 +11671,20 @@ } }, "node_modules/@nx/angular": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-22.5.2.tgz", - "integrity": "sha512-wZkLpwp92lar65AkaxOC08VrSEFmfzIs+Ru/bOphEGXsRAgYyXNBPxVYbo/mNpIkJPhDXZo7BLFreH9mZ0r8IQ==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-22.5.3.tgz", + "integrity": "sha512-Z5vNcPl95CsTnRhDszWZ0ort22dEtMxdqJFkVzdNwolhfiLm1eKP2Rc8q9MnUdrZMeTqDKnCckG2qs12FZrIkw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.2", - "@nx/eslint": "22.5.2", - "@nx/js": "22.5.2", - "@nx/module-federation": "22.5.2", - "@nx/rspack": "22.5.2", - "@nx/web": "22.5.2", - "@nx/webpack": "22.5.2", - "@nx/workspace": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/eslint": "22.5.3", + "@nx/js": "22.5.3", + "@nx/module-federation": "22.5.3", + "@nx/rspack": "22.5.3", + "@nx/web": "22.5.3", + "@nx/webpack": "22.5.3", + "@nx/workspace": "22.5.3", "@phenomnomnominal/tsquery": "~6.1.4", "@typescript-eslint/type-utils": "^8.0.0", "enquirer": "~2.3.6", @@ -12092,16 +11759,16 @@ } }, "node_modules/@nx/devkit": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.5.2.tgz", - "integrity": "sha512-5JuCMlU6AwXBKCoMWp1hTyTzjfB5vXL5khmoziZPmnaIBg+gX0Hp13YhWfO1C6/HuXS+i4mor7dtFHukPKWemQ==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.5.3.tgz", + "integrity": "sha512-zhRNTFsi4pbwg7L/zhBHtTOSevlgwm1iKlhPlQWoOv2PR6b+3JvjL8o4P1MbkIkut3Lsn+oTuJJ1LUPlr5vprg==", "dev": true, "license": "MIT", "dependencies": { "@zkochan/js-yaml": "0.0.7", "ejs": "^3.1.7", "enquirer": "~2.3.6", - "minimatch": "10.1.1", + "minimatch": "10.2.1", "semver": "^7.6.3", "tslib": "^2.3.0", "yargs-parser": "21.1.1" @@ -12110,14 +11777,37 @@ "nx": ">= 21 <= 23 || ^22.0.0-0" } }, + "node_modules/@nx/devkit/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@nx/devkit/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@nx/devkit/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -12127,21 +11817,21 @@ } }, "node_modules/@nx/eslint": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-22.5.2.tgz", - "integrity": "sha512-TDMaZzqJNZYB+6dOtzUPWBJHR5IrV0+i8k5domvHB+kPkynrIvgg8Ys5vRQ4p7j80p7L+KJhR9RgZ04llQ99Lw==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-22.5.3.tgz", + "integrity": "sha512-XJKpwnSJRCat+81sUDdJWWvKz3vKo/3X9oHMGDzTYx3mexCgKgpmHBuRVgnZ9n2IVDx8S5ye4ICc9qiY6oHWIA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.2", - "@nx/js": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", "semver": "^7.6.3", "tslib": "^2.3.0", "typescript": "~5.9.2" }, "peerDependencies": { "@zkochan/js-yaml": "0.0.7", - "eslint": "^8.0.0 || ^9.0.0" + "eslint": "^8.0.0 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { "@zkochan/js-yaml": { @@ -12150,14 +11840,14 @@ } }, "node_modules/@nx/eslint-plugin": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-22.5.2.tgz", - "integrity": "sha512-B3Vgfy3H7/NLZOBkYaAogli77MDG1JWuBo+v20Vuh1OFeqqaqZeaRnZ6ax2xtUJxt1bCIa2KtgF01i/zoTccDQ==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-22.5.3.tgz", + "integrity": "sha512-dFz3nSUOV+VLc+ZQxWncKINhych6h5oEfInWp1+5WkeUBW5/x77IsM3Hpq1JrjAK6dqXjmzTsFnoU8c5Cf1Q4w==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.2", - "@nx/js": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", "@phenomnomnominal/tsquery": "~6.1.4", "@typescript-eslint/type-utils": "^8.0.0", "@typescript-eslint/utils": "^8.0.0", @@ -12193,14 +11883,14 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", + "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12211,9 +11901,9 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", + "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", "dev": true, "license": "MIT", "engines": { @@ -12225,21 +11915,22 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", + "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "@typescript-eslint/project-service": "8.47.0", + "@typescript-eslint/tsconfig-utils": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12252,17 +11943,33 @@ "typescript": ">=4.8.4 <6.0.0" } }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", + "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12272,19 +11979,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", + "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "eslint-visitor-keys": "^5.0.0" + "@typescript-eslint/types": "8.47.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12294,92 +12001,23 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@nx/eslint-plugin/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@nx/eslint-plugin/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/@nx/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/@nx/eslint-plugin/node_modules/minimatch": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", - "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nx/eslint-plugin/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nx/eslint-plugin/node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, "node_modules/@nx/eslint-plugin/node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -12404,22 +12042,22 @@ } }, "node_modules/@nx/jest": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-22.5.2.tgz", - "integrity": "sha512-v1/LiwtfBjpmZmMf/4lM+fwxoLwElfS6YI6VgPZV+yO/UDHtuRmccwVOnyrnVmREv/dhIQFPqcko7d1KdDc2yw==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-22.5.3.tgz", + "integrity": "sha512-4yaGlApTR09zdz4fC4Ep0aENcaon5rDRDOUnEJblU67ik35jds9mczHq2rBMJO4Cnjj1pM9acm08Vb0Wg+9cuQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/reporters": "^30.0.2", "@jest/test-result": "^30.0.2", - "@nx/devkit": "22.5.2", - "@nx/js": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", "@phenomnomnominal/tsquery": "~6.1.4", "identity-obj-proxy": "3.0.0", "jest-config": "^30.0.2", "jest-resolve": "^30.0.2", "jest-util": "^30.0.2", - "minimatch": "10.1.1", + "minimatch": "10.2.1", "picocolors": "^1.1.0", "resolve.exports": "2.0.3", "semver": "^7.6.3", @@ -12787,6 +12425,29 @@ "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, + "node_modules/@nx/jest/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@nx/jest/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@nx/jest/node_modules/ci-info": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", @@ -13295,13 +12956,13 @@ } }, "node_modules/@nx/jest/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -13401,9 +13062,9 @@ } }, "node_modules/@nx/js": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-22.5.2.tgz", - "integrity": "sha512-7FO+EYdYgR3tOY0h584jiVw8s4GVoqKZMMXldF7LciTSNS4aApO4Lz79B6gKnR4QGHExcRX/FBd0mznioXCNCQ==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-22.5.3.tgz", + "integrity": "sha512-gglQYL6GeSH0mt6NpEFTXMFFFePU3B7TEyZq7LLUYZDH5y65izgNpdSAuEqYR7xHLtahVnesDlhPw3rtRiwMwA==", "dev": true, "license": "MIT", "dependencies": { @@ -13414,8 +13075,8 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nx/devkit": "22.5.2", - "@nx/workspace": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/workspace": "22.5.3", "@zkochan/js-yaml": "0.0.7", "babel-plugin-const-enum": "^1.0.1", "babel-plugin-macros": "^3.1.0", @@ -13485,18 +13146,18 @@ } }, "node_modules/@nx/module-federation": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-22.5.2.tgz", - "integrity": "sha512-it7Jziku9fhBpO2LOI/pyzo6ls0j36Ma11aOQieM9z2RnxYOJjuKKT7ltBJYPf/L1iIO6J9jxI+QsPwtG03USw==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-22.5.3.tgz", + "integrity": "sha512-dKRkT/ULV+nXr7O25YMDwQu/4nxl27AcHJfOmVBVKquXrtrBu/d6dbypfFDMyr5pXqR5gb2euEw0mGVMyHLTiA==", "dev": true, "license": "MIT", "dependencies": { "@module-federation/enhanced": "^0.21.2", "@module-federation/node": "^2.7.21", "@module-federation/sdk": "^0.21.2", - "@nx/devkit": "22.5.2", - "@nx/js": "22.5.2", - "@nx/web": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@nx/web": "22.5.3", "@rspack/core": "1.6.8", "express": "^4.21.2", "http-proxy-middleware": "^3.0.5", @@ -13810,9 +13471,9 @@ } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.2.tgz", - "integrity": "sha512-CPtgK/s4FQ0Y/6WmHpJccOTANve5UjlFajLp+S8Z538zHdc5a5MjJBcXo9oRzKNvhTHoGijr/fCMU2erMrYYtg==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.3.tgz", + "integrity": "sha512-cKXBq5bJanXp8uv6+wPvx/G4q4oFpOxMSPGaeFOVhbul2QHGGq+XMcSo+D8aYJCsk1YnbyAnnQ8r8RH/kTK5Mw==", "cpu": [ "arm64" ], @@ -13824,9 +13485,9 @@ ] }, "node_modules/@nx/nx-darwin-x64": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.5.2.tgz", - "integrity": "sha512-YuFGIpmtMPbMM3QchJttlLFE5oNenE+3mRCWcMNrXPOixsw28flvYWhFcHE3CPV8q/E+Yg0FsOG+8u1p7eEgWg==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.5.3.tgz", + "integrity": "sha512-mToS41o8I+8CfxYVRMTISkgT7I1cnazgwMf7U9DoLqKOwOZzj9WD3NmsWc1h69QNJPltbeRPS8y/wnhu7RHzRA==", "cpu": [ "x64" ], @@ -13838,9 +13499,9 @@ ] }, "node_modules/@nx/nx-freebsd-x64": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.5.2.tgz", - "integrity": "sha512-Oy3jejPB7lszxAf4rdTpJfOBVgAUtkUZJCLTdGdnpveF/m3s9MN9DaeEXgUs0mMp1qV3Y0KE3KcVHqII54AoBQ==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.5.3.tgz", + "integrity": "sha512-CAWysdFSZVbTfdjNXojd9TgXbZiK9i0k3njROeV+jORsDWw4Eth3PDmK94Wk916b3n2hS0UjyI6RZaMy2GEqzA==", "cpu": [ "x64" ], @@ -13852,9 +13513,9 @@ ] }, "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.5.2.tgz", - "integrity": "sha512-38bZGStG6bZ+R7ZbGxvnDVjVrV6bRTsiX8rr3fmM/AkEfvgyhWgE3R+xqUHoJVM4PK0I2YlYoSjIny4gFeOBxQ==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.5.3.tgz", + "integrity": "sha512-PRjPrijQQbdrvYwNuA3xQ3VXEQ4zfhnPjy+S2ZlQZqhFI4mlP22xfhOH1bQ7pIfzCNC2f/J9UMNYOrq/bEFjBg==", "cpu": [ "arm" ], @@ -13866,9 +13527,9 @@ ] }, "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.5.2.tgz", - "integrity": "sha512-D+tPXB0tkSuDPsuXvyQIsF3f3PBWfAwIe9FkBWtVoDVYqE+jbz+tVGsjQMNWGafLE4sC8ZQdjhsxyT8I53Anbw==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.5.3.tgz", + "integrity": "sha512-dmDBio/5z4Zch2VlRMdgBPm53d8xwq1l7xLj1dFMKjfE7ByfPukjPM7ZEYBiPckfiQfJBRh6HKDN7uEkA/y8CQ==", "cpu": [ "arm64" ], @@ -13880,9 +13541,9 @@ ] }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.5.2.tgz", - "integrity": "sha512-UbO527qqa8KLBi13uXto5SmxcZv1Smer7sPexJonshDlmrJsyvx5m8nm6tcSv04W5yQEL90vPlTux8dNvEDWrw==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.5.3.tgz", + "integrity": "sha512-E81ET/MnnKfuLhKiovF5ueJirHOMjhC1eK0MDM2Do9wdPyusZzfGSVFQ9DOHtg7L37dAE95NNd1lCVO8gJ96vg==", "cpu": [ "arm64" ], @@ -13894,9 +13555,9 @@ ] }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.5.2.tgz", - "integrity": "sha512-wR6596Vr/Z+blUAmjLHG2TCQMs4O1oi9JXK1J/PoPeO9UqdHwStCJBAd61zDFSUYJe0x+dkeRQu96fE5BW8Kcg==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.5.3.tgz", + "integrity": "sha512-AgXCsPCzC0sAu2VRclMjs7LrvPQfqS3sFiehlXWTbNHQitPZLuAmQGb2l4T8lbMOs0Xn3EIrg6BF6/ntTTp6Xg==", "cpu": [ "x64" ], @@ -13908,9 +13569,9 @@ ] }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.5.2.tgz", - "integrity": "sha512-MBXOw4AH4FWl4orwVykj/e75awTNDePogrl3pXNX9NcQLdj6JzS4e2jaALQeRBQLxQzeFvFQV/W4PBzoPV6/NA==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.5.3.tgz", + "integrity": "sha512-sKs4bFQRu8Btxf5rMYKPsRVNxkQ2ey8sqoCyhJj8fwJF05DayK2ErJAR/rhtBK0c1NV7kQiKJA8nWBV3jnCdsg==", "cpu": [ "x64" ], @@ -13922,9 +13583,9 @@ ] }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.5.2.tgz", - "integrity": "sha512-SaWSZkRH5uV8vP2lj6RRv+kw2IzaIDXkutReOXpooshIWZl9KjrQELNTCZTYyhLDsMlcyhSvLFlTiA4NkZ8udw==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.5.3.tgz", + "integrity": "sha512-KOCQLakSO5vl4D6et9qPytOAmkgq2IIuhI8A/g0xbD1LqrIlRPa+bdkZqOGpODYAk3NyKAk7hWHsqfXKHwwX6w==", "cpu": [ "arm64" ], @@ -13936,9 +13597,9 @@ ] }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.2.tgz", - "integrity": "sha512-IK9Xd5Gh9ys4oun5ko8Uv8AEi2byN2FPXBsR1BLkt93SJ0bJVTdXGyEA+fWmEclLZIM0PiZj1KbCajVn9NEPtw==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.3.tgz", + "integrity": "sha512-a6ZB2La82RIHcz4nrt3H6RZaOa+xkC2IPzhU9hMo2gbkLdIxn8wyof8uGA0frncmIVHuLc3nFAhpBOgf4j6tMA==", "cpu": [ "x64" ], @@ -13950,29 +13611,29 @@ ] }, "node_modules/@nx/react": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/react/-/react-22.5.2.tgz", - "integrity": "sha512-kqWcn4+gJc1rnk1YKBpDXFN3QZOpyblO0F9WXDAyKPqvuXVvhl/ILoTzLOK631hOe5K8Oq3rIvt9s5WnyyXHvQ==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/react/-/react-22.5.3.tgz", + "integrity": "sha512-Wc/9LZxxmrWFgKARw8nIC0yGFOMHvb/p5WDXbwYcaUUbYyyC9uSg7AcyRZt/UZ3WqhxhKm0SJCgpTlhFh+Dkxg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.2", - "@nx/eslint": "22.5.2", - "@nx/js": "22.5.2", - "@nx/module-federation": "22.5.2", - "@nx/rollup": "22.5.2", - "@nx/web": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/eslint": "22.5.3", + "@nx/js": "22.5.3", + "@nx/module-federation": "22.5.3", + "@nx/rollup": "22.5.3", + "@nx/web": "22.5.3", "@phenomnomnominal/tsquery": "~6.1.4", "@svgr/webpack": "^8.0.1", "express": "^4.21.2", "http-proxy-middleware": "^3.0.5", - "minimatch": "10.1.1", + "minimatch": "10.2.1", "picocolors": "^1.1.0", "semver": "^7.6.3", "tslib": "^2.3.0" }, "optionalDependencies": { - "@nx/vite": "22.5.2" + "@nx/vite": "22.5.3" } }, "node_modules/@nx/react/node_modules/@phenomnomnominal/tsquery": { @@ -14003,6 +13664,16 @@ "node": ">= 0.6" } }, + "node_modules/@nx/react/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@nx/react/node_modules/body-parser": { "version": "1.20.4", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", @@ -14059,6 +13730,19 @@ "node": ">= 0.8" } }, + "node_modules/@nx/react/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@nx/react/node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -14216,13 +13900,13 @@ } }, "node_modules/@nx/react/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -14371,14 +14055,14 @@ } }, "node_modules/@nx/rollup": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/rollup/-/rollup-22.5.2.tgz", - "integrity": "sha512-alkeW9nWgUKJH6RDAerqfMjsxGpJXgBlpWv5+KYAoU+HQncXkZhldPlGNCKGV5W1HcEdTYFlr+MbqsihQO65NQ==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/rollup/-/rollup-22.5.3.tgz", + "integrity": "sha512-Um9xCcUeSb35OX+UH1CZk4DbQPXItRbn8ehJPmgOo9s+TtPTbdVWhUVb9chiqvmluSw0ELA3zjZf6XINiP95BQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.2", - "@nx/js": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-image": "^3.0.3", @@ -14410,16 +14094,16 @@ } }, "node_modules/@nx/rspack": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-22.5.2.tgz", - "integrity": "sha512-SDN4flb71lbpCAd1ym2bWccH/jOp/bZ46a3Jn5cbsDLfagWKmcXDKrYGblOC4/ZulkaNiOEi7EZF47hWvpZvfw==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-22.5.3.tgz", + "integrity": "sha512-2T5dkoC08FJGF8ZMiJDaKN6giXAljV0+LK7q5GJpSEUm+wtjZ/DRVoWSnlf8Dj/e0/cLb2GMElVcfjyDDDeV9w==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.2", - "@nx/js": "22.5.2", - "@nx/module-federation": "22.5.2", - "@nx/web": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@nx/module-federation": "22.5.3", + "@nx/web": "22.5.3", "@phenomnomnominal/tsquery": "~6.1.4", "@rspack/core": "1.6.8", "@rspack/dev-server": "^1.1.4", @@ -14841,15 +14525,15 @@ } }, "node_modules/@nx/vite": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/vite/-/vite-22.5.2.tgz", - "integrity": "sha512-E3zTMLfY203lW8RxH+j3U4mR9btSVwWw3mY8XslND0Png1AliZ4fH638moH/eRsJvWS454oSYp86m3FlouSkqA==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/vite/-/vite-22.5.3.tgz", + "integrity": "sha512-XvaCVIqNnWHF46in+q/hfiDr6YmPvO0416aMwzID4MTom/LdBiKS7Vh4oVShzXqzOZVTvawO+dKAA5zaqvBAaw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.2", - "@nx/js": "22.5.2", - "@nx/vitest": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@nx/vitest": "22.5.3", "@phenomnomnominal/tsquery": "~6.1.4", "ajv": "^8.0.0", "enquirer": "~2.3.6", @@ -14891,14 +14575,14 @@ } }, "node_modules/@nx/vitest": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/vitest/-/vitest-22.5.2.tgz", - "integrity": "sha512-hKtKB5BInOwub7+3QOolZZvqv89pkaU2+CbN0iD3Wk2BzTfGY/dlcTvvgcEUDRCTMDn7G+G30cyq+nbz6Z+R6A==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/vitest/-/vitest-22.5.3.tgz", + "integrity": "sha512-ZsDbiDqdGSPld/3thGqkzhY/seV08374mWZxZu1NoIT0RQnRF70GjlYXh+97Gzkm7L3s1269JKfzyVFRPjTzjQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.2", - "@nx/js": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", "@phenomnomnominal/tsquery": "~6.1.4", "semver": "^7.6.3", "tslib": "^2.3.0" @@ -14931,14 +14615,14 @@ } }, "node_modules/@nx/web": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-22.5.2.tgz", - "integrity": "sha512-UAK03jaLHy4VqLnQnpXqC9CCGIToXWQIPmMIQiSqi6GOf/fZIzHrfu0ssVfs4nh7jyFt0SeWV00UoVHnH3K65g==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-22.5.3.tgz", + "integrity": "sha512-Z7FYN5e9HIJAuJV0MU8jHaoEv9vgiLbpe1bbWPItfzIy02kWtSiS/aGZcLa34LDuWBfBaJVHZqFVp7OOPU26ew==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.2", - "@nx/js": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", "detect-port": "^1.5.1", "http-server": "^14.1.0", "picocolors": "^1.1.0", @@ -14946,15 +14630,15 @@ } }, "node_modules/@nx/webpack": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-22.5.2.tgz", - "integrity": "sha512-peGSgQuvsi3ypMZaCXCv0P/dExfVCulMrWi65IKggZSWmJAskREI8PlCQliAxNF340er50XrKD83HHkOB2Lc8A==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-22.5.3.tgz", + "integrity": "sha512-fEWvmynjxAfdyCH00Z3oaEedv/wKZAdHl8kz7UEiOJ7eKdGbbJIK0RuobXC1r2e2ERZ35vDrOiPYdruyfi35Jg==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", - "@nx/devkit": "22.5.2", - "@nx/js": "22.5.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", "@phenomnomnominal/tsquery": "~6.1.4", "ajv": "^8.12.0", "autoprefixer": "^10.4.9", @@ -15355,17 +15039,17 @@ } }, "node_modules/@nx/workspace": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-22.5.2.tgz", - "integrity": "sha512-XImJ2NhUXo/bgNkuF1NAdYJjSzhN/iXZYSdhSREPN6Bh/thhloAQfpOrgFkxgxgNZv3RvldnnYNmGeKqMEW2jg==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-22.5.3.tgz", + "integrity": "sha512-pioGwlt5zKB9PhX36I5KAeSml19Mq+g2KyQ9mh3F+3Lvft2JM4nIMELBaUfwPicPAOwNmrsx806IXO67Q4UHxQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.2", + "@nx/devkit": "22.5.3", "@zkochan/js-yaml": "0.0.7", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "22.5.2", + "nx": "22.5.3", "picomatch": "4.0.2", "semver": "^7.6.3", "tslib": "^2.3.0", @@ -15548,9 +15232,9 @@ "license": "MIT" }, "node_modules/@oxc-resolver/binding-android-arm-eabi": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.18.0.tgz", - "integrity": "sha512-EhwJNzbfLwQQIeyak3n08EB3UHknMnjy1dFyL98r3xlorje2uzHOT2vkB5nB1zqtTtzT31uSot3oGZFfODbGUg==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.19.1.tgz", + "integrity": "sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg==", "cpu": [ "arm" ], @@ -15562,9 +15246,9 @@ ] }, "node_modules/@oxc-resolver/binding-android-arm64": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.18.0.tgz", - "integrity": "sha512-esOPsT9S9B6vEMMp1qR9Yz5UepQXljoWRJYoyp7GV/4SYQOSTpN0+V2fTruxbMmzqLK+fjCEU2x3SVhc96LQLQ==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.19.1.tgz", + "integrity": "sha512-oolbkRX+m7Pq2LNjr/kKgYeC7bRDMVTWPgxBGMjSpZi/+UskVo4jsMU3MLheZV55jL6c3rNelPl4oD60ggYmqA==", "cpu": [ "arm64" ], @@ -15576,9 +15260,9 @@ ] }, "node_modules/@oxc-resolver/binding-darwin-arm64": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.18.0.tgz", - "integrity": "sha512-iJknScn8fRLRhGR6VHG31bzOoyLihSDmsJHRjHwRUL0yF1MkLlvzmZ+liKl9MGl+WZkZHaOFT5T1jNlLSWTowQ==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.19.1.tgz", + "integrity": "sha512-nUC6d2i3R5B12sUW4O646qD5cnMXf2oBGPLIIeaRfU9doJRORAbE2SGv4eW6rMqhD+G7nf2Y8TTJTLiiO3Q/dQ==", "cpu": [ "arm64" ], @@ -15590,9 +15274,9 @@ ] }, "node_modules/@oxc-resolver/binding-darwin-x64": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.18.0.tgz", - "integrity": "sha512-3rMweF2GQLzkaUoWgFKy1fRtk0dpj4JDqucoZLJN9IZG+TC+RZg7QMwG5WKMvmEjzdYmOTw1L1XqZDVXF2ksaQ==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.19.1.tgz", + "integrity": "sha512-cV50vE5+uAgNcFa3QY1JOeKDSkM/9ReIcc/9wn4TavhW/itkDGrXhw9jaKnkQnGbjJ198Yh5nbX/Gr2mr4Z5jQ==", "cpu": [ "x64" ], @@ -15604,9 +15288,9 @@ ] }, "node_modules/@oxc-resolver/binding-freebsd-x64": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.18.0.tgz", - "integrity": "sha512-TfXsFby4QvpGwmUP66+X+XXQsycddZe9ZUUu/vHhq2XGI1EkparCSzjpYW1Nz5fFncbI5oLymQLln/qR+qxyOw==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.19.1.tgz", + "integrity": "sha512-xZOQiYGFxtk48PBKff+Zwoym7ScPAIVp4c14lfLxizO2LTTTJe5sx9vQNGrBymrf/vatSPNMD4FgsaaRigPkqw==", "cpu": [ "x64" ], @@ -15618,9 +15302,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.18.0.tgz", - "integrity": "sha512-WolOILquy9DJsHcfFMHeA5EjTCI9A7JoERFJru4UI2zKZcnfNPo5GApzYwiloscEp/s+fALPmyRntswUns0qHg==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.19.1.tgz", + "integrity": "sha512-lXZYWAC6kaGe/ky2su94e9jN9t6M0/6c+GrSlCqL//XO1cxi5lpAhnJYdyrKfm0ZEr/c7RNyAx3P7FSBcBd5+A==", "cpu": [ "arm" ], @@ -15632,9 +15316,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.18.0.tgz", - "integrity": "sha512-r+5nHJyPdiBqOGTYAFyuq5RtuAQbm4y69GYWNG/uup9Cqr7RG9Ak0YZgGEbkQsc+XBs00ougu/D1+w3UAYIWHA==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.19.1.tgz", + "integrity": "sha512-veG1kKsuK5+t2IsO9q0DErYVSw2azvCVvWHnfTOS73WE0STdLLB7Q1bB9WR+yHPQM76ASkFyRbogWo1GR1+WbQ==", "cpu": [ "arm" ], @@ -15646,9 +15330,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.18.0.tgz", - "integrity": "sha512-bUzg6QxljqMLLwsxYajAQEHW1LYRLdKOg/aykt14PSqUUOmfnOJjPdSLTiHIZCluVzPCQxv1LjoyRcoTAXfQaQ==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.19.1.tgz", + "integrity": "sha512-heV2+jmXyYnUrpUXSPugqWDRpnsQcDm2AX4wzTuvgdlZfoNYO0O3W2AVpJYaDn9AG4JdM6Kxom8+foE7/BcSig==", "cpu": [ "arm64" ], @@ -15660,9 +15344,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm64-musl": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.18.0.tgz", - "integrity": "sha512-l43GVwls5+YR8WXOIez5x7Pp/MfhdkMOZOOjFUSWC/9qMnSLX1kd95j9oxDrkWdD321JdHTyd4eau5KQPxZM9w==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.19.1.tgz", + "integrity": "sha512-jvo2Pjs1c9KPxMuMPIeQsgu0mOJF9rEb3y3TdpsrqwxRM+AN6/nDDwv45n5ZrUnQMsdBy5gIabioMKnQfWo9ew==", "cpu": [ "arm64" ], @@ -15674,9 +15358,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.18.0.tgz", - "integrity": "sha512-ayj7TweYWi/azxWmRpUZGz41kKNvfkXam20UrFhaQDrSNGNqefQRODxhJn0iv6jt4qChh7TUxDIoavR6ftRsjw==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.19.1.tgz", + "integrity": "sha512-vLmdNxWCdN7Uo5suays6A/+ywBby2PWBBPXctWPg5V0+eVuzsJxgAn6MMB4mPlshskYbppjpN2Zg83ArHze9gQ==", "cpu": [ "ppc64" ], @@ -15688,9 +15372,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.18.0.tgz", - "integrity": "sha512-2Jz7jpq6BBNlBBup3usZB6sZWEZOBbjWn++/bKC2lpAT+sTEwdTonnf3rNcb+XY7+v53jYB9pM8LEKVXZfr8BA==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.19.1.tgz", + "integrity": "sha512-/b+WgR+VTSBxzgOhDO7TlMXC1ufPIMR6Vj1zN+/x+MnyXGW7prTLzU9eW85Aj7Th7CCEG9ArCbTeqxCzFWdg2w==", "cpu": [ "riscv64" ], @@ -15702,9 +15386,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.18.0.tgz", - "integrity": "sha512-omw8/ISOc6ubR247iEMma4/JRfbY2I+nGJC59oKBhCIEZoyqEg/NmDSBc4ToMH+AsZDucqQUDOCku3k7pBiEag==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.19.1.tgz", + "integrity": "sha512-YlRdeWb9j42p29ROh+h4eg/OQ3dTJlpHSa+84pUM9+p6i3djtPz1q55yLJhgW9XfDch7FN1pQ/Vd6YP+xfRIuw==", "cpu": [ "riscv64" ], @@ -15716,9 +15400,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.18.0.tgz", - "integrity": "sha512-uFipBXaS+honSL5r5G/rlvVrkffUjpKwD3S/aIiwp64bylK3+RztgV+mM1blk+OT5gBRG864auhH6jCfrOo3ZA==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.19.1.tgz", + "integrity": "sha512-EDpafVOQWF8/MJynsjOGFThcqhRHy417sRyLfQmeiamJ8qVhSKAn2Dn2VVKUGCjVB9C46VGjhNo7nOPUi1x6uA==", "cpu": [ "s390x" ], @@ -15730,9 +15414,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-x64-gnu": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.18.0.tgz", - "integrity": "sha512-bY4uMIoKRv8Ine3UiKLFPWRZ+fPCDamTHZFf5pNOjlfmTJIANtJo0mzWDUdFZLYhVgQdegrDL9etZbTMR8qieg==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.19.1.tgz", + "integrity": "sha512-NxjZe+rqWhr+RT8/Ik+5ptA3oz7tUw361Wa5RWQXKnfqwSSHdHyrw6IdcTfYuml9dM856AlKWZIUXDmA9kkiBQ==", "cpu": [ "x64" ], @@ -15744,9 +15428,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-x64-musl": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.18.0.tgz", - "integrity": "sha512-40IicL/aitfNOWur06x7Do41WcqFJ9VUNAciFjZCXzF6wR2i6uVsi6N19ecqgSRoLYFCAoRYi9F50QteIxCwKQ==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.19.1.tgz", + "integrity": "sha512-cM/hQwsO3ReJg5kR+SpI69DMfvNCp+A/eVR4b4YClE5bVZwz8rh2Nh05InhwI5HR/9cArbEkzMjcKgTHS6UaNw==", "cpu": [ "x64" ], @@ -15758,9 +15442,9 @@ ] }, "node_modules/@oxc-resolver/binding-openharmony-arm64": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.18.0.tgz", - "integrity": "sha512-DJIzYjUnSJtz4Trs/J9TnzivtPcUKn9AeL3YjHlM5+RvK27ZL9xISs3gg2VAo2nWU7ThuadC1jSYkWaZyONMwg==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.19.1.tgz", + "integrity": "sha512-QF080IowFB0+9Rh6RcD19bdgh49BpQHUW5TajG1qvWHvmrQznTZZjYlgE2ltLXyKY+qs4F/v5xuX1XS7Is+3qA==", "cpu": [ "arm64" ], @@ -15772,9 +15456,9 @@ ] }, "node_modules/@oxc-resolver/binding-wasm32-wasi": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.18.0.tgz", - "integrity": "sha512-57+R8Ioqc8g9k80WovoupOoyIOfLEceHTizkUcwOXspXLhiZ67ScM7Q8OuvhDoRRSZzH6yI0qML3WZwMFR3s7g==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.19.1.tgz", + "integrity": "sha512-w8UCKhX826cP/ZLokXDS6+milN8y4X7zidsAttEdWlVoamTNf6lhBJldaWr3ukTDiye7s4HRcuPEPOXNC432Vg==", "cpu": [ "wasm32" ], @@ -15806,9 +15490,9 @@ } }, "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.18.0.tgz", - "integrity": "sha512-t9Oa4BPptJqVlHTT1cV1frs+LY/vjsKhHI6ltj2EwoGM1TykJ0WW43UlQaU4SC8N+oTY8JRbAywVMNkfqjSu9w==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.19.1.tgz", + "integrity": "sha512-nJ4AsUVZrVKwnU/QRdzPCCrO0TrabBqgJ8pJhXITdZGYOV28TIYystV1VFLbQ7DtAcaBHpocT5/ZJnF78YJPtQ==", "cpu": [ "arm64" ], @@ -15820,9 +15504,9 @@ ] }, "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.18.0.tgz", - "integrity": "sha512-4maf/f6ea5IEtIXqGwSw38srRtVHTre9iKShG4gjzat7c3Iq6B1OppXMj8gNmTuM4n8Xh1hQM9z2hBELccJr1g==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.19.1.tgz", + "integrity": "sha512-EW+ND5q2Tl+a3pH81l1QbfgbF3HmqgwLfDfVithRFheac8OTcnbXt/JxqD2GbDkb7xYEqy1zNaVFRr3oeG8npA==", "cpu": [ "ia32" ], @@ -15834,9 +15518,9 @@ ] }, "node_modules/@oxc-resolver/binding-win32-x64-msvc": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.18.0.tgz", - "integrity": "sha512-EhW8Su3AEACSw5HfzKMmyCtV0oArNrVViPdeOfvVYL9TrkL+/4c8fWHFTBtxUMUyCjhSG5xYNdwty1D/TAgL0Q==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.19.1.tgz", + "integrity": "sha512-6hIU3RQu45B+VNTY4Ru8ppFwjVS/S5qwYyGhBotmjxfEKk41I2DlGtRfGJndZ5+6lneE2pwloqunlOyZuX/XAw==", "cpu": [ "x64" ], @@ -17462,13 +17146,13 @@ "license": "MIT" }, "node_modules/@rushstack/node-core-library": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.3.tgz", - "integrity": "sha512-95JgEPq2k7tHxhF9/OJnnyHDXfC9cLhhta0An/6MlkDsX2A6dTzDrTUG18vx4vjc280V0fi0xDH9iQczpSuWsw==", + "version": "5.19.1", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.19.1.tgz", + "integrity": "sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "~8.18.0", + "ajv": "~8.13.0", "ajv-draft-04": "~1.0.0", "ajv-formats": "~3.0.1", "fs-extra": "~11.3.0", @@ -17487,16 +17171,16 @@ } }, "node_modules/@rushstack/node-core-library/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -17555,9 +17239,9 @@ "license": "ISC" }, "node_modules/@rushstack/problem-matcher": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz", - "integrity": "sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.1.1.tgz", + "integrity": "sha512-Fm5XtS7+G8HLcJHCWpES5VmeMyjAKaWeyZU5qPzZC+22mPlJzAsOxymHiWIfuirtPckX3aptWws+K2d0BzniJA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -17570,9 +17254,9 @@ } }, "node_modules/@rushstack/rig-package": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.2.tgz", - "integrity": "sha512-9XbFWuqMYcHUso4mnETfhGVUSaADBRj6HUAAEYk50nMPn8WRICmBuCphycQGNB3duIR6EEZX3Xj3SYc2XiP+9A==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.6.0.tgz", + "integrity": "sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==", "dev": true, "license": "MIT", "dependencies": { @@ -17581,14 +17265,14 @@ } }, "node_modules/@rushstack/terminal": { - "version": "0.22.3", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.3.tgz", - "integrity": "sha512-gHC9pIMrUPzAbBiI4VZMU7Q+rsCzb8hJl36lFIulIzoceKotyKL3Rd76AZ2CryCTKEg+0bnTj406HE5YY5OQvw==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.21.0.tgz", + "integrity": "sha512-cLaI4HwCNYmknM5ns4G+drqdEB6q3dCPV423+d3TZeBusYSSm09+nR7CnhzJMjJqeRcdMAaLnrA4M/3xDz4R3w==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.20.3", - "@rushstack/problem-matcher": "0.2.1", + "@rushstack/node-core-library": "5.19.1", + "@rushstack/problem-matcher": "0.1.1", "supports-color": "~8.1.1" }, "peerDependencies": { @@ -17617,13 +17301,13 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.3.tgz", - "integrity": "sha512-c+ltdcvC7ym+10lhwR/vWiOhsrm/bP3By2VsFcs5qTKv+6tTmxgbVrtJ5NdNjANiV5TcmOZgUN+5KYQ4llsvEw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.2.0.tgz", + "integrity": "sha512-lYxCX0nDdkDtCkVpvF0m25ymf66SaMWuppbD6b7MdkIzvGXKBXNIVZlwBH/C0YfkanrupnICWf2n4z3AKSfaHw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.22.3", + "@rushstack/terminal": "0.21.0", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" @@ -19222,9 +18906,9 @@ } }, "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, "license": "MIT", "dependencies": { @@ -19235,9 +18919,9 @@ } }, "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", - "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -19949,15 +19633,15 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz", + "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", - "debug": "^4.4.3" + "@typescript-eslint/tsconfig-utils": "^8.47.0", + "@typescript-eslint/types": "^8.47.0", + "debug": "^4.3.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -19971,9 +19655,9 @@ } }, "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", + "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", "dev": true, "license": "MIT", "engines": { @@ -20003,9 +19687,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz", + "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==", "dev": true, "license": "MIT", "engines": { @@ -20020,17 +19704,17 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.47.0.tgz", + "integrity": "sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/utils": "8.47.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -20040,19 +19724,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", + "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -20063,9 +19747,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", + "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", "dev": true, "license": "MIT", "engines": { @@ -20077,21 +19761,22 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", + "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "@typescript-eslint/project-service": "8.47.0", + "@typescript-eslint/tsconfig-utils": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -20105,16 +19790,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", + "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -20124,19 +19809,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", + "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "eslint-visitor-keys": "^5.0.0" + "@typescript-eslint/types": "8.47.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -20146,92 +19831,39 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", - "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -20284,37 +19916,14 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz", - "integrity": "sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -21919,26 +21528,26 @@ } }, "node_modules/algoliasearch": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.46.2.tgz", - "integrity": "sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.48.1.tgz", + "integrity": "sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/abtesting": "1.12.2", - "@algolia/client-abtesting": "5.46.2", - "@algolia/client-analytics": "5.46.2", - "@algolia/client-common": "5.46.2", - "@algolia/client-insights": "5.46.2", - "@algolia/client-personalization": "5.46.2", - "@algolia/client-query-suggestions": "5.46.2", - "@algolia/client-search": "5.46.2", - "@algolia/ingestion": "1.46.2", - "@algolia/monitoring": "1.46.2", - "@algolia/recommend": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/abtesting": "1.14.1", + "@algolia/client-abtesting": "5.48.1", + "@algolia/client-analytics": "5.48.1", + "@algolia/client-common": "5.48.1", + "@algolia/client-insights": "5.48.1", + "@algolia/client-personalization": "5.48.1", + "@algolia/client-query-suggestions": "5.48.1", + "@algolia/client-search": "5.48.1", + "@algolia/ingestion": "1.48.1", + "@algolia/monitoring": "1.48.1", + "@algolia/recommend": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" @@ -23786,9 +23395,9 @@ } }, "node_modules/cacache/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -24380,13 +23989,13 @@ } }, "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -26003,9 +25612,9 @@ } }, "node_modules/devalue": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz", - "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", + "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", "license": "MIT" }, "node_modules/devlop": { @@ -27200,9 +26809,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -27308,9 +26917,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -27388,9 +26997,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -27459,9 +27068,9 @@ } }, "node_modules/eslint/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -27540,9 +27149,9 @@ "license": "MIT" }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -28220,51 +27829,24 @@ } }, "node_modules/filelist": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.5.tgz", - "integrity": "sha512-ct/ckWBV/9Dg3MlvCXsLcSUyoWwv9mCKqlhLNB2DAuXR/NZolSXlQqP5dyy6guWlPXBhodZyZ5lGPQcbQDxrEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "license": "Apache-2.0", "dependencies": { - "minimatch": "^10.2.1" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/filelist/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/minimatch": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", - "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", - "license": "BlueOak-1.0.0", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, "node_modules/filename-reserved-regex": { @@ -28770,9 +28352,9 @@ "license": "MIT" }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -29263,37 +28845,16 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/glob/node_modules/minimatch": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", - "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -29927,9 +29488,9 @@ } }, "node_modules/hono": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.2.tgz", - "integrity": "sha512-gJnaDHXKDayjt8ue0n8Gs0A007yKXj4Xzb8+cNjZeYsSzzwKc0Lr+OZgYwVfB0pHfUs17EPoLvrOsEaJ9mj+Tg==", + "version": "4.11.7", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.7.tgz", + "integrity": "sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==", "dev": true, "license": "MIT", "engines": { @@ -30379,9 +29940,9 @@ } }, "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, "license": "MIT", "dependencies": { @@ -30392,9 +29953,9 @@ } }, "node_modules/ignore-walk/node_modules/minimatch": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", - "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -33542,13 +33103,13 @@ } }, "node_modules/listr2/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -34178,12 +33739,13 @@ "license": "ISC" }, "node_modules/make-fetch-happen": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.3.tgz", - "integrity": "sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==", + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.4.tgz", + "integrity": "sha512-vM2sG+wbVeVGYcCm16mM3d5fuem9oC28n436HjsGO3LcxoTI8LNVa4rwZDn3f76+cWyT4GGJDxjTYU1I2nr6zw==", "dev": true, "license": "ISC", "dependencies": { + "@gar/promise-retry": "^1.0.0", "@npmcli/agent": "^4.0.0", "cacache": "^20.0.1", "http-cache-semantics": "^4.1.1", @@ -34193,7 +33755,6 @@ "minipass-pipeline": "^1.2.4", "negotiator": "^1.0.0", "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", "ssri": "^13.0.0" }, "engines": { @@ -35624,9 +35185,9 @@ } }, "node_modules/minipass-fetch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.1.tgz", - "integrity": "sha512-yHK8pb0iCGat0lDrs/D6RZmCdaBT64tULXjdxjSMAqoDi18Q3qKEUTHypHQZQd9+FYpIS+lkvpq6C/R6SbUeRw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz", + "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -35638,7 +35199,7 @@ "node": "^20.17.0 || >=22.9.0" }, "optionalDependencies": { - "encoding": "^0.1.13" + "iconv-lite": "^0.7.2" } }, "node_modules/minipass-flush": { @@ -36217,23 +35778,23 @@ } }, "node_modules/node-gyp/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=16" + "node": ">=20" } }, "node_modules/node-gyp/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" @@ -36365,9 +35926,9 @@ } }, "node_modules/npm": { - "version": "11.10.1", - "resolved": "https://registry.npmjs.org/npm/-/npm-11.10.1.tgz", - "integrity": "sha512-woavuY2OgDFQ1K/tB9QHsUuW989nKfvsKTN/h5qGyS+3+BhvXN/DA2TNzx569JaFfTqrET5bEQNHwVhFk+U1gg==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-11.10.0.tgz", + "integrity": "sha512-i8hE43iSIAMFuYVi8TxsEISdELM4fIza600aLjJ0ankGPLqd0oTPKMJqAcO/QWm307MbSlWGzJcNZ0lGMQgHPA==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -36385,6 +35946,7 @@ "cacache", "chalk", "ci-info", + "cli-columns", "fastest-levenshtein", "fs-minipass", "glob", @@ -36446,12 +36008,12 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^9.3.1", - "@npmcli/config": "^10.7.1", + "@npmcli/arborist": "^9.3.0", + "@npmcli/config": "^10.7.0", "@npmcli/fs": "^5.0.0", "@npmcli/map-workspaces": "^5.0.3", "@npmcli/metavuln-calculator": "^9.0.3", - "@npmcli/package-json": "^7.0.5", + "@npmcli/package-json": "^7.0.4", "@npmcli/promise-spawn": "^9.0.1", "@npmcli/redact": "^4.0.0", "@npmcli/run-script": "^10.0.3", @@ -36461,28 +36023,29 @@ "cacache": "^20.0.3", "chalk": "^5.6.2", "ci-info": "^4.4.0", + "cli-columns": "^4.0.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^13.0.6", + "glob": "^13.0.2", "graceful-fs": "^4.2.11", "hosted-git-info": "^9.0.2", "ini": "^6.0.0", - "init-package-json": "^8.2.5", + "init-package-json": "^8.2.4", "is-cidr": "^6.0.3", "json-parse-even-better-errors": "^5.0.0", "libnpmaccess": "^10.0.3", - "libnpmdiff": "^8.1.2", - "libnpmexec": "^10.2.2", - "libnpmfund": "^7.0.16", + "libnpmdiff": "^8.1.1", + "libnpmexec": "^10.2.1", + "libnpmfund": "^7.0.15", "libnpmorg": "^8.0.1", - "libnpmpack": "^9.1.2", + "libnpmpack": "^9.1.1", "libnpmpublish": "^11.1.3", "libnpmsearch": "^9.0.1", "libnpmteam": "^8.0.2", "libnpmversion": "^8.0.3", "make-fetch-happen": "^15.0.3", - "minimatch": "^10.2.2", - "minipass": "^7.1.3", + "minimatch": "^10.1.1", + "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", "node-gyp": "^12.2.0", @@ -36504,7 +36067,7 @@ "spdx-expression-parse": "^4.0.0", "ssri": "^13.0.1", "supports-color": "^10.2.2", - "tar": "^7.5.9", + "tar": "^7.5.7", "text-table": "~0.2.0", "tiny-relative-date": "^2.0.2", "treeverse": "^3.0.0", @@ -36572,9 +36135,9 @@ } }, "node_modules/npm-packlist": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.3.tgz", - "integrity": "sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.4.tgz", + "integrity": "sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==", "dev": true, "license": "ISC", "dependencies": { @@ -36633,6 +36196,27 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/npm/node_modules/@isaacs/brace-expansion": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/npm/node_modules/@isaacs/fs-minipass": { "version": "4.0.1", "dev": true, @@ -36668,7 +36252,7 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "9.3.1", + "version": "9.3.0", "dev": true, "inBundle": true, "license": "ISC", @@ -36715,7 +36299,7 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "10.7.1", + "version": "10.7.0", "dev": true, "inBundle": true, "license": "ISC", @@ -36830,7 +36414,7 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "7.0.5", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -36841,7 +36425,7 @@ "json-parse-even-better-errors": "^5.0.0", "proc-log": "^6.0.0", "semver": "^7.5.3", - "spdx-expression-parse": "^4.0.0" + "validate-npm-package-license": "^3.0.4" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -37011,6 +36595,15 @@ "node": ">= 14" } }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/aproba": { "version": "2.1.0", "dev": true, @@ -37023,15 +36616,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/balanced-match": { - "version": "4.0.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, "node_modules/npm/node_modules/bin-links": { "version": "6.0.0", "dev": true, @@ -37060,18 +36644,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "5.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/npm/node_modules/cacache": { "version": "20.0.3", "dev": true, @@ -37131,14 +36703,30 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "5.0.3", + "version": "5.0.2", "dev": true, "inBundle": true, "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "5.0.0" + }, "engines": { "node": ">=20" } }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/npm/node_modules/cmd-shim": { "version": "8.0.0", "dev": true, @@ -37195,6 +36783,12 @@ "node": ">=0.3.1" } }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, "node_modules/npm/node_modules/encoding": { "version": "0.1.13", "dev": true, @@ -37248,17 +36842,17 @@ } }, "node_modules/npm/node_modules/glob": { - "version": "13.0.6", + "version": "13.0.2", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -37358,7 +36952,7 @@ } }, "node_modules/npm/node_modules/init-package-json": { - "version": "8.2.5", + "version": "8.2.4", "dev": true, "inBundle": true, "license": "ISC", @@ -37368,6 +36962,7 @@ "promzard": "^3.0.1", "read": "^5.0.1", "semver": "^7.7.2", + "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^7.0.0" }, "engines": { @@ -37383,6 +36978,18 @@ "node": ">= 12" } }, + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/npm/node_modules/is-cidr": { "version": "6.0.3", "dev": true, @@ -37395,6 +37002,15 @@ "node": ">=20" } }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/isexe": { "version": "4.0.0", "dev": true, @@ -37457,12 +37073,12 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "8.1.2", + "version": "8.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.1", + "@npmcli/arborist": "^9.3.0", "@npmcli/installed-package-contents": "^4.0.0", "binary-extensions": "^3.0.0", "diff": "^8.0.2", @@ -37476,12 +37092,12 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "10.2.2", + "version": "10.2.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.1", + "@npmcli/arborist": "^9.3.0", "@npmcli/package-json": "^7.0.0", "@npmcli/run-script": "^10.0.0", "ci-info": "^4.0.0", @@ -37499,12 +37115,12 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "7.0.16", + "version": "7.0.15", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.1" + "@npmcli/arborist": "^9.3.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -37524,12 +37140,12 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "9.1.2", + "version": "9.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.1", + "@npmcli/arborist": "^9.3.0", "@npmcli/run-script": "^10.0.0", "npm-package-arg": "^13.0.0", "pacote": "^21.0.2" @@ -37630,25 +37246,25 @@ } }, "node_modules/npm/node_modules/minimatch": { - "version": "10.2.2", + "version": "10.1.2", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/npm/node_modules/minipass": { - "version": "7.1.3", + "version": "7.1.2", "dev": true, "inBundle": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -37706,12 +37322,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/minipass-flush/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", "dev": true, @@ -37736,12 +37346,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/minipass-pipeline/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/minipass-sized": { "version": "2.0.0", "dev": true, @@ -38013,7 +37617,7 @@ } }, "node_modules/npm/node_modules/path-scurry": { - "version": "2.0.2", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -38022,7 +37626,7 @@ "minipass": "^7.1.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -38226,6 +37830,26 @@ "node": ">= 14" } }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", "dev": true, @@ -38260,6 +37884,32 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/supports-color": { "version": "10.2.2", "dev": true, @@ -38273,7 +37923,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "7.5.9", + "version": "7.5.7", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -38288,6 +37938,15 @@ "node": ">=18" } }, + "node_modules/npm/node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/npm/node_modules/text-table": { "version": "0.2.0", "dev": true, @@ -38398,6 +38057,26 @@ "inBundle": true, "license": "MIT" }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/npm/node_modules/validate-npm-package-name": { "version": "7.0.2", "dev": true, @@ -38445,13 +38124,10 @@ } }, "node_modules/npm/node_modules/yallist": { - "version": "5.0.0", + "version": "4.0.0", "dev": true, "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } + "license": "ISC" }, "node_modules/nth-check": { "version": "2.1.1", @@ -38473,9 +38149,9 @@ "license": "MIT" }, "node_modules/nx": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/nx/-/nx-22.5.2.tgz", - "integrity": "sha512-s7dd2BZQOremv1AYhxwBY6NzJV9ETa6/OJ/zau/ulbLnHu8E5UAv+EjMC80m3qP3nob5OXnWiITKM9CcOHy6qw==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/nx/-/nx-22.5.3.tgz", + "integrity": "sha512-IaEPqdgaFBIr0Bfmnt6WAcX3t660sOuDXQ71lpoS8GgpD8cqX1LIW2ZyzEAdOvCP1iD6HCZehpofcVvaaL1GNQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -38499,7 +38175,7 @@ "jest-diff": "^30.0.2", "jsonc-parser": "3.2.0", "lines-and-columns": "2.0.3", - "minimatch": "10.1.1", + "minimatch": "10.2.1", "node-machine-id": "1.1.12", "npm-run-path": "^4.0.1", "open": "^8.4.0", @@ -38522,16 +38198,16 @@ "nx-cloud": "bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "22.5.2", - "@nx/nx-darwin-x64": "22.5.2", - "@nx/nx-freebsd-x64": "22.5.2", - "@nx/nx-linux-arm-gnueabihf": "22.5.2", - "@nx/nx-linux-arm64-gnu": "22.5.2", - "@nx/nx-linux-arm64-musl": "22.5.2", - "@nx/nx-linux-x64-gnu": "22.5.2", - "@nx/nx-linux-x64-musl": "22.5.2", - "@nx/nx-win32-arm64-msvc": "22.5.2", - "@nx/nx-win32-x64-msvc": "22.5.2" + "@nx/nx-darwin-arm64": "22.5.3", + "@nx/nx-darwin-x64": "22.5.3", + "@nx/nx-freebsd-x64": "22.5.3", + "@nx/nx-linux-arm-gnueabihf": "22.5.3", + "@nx/nx-linux-arm64-gnu": "22.5.3", + "@nx/nx-linux-arm64-musl": "22.5.3", + "@nx/nx-linux-x64-gnu": "22.5.3", + "@nx/nx-linux-x64-musl": "22.5.3", + "@nx/nx-win32-arm64-msvc": "22.5.3", + "@nx/nx-win32-x64-msvc": "22.5.3" }, "peerDependencies": { "@swc-node/register": "^1.11.1", @@ -38601,6 +38277,29 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/nx/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/nx/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/nx/node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -38744,13 +38443,13 @@ } }, "node_modules/nx/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -39350,35 +39049,35 @@ } }, "node_modules/oxc-resolver": { - "version": "11.18.0", - "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.18.0.tgz", - "integrity": "sha512-Fv/b05AfhpYoCDvsog6tgsDm2yIwIeJafpMFLncNwKHRYu+Y1xQu5Q/rgUn7xBfuhNgjtPO7C0jCf7p2fLDj1g==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.19.1.tgz", + "integrity": "sha512-qE/CIg/spwrTBFt5aKmwe3ifeDdLfA2NESN30E42X/lII5ClF8V7Wt6WIJhcGZjp0/Q+nQ+9vgxGk//xZNX2hg==", "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxc-resolver/binding-android-arm-eabi": "11.18.0", - "@oxc-resolver/binding-android-arm64": "11.18.0", - "@oxc-resolver/binding-darwin-arm64": "11.18.0", - "@oxc-resolver/binding-darwin-x64": "11.18.0", - "@oxc-resolver/binding-freebsd-x64": "11.18.0", - "@oxc-resolver/binding-linux-arm-gnueabihf": "11.18.0", - "@oxc-resolver/binding-linux-arm-musleabihf": "11.18.0", - "@oxc-resolver/binding-linux-arm64-gnu": "11.18.0", - "@oxc-resolver/binding-linux-arm64-musl": "11.18.0", - "@oxc-resolver/binding-linux-ppc64-gnu": "11.18.0", - "@oxc-resolver/binding-linux-riscv64-gnu": "11.18.0", - "@oxc-resolver/binding-linux-riscv64-musl": "11.18.0", - "@oxc-resolver/binding-linux-s390x-gnu": "11.18.0", - "@oxc-resolver/binding-linux-x64-gnu": "11.18.0", - "@oxc-resolver/binding-linux-x64-musl": "11.18.0", - "@oxc-resolver/binding-openharmony-arm64": "11.18.0", - "@oxc-resolver/binding-wasm32-wasi": "11.18.0", - "@oxc-resolver/binding-win32-arm64-msvc": "11.18.0", - "@oxc-resolver/binding-win32-ia32-msvc": "11.18.0", - "@oxc-resolver/binding-win32-x64-msvc": "11.18.0" + "@oxc-resolver/binding-android-arm-eabi": "11.19.1", + "@oxc-resolver/binding-android-arm64": "11.19.1", + "@oxc-resolver/binding-darwin-arm64": "11.19.1", + "@oxc-resolver/binding-darwin-x64": "11.19.1", + "@oxc-resolver/binding-freebsd-x64": "11.19.1", + "@oxc-resolver/binding-linux-arm-gnueabihf": "11.19.1", + "@oxc-resolver/binding-linux-arm-musleabihf": "11.19.1", + "@oxc-resolver/binding-linux-arm64-gnu": "11.19.1", + "@oxc-resolver/binding-linux-arm64-musl": "11.19.1", + "@oxc-resolver/binding-linux-ppc64-gnu": "11.19.1", + "@oxc-resolver/binding-linux-riscv64-gnu": "11.19.1", + "@oxc-resolver/binding-linux-riscv64-musl": "11.19.1", + "@oxc-resolver/binding-linux-s390x-gnu": "11.19.1", + "@oxc-resolver/binding-linux-x64-gnu": "11.19.1", + "@oxc-resolver/binding-linux-x64-musl": "11.19.1", + "@oxc-resolver/binding-openharmony-arm64": "11.19.1", + "@oxc-resolver/binding-wasm32-wasi": "11.19.1", + "@oxc-resolver/binding-win32-arm64-msvc": "11.19.1", + "@oxc-resolver/binding-win32-ia32-msvc": "11.19.1", + "@oxc-resolver/binding-win32-x64-msvc": "11.19.1" } }, "node_modules/p-cancelable": { @@ -39556,9 +39255,9 @@ "license": "MIT" }, "node_modules/pacote": { - "version": "21.0.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.4.tgz", - "integrity": "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==", + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.3.1.tgz", + "integrity": "sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==", "dev": true, "license": "ISC", "dependencies": { @@ -45483,9 +45182,9 @@ "license": "BSD-3-Clause" }, "node_modules/ssri": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz", - "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz", + "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==", "dev": true, "license": "ISC", "dependencies": { @@ -46774,9 +46473,9 @@ } }, "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -50936,9 +50635,9 @@ } }, "node_modules/zod": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz", - "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "dev": true, "license": "MIT", "funding": { diff --git a/package.json b/package.json index aeb259ffa5..b6e5d602ee 100644 --- a/package.json +++ b/package.json @@ -50,16 +50,16 @@ "@babel/core": "^7.14.5", "@babel/preset-react": "^7.14.5", "@faker-js/faker": "^8.3.1", - "@nx/angular": "22.5.2", - "@nx/eslint": "22.5.2", - "@nx/eslint-plugin": "22.5.2", - "@nx/jest": "22.5.2", - "@nx/js": "22.5.2", - "@nx/react": "22.5.2", - "@nx/vite": "22.5.2", - "@nx/vitest": "22.5.2", - "@nx/web": "22.5.2", - "@nx/workspace": "22.5.2", + "@nx/angular": "22.5.3", + "@nx/eslint": "22.5.3", + "@nx/eslint-plugin": "22.5.3", + "@nx/jest": "22.5.3", + "@nx/js": "22.5.3", + "@nx/react": "22.5.3", + "@nx/vite": "22.5.3", + "@nx/vitest": "22.5.3", + "@nx/web": "22.5.3", + "@nx/workspace": "22.5.3", "@schematics/angular": "20.1.5", "@sveltejs/vite-plugin-svelte": "^3.0.1", "@swc-node/register": "1.11.1", @@ -98,7 +98,7 @@ "jsdom": "^26.1.0", "jsonc-eslint-parser": "^2.1.0", "ng-packagr": "20.1.0", - "nx": "22.5.2", + "nx": "22.5.3", "playwright": "^1.50.1", "postcss": "^8.4.5", "postcss-import": "~14.1.0", From 2b5ba9dea73e25db66c82b11641a1c163c77ef17 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Tue, 3 Mar 2026 15:59:02 -0700 Subject: [PATCH 022/103] chore: npm audit updates --- package-lock.json | 628 ++++++++++++++++++++-------------------------- 1 file changed, 275 insertions(+), 353 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f8e02f206..9f9d5dd309 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5237,9 +5237,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -5301,9 +5301,9 @@ "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -5407,9 +5407,9 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -6279,27 +6279,6 @@ } } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -7523,22 +7502,22 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.56.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.56.3.tgz", - "integrity": "sha512-fRqok4aRNq5GpgGBv2fKlSSKbirPKTJ75vQefthB5x9dwt4Zz+AezUzdc1p/AG4wUBIgmhjcEwn/Rj+N4Wh4Mw==", + "version": "7.57.6", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.6.tgz", + "integrity": "sha512-0rFv/D8Grzw1Mjs2+8NGUR+o4h9LVm5zKRtMeWnpdB5IMJF4TeHCL1zR5LMCIudkOvyvjbhMG5Wjs0B5nqsrRQ==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/api-extractor-model": "7.32.2", + "@microsoft/api-extractor-model": "7.33.4", "@microsoft/tsdoc": "~0.16.0", - "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.19.1", - "@rushstack/rig-package": "0.6.0", - "@rushstack/terminal": "0.21.0", - "@rushstack/ts-command-line": "5.2.0", + "@microsoft/tsdoc-config": "~0.18.1", + "@rushstack/node-core-library": "5.20.3", + "@rushstack/rig-package": "0.7.2", + "@rushstack/terminal": "0.22.3", + "@rushstack/ts-command-line": "5.3.3", "diff": "~8.0.2", "lodash": "~4.17.23", - "minimatch": "10.1.2", + "minimatch": "10.2.1", "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", @@ -7549,15 +7528,38 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.32.2.tgz", - "integrity": "sha512-Ussc25rAalc+4JJs9HNQE7TuO9y6jpYQX9nWD1DhqUzYPBr3Lr7O9intf+ZY8kD5HnIqeIRJX7ccCT0QyBy2Ww==", + "version": "7.33.4", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.4.tgz", + "integrity": "sha512-u1LTaNTikZAQ9uK6KG1Ms7nvNedsnODnspq/gH2dcyETWvH4hVNGNDvRAEutH66kAmxA4/necElqGNs1FggC8w==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "~0.16.0", - "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.19.1" + "@microsoft/tsdoc-config": "~0.18.1", + "@rushstack/node-core-library": "5.20.3" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@microsoft/api-extractor/node_modules/diff": { @@ -7584,13 +7586,13 @@ } }, "node_modules/@microsoft/api-extractor/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -7654,29 +7656,29 @@ "license": "MIT" }, "node_modules/@microsoft/tsdoc-config": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.0.tgz", - "integrity": "sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.1.tgz", + "integrity": "sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "0.16.0", - "ajv": "~8.12.0", + "ajv": "~8.18.0", "jju": "~1.4.0", "resolve": "~1.22.2" } }, "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -11943,22 +11945,6 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/utils": { "version": "8.47.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", @@ -12014,6 +12000,22 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@nx/eslint-plugin/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nx/eslint-plugin/node_modules/ts-api-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", @@ -17146,13 +17148,13 @@ "license": "MIT" }, "node_modules/@rushstack/node-core-library": { - "version": "5.19.1", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.19.1.tgz", - "integrity": "sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==", + "version": "5.20.3", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.3.tgz", + "integrity": "sha512-95JgEPq2k7tHxhF9/OJnnyHDXfC9cLhhta0An/6MlkDsX2A6dTzDrTUG18vx4vjc280V0fi0xDH9iQczpSuWsw==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "~8.13.0", + "ajv": "~8.18.0", "ajv-draft-04": "~1.0.0", "ajv-formats": "~3.0.1", "fs-extra": "~11.3.0", @@ -17171,16 +17173,16 @@ } }, "node_modules/@rushstack/node-core-library/node_modules/ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -17188,9 +17190,9 @@ } }, "node_modules/@rushstack/node-core-library/node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "dev": true, "license": "MIT", "dependencies": { @@ -17239,9 +17241,9 @@ "license": "ISC" }, "node_modules/@rushstack/problem-matcher": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.1.1.tgz", - "integrity": "sha512-Fm5XtS7+G8HLcJHCWpES5VmeMyjAKaWeyZU5qPzZC+22mPlJzAsOxymHiWIfuirtPckX3aptWws+K2d0BzniJA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz", + "integrity": "sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==", "dev": true, "license": "MIT", "peerDependencies": { @@ -17254,9 +17256,9 @@ } }, "node_modules/@rushstack/rig-package": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.6.0.tgz", - "integrity": "sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.2.tgz", + "integrity": "sha512-9XbFWuqMYcHUso4mnETfhGVUSaADBRj6HUAAEYk50nMPn8WRICmBuCphycQGNB3duIR6EEZX3Xj3SYc2XiP+9A==", "dev": true, "license": "MIT", "dependencies": { @@ -17265,14 +17267,14 @@ } }, "node_modules/@rushstack/terminal": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.21.0.tgz", - "integrity": "sha512-cLaI4HwCNYmknM5ns4G+drqdEB6q3dCPV423+d3TZeBusYSSm09+nR7CnhzJMjJqeRcdMAaLnrA4M/3xDz4R3w==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.3.tgz", + "integrity": "sha512-gHC9pIMrUPzAbBiI4VZMU7Q+rsCzb8hJl36lFIulIzoceKotyKL3Rd76AZ2CryCTKEg+0bnTj406HE5YY5OQvw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.19.1", - "@rushstack/problem-matcher": "0.1.1", + "@rushstack/node-core-library": "5.20.3", + "@rushstack/problem-matcher": "0.2.1", "supports-color": "~8.1.1" }, "peerDependencies": { @@ -17301,13 +17303,13 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.2.0.tgz", - "integrity": "sha512-lYxCX0nDdkDtCkVpvF0m25ymf66SaMWuppbD6b7MdkIzvGXKBXNIVZlwBH/C0YfkanrupnICWf2n4z3AKSfaHw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.3.tgz", + "integrity": "sha512-c+ltdcvC7ym+10lhwR/vWiOhsrm/bP3By2VsFcs5qTKv+6tTmxgbVrtJ5NdNjANiV5TcmOZgUN+5KYQ4llsvEw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.21.0", + "@rushstack/terminal": "0.22.3", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" @@ -19845,13 +19847,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -19917,13 +19919,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -25612,9 +25614,9 @@ } }, "node_modules/devalue": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", - "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz", + "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==", "license": "MIT" }, "node_modules/devlop": { @@ -26809,9 +26811,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -26917,9 +26919,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -26997,9 +26999,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -27068,9 +27070,9 @@ } }, "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -27149,9 +27151,9 @@ "license": "MIT" }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -27838,9 +27840,9 @@ } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -28845,16 +28847,37 @@ "dev": true, "license": "BSD-2-Clause" }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/glob/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -29488,9 +29511,9 @@ } }, "node_modules/hono": { - "version": "4.11.7", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.7.tgz", - "integrity": "sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==", + "version": "4.12.4", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.4.tgz", + "integrity": "sha512-ooiZW1Xy8rQ4oELQ++otI2T9DsKpV0M6c6cO6JGx4RTfav9poFFLlet9UMXHZnoM1yG0HWGlQLswBGX3RZmHtg==", "dev": true, "license": "MIT", "engines": { @@ -35926,9 +35949,9 @@ } }, "node_modules/npm": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-11.10.0.tgz", - "integrity": "sha512-i8hE43iSIAMFuYVi8TxsEISdELM4fIza600aLjJ0ankGPLqd0oTPKMJqAcO/QWm307MbSlWGzJcNZ0lGMQgHPA==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-11.11.0.tgz", + "integrity": "sha512-82gRxKrh/eY5UnNorkTFcdBQAGpgjWehkfGVqAGlJjejEtJZGGJUqjo3mbBTNbc5BTnPKGVtGPBZGhElujX5cw==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -35946,7 +35969,6 @@ "cacache", "chalk", "ci-info", - "cli-columns", "fastest-levenshtein", "fs-minipass", "glob", @@ -36008,12 +36030,12 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^9.3.0", - "@npmcli/config": "^10.7.0", + "@npmcli/arborist": "^9.4.0", + "@npmcli/config": "^10.7.1", "@npmcli/fs": "^5.0.0", "@npmcli/map-workspaces": "^5.0.3", "@npmcli/metavuln-calculator": "^9.0.3", - "@npmcli/package-json": "^7.0.4", + "@npmcli/package-json": "^7.0.5", "@npmcli/promise-spawn": "^9.0.1", "@npmcli/redact": "^4.0.0", "@npmcli/run-script": "^10.0.3", @@ -36023,29 +36045,28 @@ "cacache": "^20.0.3", "chalk": "^5.6.2", "ci-info": "^4.4.0", - "cli-columns": "^4.0.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^13.0.2", + "glob": "^13.0.6", "graceful-fs": "^4.2.11", "hosted-git-info": "^9.0.2", "ini": "^6.0.0", - "init-package-json": "^8.2.4", + "init-package-json": "^8.2.5", "is-cidr": "^6.0.3", "json-parse-even-better-errors": "^5.0.0", "libnpmaccess": "^10.0.3", - "libnpmdiff": "^8.1.1", - "libnpmexec": "^10.2.1", - "libnpmfund": "^7.0.15", + "libnpmdiff": "^8.1.3", + "libnpmexec": "^10.2.3", + "libnpmfund": "^7.0.17", "libnpmorg": "^8.0.1", - "libnpmpack": "^9.1.1", + "libnpmpack": "^9.1.3", "libnpmpublish": "^11.1.3", "libnpmsearch": "^9.0.1", "libnpmteam": "^8.0.2", "libnpmversion": "^8.0.3", - "make-fetch-happen": "^15.0.3", - "minimatch": "^10.1.1", - "minipass": "^7.1.1", + "make-fetch-happen": "^15.0.4", + "minimatch": "^10.2.2", + "minipass": "^7.1.3", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", "node-gyp": "^12.2.0", @@ -36058,7 +36079,7 @@ "npm-registry-fetch": "^19.1.1", "npm-user-validate": "^4.0.0", "p-map": "^7.0.4", - "pacote": "^21.3.1", + "pacote": "^21.4.0", "parse-conflict-json": "^5.0.1", "proc-log": "^6.1.0", "qrcode-terminal": "^0.12.0", @@ -36067,7 +36088,7 @@ "spdx-expression-parse": "^4.0.0", "ssri": "^13.0.1", "supports-color": "^10.2.2", - "tar": "^7.5.7", + "tar": "^7.5.9", "text-table": "~0.2.0", "tiny-relative-date": "^2.0.2", "treeverse": "^3.0.0", @@ -36196,25 +36217,25 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/@isaacs/balanced-match": { - "version": "4.0.1", + "node_modules/npm/node_modules/@gar/promise-retry": { + "version": "1.0.2", "dev": true, "inBundle": true, "license": "MIT", + "dependencies": { + "retry": "^0.13.1" + }, "engines": { - "node": "20 || >=22" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/npm/node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", + "node_modules/npm/node_modules/@gar/promise-retry/node_modules/retry": { + "version": "0.13.1", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, "engines": { - "node": "20 || >=22" + "node": ">= 4" } }, "node_modules/npm/node_modules/@isaacs/fs-minipass": { @@ -36252,7 +36273,7 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "9.3.0", + "version": "9.4.0", "dev": true, "inBundle": true, "license": "ISC", @@ -36299,7 +36320,7 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "10.7.0", + "version": "10.7.1", "dev": true, "inBundle": true, "license": "ISC", @@ -36330,17 +36351,17 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "7.0.1", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "@gar/promise-retry": "^1.0.0", "@npmcli/promise-spawn": "^9.0.0", "ini": "^6.0.0", "lru-cache": "^11.2.1", "npm-pick-manifest": "^11.0.1", "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^6.0.0" }, @@ -36414,7 +36435,7 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "7.0.4", + "version": "7.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -36425,7 +36446,7 @@ "json-parse-even-better-errors": "^5.0.0", "proc-log": "^6.0.0", "semver": "^7.5.3", - "validate-npm-package-license": "^3.0.4" + "spdx-expression-parse": "^4.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -36595,15 +36616,6 @@ "node": ">= 14" } }, - "node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/aproba": { "version": "2.1.0", "dev": true, @@ -36616,6 +36628,15 @@ "inBundle": true, "license": "MIT" }, + "node_modules/npm/node_modules/balanced-match": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/npm/node_modules/bin-links": { "version": "6.0.0", "dev": true, @@ -36644,6 +36665,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "5.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/npm/node_modules/cacache": { "version": "20.0.3", "dev": true, @@ -36703,30 +36736,14 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "5.0.2", + "version": "5.0.3", "dev": true, "inBundle": true, "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "5.0.0" - }, "engines": { "node": ">=20" } }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/npm/node_modules/cmd-shim": { "version": "8.0.0", "dev": true, @@ -36783,22 +36800,6 @@ "node": ">=0.3.1" } }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/npm/node_modules/env-paths": { "version": "2.2.1", "dev": true, @@ -36842,17 +36843,17 @@ } }, "node_modules/npm/node_modules/glob": { - "version": "13.0.2", + "version": "13.0.6", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -36909,7 +36910,7 @@ } }, "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", + "version": "0.7.2", "dev": true, "inBundle": true, "license": "MIT", @@ -36919,6 +36920,10 @@ }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/npm/node_modules/ignore-walk": { @@ -36952,7 +36957,7 @@ } }, "node_modules/npm/node_modules/init-package-json": { - "version": "8.2.4", + "version": "8.2.5", "dev": true, "inBundle": true, "license": "ISC", @@ -36962,7 +36967,6 @@ "promzard": "^3.0.1", "read": "^5.0.1", "semver": "^7.7.2", - "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^7.0.0" }, "engines": { @@ -36978,18 +36982,6 @@ "node": ">= 12" } }, - "node_modules/npm/node_modules/ip-regex": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/npm/node_modules/is-cidr": { "version": "6.0.3", "dev": true, @@ -37002,15 +36994,6 @@ "node": ">=20" } }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/isexe": { "version": "4.0.0", "dev": true, @@ -37073,12 +37056,12 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "8.1.1", + "version": "8.1.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.0", + "@npmcli/arborist": "^9.4.0", "@npmcli/installed-package-contents": "^4.0.0", "binary-extensions": "^3.0.0", "diff": "^8.0.2", @@ -37092,19 +37075,19 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "10.2.1", + "version": "10.2.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.0", + "@gar/promise-retry": "^1.0.0", + "@npmcli/arborist": "^9.4.0", "@npmcli/package-json": "^7.0.0", "@npmcli/run-script": "^10.0.0", "ci-info": "^4.0.0", "npm-package-arg": "^13.0.0", "pacote": "^21.0.2", "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", "read": "^5.0.1", "semver": "^7.3.7", "signal-exit": "^4.1.0", @@ -37115,12 +37098,12 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "7.0.15", + "version": "7.0.17", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.0" + "@npmcli/arborist": "^9.4.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -37140,12 +37123,12 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "9.1.1", + "version": "9.1.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.3.0", + "@npmcli/arborist": "^9.4.0", "@npmcli/run-script": "^10.0.0", "npm-package-arg": "^13.0.0", "pacote": "^21.0.2" @@ -37224,11 +37207,12 @@ } }, "node_modules/npm/node_modules/make-fetch-happen": { - "version": "15.0.3", + "version": "15.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "@gar/promise-retry": "^1.0.0", "@npmcli/agent": "^4.0.0", "cacache": "^20.0.1", "http-cache-semantics": "^4.1.1", @@ -37238,7 +37222,6 @@ "minipass-pipeline": "^1.2.4", "negotiator": "^1.0.0", "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", "ssri": "^13.0.0" }, "engines": { @@ -37246,25 +37229,25 @@ } }, "node_modules/npm/node_modules/minimatch": { - "version": "10.1.2", + "version": "10.2.2", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/npm/node_modules/minipass": { - "version": "7.1.2", + "version": "7.1.3", "dev": true, "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -37282,7 +37265,7 @@ } }, "node_modules/npm/node_modules/minipass-fetch": { - "version": "5.0.1", + "version": "5.0.2", "dev": true, "inBundle": true, "license": "MIT", @@ -37295,7 +37278,7 @@ "node": "^20.17.0 || >=22.9.0" }, "optionalDependencies": { - "encoding": "^0.1.13" + "iconv-lite": "^0.7.2" } }, "node_modules/npm/node_modules/minipass-flush": { @@ -37322,6 +37305,12 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", "dev": true, @@ -37346,6 +37335,12 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, "node_modules/npm/node_modules/minipass-sized": { "version": "2.0.0", "dev": true, @@ -37491,7 +37486,7 @@ } }, "node_modules/npm/node_modules/npm-packlist": { - "version": "10.0.3", + "version": "10.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -37572,11 +37567,12 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "21.3.1", + "version": "21.4.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "@gar/promise-retry": "^1.0.0", "@npmcli/git": "^7.0.0", "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/package-json": "^7.0.0", @@ -37590,7 +37586,6 @@ "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", "sigstore": "^4.0.0", "ssri": "^13.0.0", "tar": "^7.4.3" @@ -37617,7 +37612,7 @@ } }, "node_modules/npm/node_modules/path-scurry": { - "version": "2.0.1", + "version": "2.0.2", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -37626,7 +37621,7 @@ "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -37830,26 +37825,6 @@ "node": ">= 14" } }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.2.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", "dev": true, @@ -37867,7 +37842,7 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.22", + "version": "3.0.23", "dev": true, "inBundle": true, "license": "CC0-1.0" @@ -37884,32 +37859,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/supports-color": { "version": "10.2.2", "dev": true, @@ -37923,7 +37872,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "7.5.7", + "version": "7.5.9", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -37938,15 +37887,6 @@ "node": ">=18" } }, - "node_modules/npm/node_modules/tar/node_modules/yallist": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/npm/node_modules/text-table": { "version": "0.2.0", "dev": true, @@ -38057,26 +37997,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/npm/node_modules/validate-npm-package-name": { "version": "7.0.2", "dev": true, @@ -38124,10 +38044,13 @@ } }, "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", + "version": "5.0.0", "dev": true, "inBundle": true, - "license": "ISC" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } }, "node_modules/nth-check": { "version": "2.1.1", @@ -46376,16 +46299,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.16", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", - "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.17.tgz", + "integrity": "sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -46473,9 +46395,9 @@ } }, "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" From 9e80077851d558296acf94143719ea4cde24e4a0 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Tue, 3 Mar 2026 16:39:53 -0700 Subject: [PATCH 023/103] chore: npm audit updates --- package-lock.json | 53 +++++++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9f9d5dd309..2a2a587893 100644 --- a/package-lock.json +++ b/package-lock.json @@ -156,30 +156,30 @@ } }, "node_modules/@actions/core": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-2.0.2.tgz", - "integrity": "sha512-Ast1V7yHbGAhplAsuVlnb/5J8Mtr/Zl6byPPL+Qjq3lmfIgWF1ak1iYfF/079cRERiuTALTXkSuEUdZeDCfGtA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-3.0.0.tgz", + "integrity": "sha512-zYt6cz+ivnTmiT/ksRVriMBOiuoUpDCJJlZ5KPl2/FRdvwU3f7MPh9qftvbkXJThragzUZieit2nyHUyw53Seg==", "dev": true, "license": "MIT", "dependencies": { - "@actions/exec": "^2.0.0", - "@actions/http-client": "^3.0.1" + "@actions/exec": "^3.0.0", + "@actions/http-client": "^4.0.0" } }, "node_modules/@actions/exec": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-2.0.0.tgz", - "integrity": "sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-3.0.0.tgz", + "integrity": "sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==", "dev": true, "license": "MIT", "dependencies": { - "@actions/io": "^2.0.0" + "@actions/io": "^3.0.2" } }, "node_modules/@actions/http-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.2.tgz", - "integrity": "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.0.tgz", + "integrity": "sha512-QuwPsgVMsD6qaPD57GLZi9sqzAZCtiJT8kVBCDpLtxhL5MydQ4gS+DrejtZZPdIYyB1e95uCK9Luyds7ybHI3g==", "dev": true, "license": "MIT", "dependencies": { @@ -198,9 +198,9 @@ } }, "node_modules/@actions/io": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-2.0.0.tgz", - "integrity": "sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-3.0.2.tgz", + "integrity": "sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==", "dev": true, "license": "MIT" }, @@ -17440,13 +17440,13 @@ } }, "node_modules/@semantic-release/npm": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-13.1.3.tgz", - "integrity": "sha512-q7zreY8n9V0FIP1Cbu63D+lXtRAVAIWb30MH5U3TdrfXt6r2MIrWCY0whAImN53qNvSGp0Zt07U95K+Qp9GpEg==", + "version": "13.1.5", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-13.1.5.tgz", + "integrity": "sha512-Hq5UxzoatN3LHiq2rTsWS54nCdqJHlsssGERCo8WlvdfFA9LoN0vO+OuKVSjtNapIc/S8C2LBj206wKLHg62mg==", "dev": true, "license": "MIT", "dependencies": { - "@actions/core": "^2.0.0", + "@actions/core": "^3.0.0", "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", "env-ci": "^11.2.0", @@ -17454,7 +17454,7 @@ "fs-extra": "^11.0.0", "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", - "normalize-url": "^8.0.0", + "normalize-url": "^9.0.0", "npm": "^11.6.2", "rc": "^1.2.8", "read-pkg": "^10.0.0", @@ -17595,6 +17595,19 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/@semantic-release/npm/node_modules/normalize-url": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-9.0.0.tgz", + "integrity": "sha512-z9nC87iaZXXySbWWtTHfCFJyFvKaUAW6lODhikG7ILSbVgmwuFjUqkgnheHvAUcGedO29e2QGBRXMUD64aurqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@semantic-release/npm/node_modules/npm-run-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", From 388a1180ccae35b2df17c572d46fbf423fc39533 Mon Sep 17 00:00:00 2001 From: Benji Franck Date: Tue, 3 Mar 2026 09:15:57 -0700 Subject: [PATCH 024/103] fix(#3493): show tooltip on hover for Work Side Menu Group Co-Authored-By: bdfranck <1479091+bdfranck@users.noreply.github.com> --- .../work-side-menu/WorkSideMenuGroup.spec.ts | 26 +++++++++++++++++++ .../work-side-menu/WorkSideMenuGroup.svelte | 10 +++++-- 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 libs/web-components/src/components/work-side-menu/WorkSideMenuGroup.spec.ts diff --git a/libs/web-components/src/components/work-side-menu/WorkSideMenuGroup.spec.ts b/libs/web-components/src/components/work-side-menu/WorkSideMenuGroup.spec.ts new file mode 100644 index 0000000000..ee60ff5c0f --- /dev/null +++ b/libs/web-components/src/components/work-side-menu/WorkSideMenuGroup.spec.ts @@ -0,0 +1,26 @@ +import { describe, it, expect, vi } from "vitest"; +import { render, fireEvent } from "@testing-library/svelte"; +import GoAWorkSideMenuGroup from "./WorkSideMenuGroup.svelte"; + +describe("WorkSideMenuGroup", () => { + it("dispatches an event on hover", async () => { + const { container } = render(GoAWorkSideMenuGroup, { + heading: "Test Group", + icon: "star", + testid: "test-group", + }); + + const fn = vi.fn(); + container.addEventListener("_hoverItem", fn); + + const details = container.querySelector("details"); + expect(details).toBeTruthy(); + + await fireEvent.mouseEnter(details!); + expect(fn).toHaveBeenCalled(); + + const event = fn.mock.calls[0][0]; + expect(event.detail.label).toBe("Test Group"); + expect(event.detail.el).toBeTruthy(); + }); +}); diff --git a/libs/web-components/src/components/work-side-menu/WorkSideMenuGroup.svelte b/libs/web-components/src/components/work-side-menu/WorkSideMenuGroup.svelte index feea779533..444c0e073b 100644 --- a/libs/web-components/src/components/work-side-menu/WorkSideMenuGroup.svelte +++ b/libs/web-components/src/components/work-side-menu/WorkSideMenuGroup.svelte @@ -2,20 +2,26 @@ -
+
(_open = toBoolean(`${target?.open}`))} + on:mouseenter={handleMouseEnter} > From 00a015dd9833c19ce153b042abbf96571c9a20c8 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Thu, 5 Feb 2026 17:46:30 -0700 Subject: [PATCH 025/103] feat(#3050): Add search functionality and component thumbnails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add ⌘K/Ctrl+K command palette search for components, examples, tokens, and pages - Add component thumbnail images to ComponentsGrid - Search features: filter commands (/c, /e, /t, /g), history, keyboard navigation --- docs/package-lock.json | 560 +++- docs/package.json | 9 +- .../images/component-thumbnails/accordion.svg | 19 + .../images/component-thumbnails/badge.svg | 6 + .../images/component-thumbnails/block.svg | 9 + .../component-thumbnails/button-group.svg | 11 + .../images/component-thumbnails/button.svg | 6 + .../images/component-thumbnails/callout.svg | 10 + .../component-thumbnails/checkbox-group.svg | 15 + .../images/component-thumbnails/checkbox.svg | 7 + .../circular-progress-indicator.svg | 18 + .../images/component-thumbnails/container.svg | 12 + .../images/component-thumbnails/data-grid.svg | 49 + .../component-thumbnails/date-picker.svg | 41 + .../images/component-thumbnails/details.svg | 9 + .../images/component-thumbnails/divider.svg | 10 + .../images/component-thumbnails/drawer.svg | 17 + .../images/component-thumbnails/dropdown.svg | 17 + .../component-thumbnails/file-uploader.svg | 7 + .../component-thumbnails/filter-chip.svg | 8 + .../images/component-thumbnails/footer.svg | 9 + .../images/component-thumbnails/form-item.svg | 8 + .../component-thumbnails/form-stepper.svg | 12 + .../images/component-thumbnails/form.svg | 15 + .../images/component-thumbnails/grid.svg | 22 + .../images/component-thumbnails/header.svg | 11 + .../component-thumbnails/hero-banner.svg | 15 + .../component-thumbnails/icon-button.svg | 7 + .../images/component-thumbnails/icons.svg | 15 + .../linear-progress-indicator.svg | 5 + .../images/component-thumbnails/link.svg | 9 + .../images/component-thumbnails/list.svg | 15 + .../component-thumbnails/menu-button.svg | 7 + .../component-thumbnails/microsite-header.svg | 8 + .../images/component-thumbnails/modal.svg | 20 + .../notification-banner.svg | 11 + .../component-thumbnails/pagination.svg | 19 + .../images/component-thumbnails/popover.svg | 15 + .../images/component-thumbnails/radio.svg | 7 + .../images/component-thumbnails/side-menu.svg | 17 + .../component-thumbnails/skeleton-loader.svg | 11 + .../images/component-thumbnails/spacer.svg | 13 + .../images/component-thumbnails/table.svg | 10 + .../images/component-thumbnails/tabs.svg | 19 + .../temporary-notification.svg | 19 + .../images/component-thumbnails/text-area.svg | 9 + .../component-thumbnails/text-input.svg | 7 + .../images/component-thumbnails/text.svg | 12 + .../images/component-thumbnails/tooltip.svg | 16 + .../component-thumbnails/work-side-menu.svg | 12 + docs/public/search-index.json | 2707 ++++++++++++++++- docs/src/components/ComponentsGrid.tsx | 70 +- docs/src/components/ExamplesGrid.tsx | 14 +- docs/src/components/ExamplesSideNav.tsx | 159 - docs/src/components/MobileHeader.tsx | 3 - docs/src/components/Search.tsx | 190 -- docs/src/components/SideNav.tsx | 196 -- docs/src/components/nav/ComponentsSubMenu.tsx | 186 +- docs/src/components/nav/ExamplesSubMenu.tsx | 87 - .../components/nav/MenuSecondaryContent.tsx | 58 + docs/src/components/nav/ParentMenu.tsx | 103 +- docs/src/components/nav/TokensSubMenu.tsx | 86 - docs/src/components/nav/index.ts | 7 +- docs/src/components/nav/menu-secondary.css | 42 + .../components/search/SearchEmptyState.tsx | 112 + .../components/search/SearchFilterHints.tsx | 210 ++ docs/src/components/search/SearchInput.tsx | 193 ++ docs/src/components/search/SearchModal.tsx | 342 +++ .../src/components/search/SearchNoResults.tsx | 50 + docs/src/components/search/SearchPage.tsx | 326 ++ .../components/search/SearchResultItem.tsx | 147 + docs/src/components/search/SearchResults.tsx | 240 ++ docs/src/components/search/index.ts | 32 + docs/src/components/search/quick-links.ts | 37 + docs/src/components/search/search.css | 790 +++++ docs/src/components/search/useSearch.ts | 395 +++ .../src/components/search/useSearchHistory.ts | 152 + docs/src/layouts/BaseLayout.astro | 5 + docs/src/pages/foundations/index.astro | 10 +- docs/src/pages/index.astro | 85 + docs/src/pages/search.astro | 160 + docs/src/scripts/build-search-index.ts | 306 ++ 82 files changed, 7782 insertions(+), 933 deletions(-) create mode 100644 docs/public/images/component-thumbnails/accordion.svg create mode 100644 docs/public/images/component-thumbnails/badge.svg create mode 100644 docs/public/images/component-thumbnails/block.svg create mode 100644 docs/public/images/component-thumbnails/button-group.svg create mode 100644 docs/public/images/component-thumbnails/button.svg create mode 100644 docs/public/images/component-thumbnails/callout.svg create mode 100644 docs/public/images/component-thumbnails/checkbox-group.svg create mode 100644 docs/public/images/component-thumbnails/checkbox.svg create mode 100644 docs/public/images/component-thumbnails/circular-progress-indicator.svg create mode 100644 docs/public/images/component-thumbnails/container.svg create mode 100644 docs/public/images/component-thumbnails/data-grid.svg create mode 100644 docs/public/images/component-thumbnails/date-picker.svg create mode 100644 docs/public/images/component-thumbnails/details.svg create mode 100644 docs/public/images/component-thumbnails/divider.svg create mode 100644 docs/public/images/component-thumbnails/drawer.svg create mode 100644 docs/public/images/component-thumbnails/dropdown.svg create mode 100644 docs/public/images/component-thumbnails/file-uploader.svg create mode 100644 docs/public/images/component-thumbnails/filter-chip.svg create mode 100644 docs/public/images/component-thumbnails/footer.svg create mode 100644 docs/public/images/component-thumbnails/form-item.svg create mode 100644 docs/public/images/component-thumbnails/form-stepper.svg create mode 100644 docs/public/images/component-thumbnails/form.svg create mode 100644 docs/public/images/component-thumbnails/grid.svg create mode 100644 docs/public/images/component-thumbnails/header.svg create mode 100644 docs/public/images/component-thumbnails/hero-banner.svg create mode 100644 docs/public/images/component-thumbnails/icon-button.svg create mode 100644 docs/public/images/component-thumbnails/icons.svg create mode 100644 docs/public/images/component-thumbnails/linear-progress-indicator.svg create mode 100644 docs/public/images/component-thumbnails/link.svg create mode 100644 docs/public/images/component-thumbnails/list.svg create mode 100644 docs/public/images/component-thumbnails/menu-button.svg create mode 100644 docs/public/images/component-thumbnails/microsite-header.svg create mode 100644 docs/public/images/component-thumbnails/modal.svg create mode 100644 docs/public/images/component-thumbnails/notification-banner.svg create mode 100644 docs/public/images/component-thumbnails/pagination.svg create mode 100644 docs/public/images/component-thumbnails/popover.svg create mode 100644 docs/public/images/component-thumbnails/radio.svg create mode 100644 docs/public/images/component-thumbnails/side-menu.svg create mode 100644 docs/public/images/component-thumbnails/skeleton-loader.svg create mode 100644 docs/public/images/component-thumbnails/spacer.svg create mode 100644 docs/public/images/component-thumbnails/table.svg create mode 100644 docs/public/images/component-thumbnails/tabs.svg create mode 100644 docs/public/images/component-thumbnails/temporary-notification.svg create mode 100644 docs/public/images/component-thumbnails/text-area.svg create mode 100644 docs/public/images/component-thumbnails/text-input.svg create mode 100644 docs/public/images/component-thumbnails/text.svg create mode 100644 docs/public/images/component-thumbnails/tooltip.svg create mode 100644 docs/public/images/component-thumbnails/work-side-menu.svg delete mode 100644 docs/src/components/ExamplesSideNav.tsx delete mode 100644 docs/src/components/Search.tsx delete mode 100644 docs/src/components/SideNav.tsx delete mode 100644 docs/src/components/nav/ExamplesSubMenu.tsx create mode 100644 docs/src/components/nav/MenuSecondaryContent.tsx delete mode 100644 docs/src/components/nav/TokensSubMenu.tsx create mode 100644 docs/src/components/nav/menu-secondary.css create mode 100644 docs/src/components/search/SearchEmptyState.tsx create mode 100644 docs/src/components/search/SearchFilterHints.tsx create mode 100644 docs/src/components/search/SearchInput.tsx create mode 100644 docs/src/components/search/SearchModal.tsx create mode 100644 docs/src/components/search/SearchNoResults.tsx create mode 100644 docs/src/components/search/SearchPage.tsx create mode 100644 docs/src/components/search/SearchResultItem.tsx create mode 100644 docs/src/components/search/SearchResults.tsx create mode 100644 docs/src/components/search/index.ts create mode 100644 docs/src/components/search/quick-links.ts create mode 100644 docs/src/components/search/search.css create mode 100644 docs/src/components/search/useSearch.ts create mode 100644 docs/src/components/search/useSearchHistory.ts create mode 100644 docs/src/pages/search.astro create mode 100644 docs/src/scripts/build-search-index.ts diff --git a/docs/package-lock.json b/docs/package-lock.json index c648453c96..df5e190004 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -11,7 +11,11 @@ "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", "@abgov/react-components": "*", "@abgov/ui-components-common": "*", - "@abgov/web-components": "*" + "@abgov/web-components": "*", + "flexsearch": "^0.7.43" + }, + "devDependencies": { + "tsx": "^4.19.0" } }, "node_modules/@abgov/design-tokens-v2": { @@ -43,6 +47,448 @@ "integrity": "sha512-SIjYxOSsQzGlHmSUJvZVx/N6hOZ4JhItO8Z2xTHj0UCZg3Q40v6l8Z5L8shBO4GZ20o51SC3oEIvewfLOtnAXw==", "license": "Apache-2.0" }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@types/react": { "version": "19.2.7", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", @@ -57,7 +503,84 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" + "license": "MIT", + "peer": true + }, + "node_modules/esbuild": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" + } + }, + "node_modules/flexsearch": { + "version": "0.7.43", + "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.43.tgz", + "integrity": "sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg==", + "license": "Apache-2.0" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.3.tgz", + "integrity": "sha512-vp8Cj/+9Q/ibZUrq1rhy8mCTQpCk31A3uu9wc1C50yAb3x2pFHOsGdAZQ7jD86ARayyxZUViYeIztW+GE8dcrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } }, "node_modules/react": { "version": "19.2.3", @@ -82,11 +605,42 @@ "react": "^19.2.3" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/scheduler": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", - "license": "MIT" + "license": "MIT", + "peer": true + }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } } } } diff --git a/docs/package.json b/docs/package.json index 693bec48f2..c75ddb97ea 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,7 +5,8 @@ "scripts": { "dev": "astro dev", "start": "astro dev", - "build": "astro check && astro build", + "build": "npm run build:search-index && astro check && astro build", + "build:search-index": "tsx src/scripts/build-search-index.ts", "preview": "astro preview", "astro": "astro" }, @@ -13,6 +14,10 @@ "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", "@abgov/react-components": "*", "@abgov/ui-components-common": "*", - "@abgov/web-components": "*" + "@abgov/web-components": "*", + "flexsearch": "^0.7.43" + }, + "devDependencies": { + "tsx": "^4.19.0" } } diff --git a/docs/public/images/component-thumbnails/accordion.svg b/docs/public/images/component-thumbnails/accordion.svg new file mode 100644 index 0000000000..50dce64fb6 --- /dev/null +++ b/docs/public/images/component-thumbnails/accordion.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/badge.svg b/docs/public/images/component-thumbnails/badge.svg new file mode 100644 index 0000000000..674d1f970c --- /dev/null +++ b/docs/public/images/component-thumbnails/badge.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/public/images/component-thumbnails/block.svg b/docs/public/images/component-thumbnails/block.svg new file mode 100644 index 0000000000..ed36493020 --- /dev/null +++ b/docs/public/images/component-thumbnails/block.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/button-group.svg b/docs/public/images/component-thumbnails/button-group.svg new file mode 100644 index 0000000000..ef20e35e95 --- /dev/null +++ b/docs/public/images/component-thumbnails/button-group.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/button.svg b/docs/public/images/component-thumbnails/button.svg new file mode 100644 index 0000000000..b2917066d9 --- /dev/null +++ b/docs/public/images/component-thumbnails/button.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/public/images/component-thumbnails/callout.svg b/docs/public/images/component-thumbnails/callout.svg new file mode 100644 index 0000000000..68757a5a7f --- /dev/null +++ b/docs/public/images/component-thumbnails/callout.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/checkbox-group.svg b/docs/public/images/component-thumbnails/checkbox-group.svg new file mode 100644 index 0000000000..867a1d7351 --- /dev/null +++ b/docs/public/images/component-thumbnails/checkbox-group.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/checkbox.svg b/docs/public/images/component-thumbnails/checkbox.svg new file mode 100644 index 0000000000..ad3a1dbf19 --- /dev/null +++ b/docs/public/images/component-thumbnails/checkbox.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/public/images/component-thumbnails/circular-progress-indicator.svg b/docs/public/images/component-thumbnails/circular-progress-indicator.svg new file mode 100644 index 0000000000..fe5066300f --- /dev/null +++ b/docs/public/images/component-thumbnails/circular-progress-indicator.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/container.svg b/docs/public/images/component-thumbnails/container.svg new file mode 100644 index 0000000000..deaea50904 --- /dev/null +++ b/docs/public/images/component-thumbnails/container.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/data-grid.svg b/docs/public/images/component-thumbnails/data-grid.svg new file mode 100644 index 0000000000..160c1bf034 --- /dev/null +++ b/docs/public/images/component-thumbnails/data-grid.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/date-picker.svg b/docs/public/images/component-thumbnails/date-picker.svg new file mode 100644 index 0000000000..ae298f68a0 --- /dev/null +++ b/docs/public/images/component-thumbnails/date-picker.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/details.svg b/docs/public/images/component-thumbnails/details.svg new file mode 100644 index 0000000000..d93b073de0 --- /dev/null +++ b/docs/public/images/component-thumbnails/details.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/divider.svg b/docs/public/images/component-thumbnails/divider.svg new file mode 100644 index 0000000000..25324b5bcb --- /dev/null +++ b/docs/public/images/component-thumbnails/divider.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/drawer.svg b/docs/public/images/component-thumbnails/drawer.svg new file mode 100644 index 0000000000..d301509517 --- /dev/null +++ b/docs/public/images/component-thumbnails/drawer.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/dropdown.svg b/docs/public/images/component-thumbnails/dropdown.svg new file mode 100644 index 0000000000..d34320aa99 --- /dev/null +++ b/docs/public/images/component-thumbnails/dropdown.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/file-uploader.svg b/docs/public/images/component-thumbnails/file-uploader.svg new file mode 100644 index 0000000000..f8e6c1f2eb --- /dev/null +++ b/docs/public/images/component-thumbnails/file-uploader.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/public/images/component-thumbnails/filter-chip.svg b/docs/public/images/component-thumbnails/filter-chip.svg new file mode 100644 index 0000000000..2d4c1c9413 --- /dev/null +++ b/docs/public/images/component-thumbnails/filter-chip.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/public/images/component-thumbnails/footer.svg b/docs/public/images/component-thumbnails/footer.svg new file mode 100644 index 0000000000..1506b984ae --- /dev/null +++ b/docs/public/images/component-thumbnails/footer.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/form-item.svg b/docs/public/images/component-thumbnails/form-item.svg new file mode 100644 index 0000000000..03d881ceea --- /dev/null +++ b/docs/public/images/component-thumbnails/form-item.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/public/images/component-thumbnails/form-stepper.svg b/docs/public/images/component-thumbnails/form-stepper.svg new file mode 100644 index 0000000000..35ab0df8a7 --- /dev/null +++ b/docs/public/images/component-thumbnails/form-stepper.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/form.svg b/docs/public/images/component-thumbnails/form.svg new file mode 100644 index 0000000000..bb31a9ecae --- /dev/null +++ b/docs/public/images/component-thumbnails/form.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/grid.svg b/docs/public/images/component-thumbnails/grid.svg new file mode 100644 index 0000000000..858414d8cf --- /dev/null +++ b/docs/public/images/component-thumbnails/grid.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/header.svg b/docs/public/images/component-thumbnails/header.svg new file mode 100644 index 0000000000..46f173da6b --- /dev/null +++ b/docs/public/images/component-thumbnails/header.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/hero-banner.svg b/docs/public/images/component-thumbnails/hero-banner.svg new file mode 100644 index 0000000000..246a6f4d34 --- /dev/null +++ b/docs/public/images/component-thumbnails/hero-banner.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/icon-button.svg b/docs/public/images/component-thumbnails/icon-button.svg new file mode 100644 index 0000000000..8d99627daa --- /dev/null +++ b/docs/public/images/component-thumbnails/icon-button.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/public/images/component-thumbnails/icons.svg b/docs/public/images/component-thumbnails/icons.svg new file mode 100644 index 0000000000..2ed0939ded --- /dev/null +++ b/docs/public/images/component-thumbnails/icons.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/linear-progress-indicator.svg b/docs/public/images/component-thumbnails/linear-progress-indicator.svg new file mode 100644 index 0000000000..1d1b11bacf --- /dev/null +++ b/docs/public/images/component-thumbnails/linear-progress-indicator.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/public/images/component-thumbnails/link.svg b/docs/public/images/component-thumbnails/link.svg new file mode 100644 index 0000000000..0ab21232a5 --- /dev/null +++ b/docs/public/images/component-thumbnails/link.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/list.svg b/docs/public/images/component-thumbnails/list.svg new file mode 100644 index 0000000000..44ef722161 --- /dev/null +++ b/docs/public/images/component-thumbnails/list.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/menu-button.svg b/docs/public/images/component-thumbnails/menu-button.svg new file mode 100644 index 0000000000..32e3a5d877 --- /dev/null +++ b/docs/public/images/component-thumbnails/menu-button.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/public/images/component-thumbnails/microsite-header.svg b/docs/public/images/component-thumbnails/microsite-header.svg new file mode 100644 index 0000000000..30a989d277 --- /dev/null +++ b/docs/public/images/component-thumbnails/microsite-header.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/public/images/component-thumbnails/modal.svg b/docs/public/images/component-thumbnails/modal.svg new file mode 100644 index 0000000000..ecd05c707f --- /dev/null +++ b/docs/public/images/component-thumbnails/modal.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/notification-banner.svg b/docs/public/images/component-thumbnails/notification-banner.svg new file mode 100644 index 0000000000..0bc7e53c71 --- /dev/null +++ b/docs/public/images/component-thumbnails/notification-banner.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/pagination.svg b/docs/public/images/component-thumbnails/pagination.svg new file mode 100644 index 0000000000..afb23bc101 --- /dev/null +++ b/docs/public/images/component-thumbnails/pagination.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/popover.svg b/docs/public/images/component-thumbnails/popover.svg new file mode 100644 index 0000000000..5ffb6f83a1 --- /dev/null +++ b/docs/public/images/component-thumbnails/popover.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/radio.svg b/docs/public/images/component-thumbnails/radio.svg new file mode 100644 index 0000000000..9118318898 --- /dev/null +++ b/docs/public/images/component-thumbnails/radio.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/public/images/component-thumbnails/side-menu.svg b/docs/public/images/component-thumbnails/side-menu.svg new file mode 100644 index 0000000000..94dbc1438d --- /dev/null +++ b/docs/public/images/component-thumbnails/side-menu.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/skeleton-loader.svg b/docs/public/images/component-thumbnails/skeleton-loader.svg new file mode 100644 index 0000000000..d0a27a3463 --- /dev/null +++ b/docs/public/images/component-thumbnails/skeleton-loader.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/spacer.svg b/docs/public/images/component-thumbnails/spacer.svg new file mode 100644 index 0000000000..56c5dc2dac --- /dev/null +++ b/docs/public/images/component-thumbnails/spacer.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/table.svg b/docs/public/images/component-thumbnails/table.svg new file mode 100644 index 0000000000..86176cbef9 --- /dev/null +++ b/docs/public/images/component-thumbnails/table.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/tabs.svg b/docs/public/images/component-thumbnails/tabs.svg new file mode 100644 index 0000000000..129ef6522c --- /dev/null +++ b/docs/public/images/component-thumbnails/tabs.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/temporary-notification.svg b/docs/public/images/component-thumbnails/temporary-notification.svg new file mode 100644 index 0000000000..8d3eb6a4af --- /dev/null +++ b/docs/public/images/component-thumbnails/temporary-notification.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/text-area.svg b/docs/public/images/component-thumbnails/text-area.svg new file mode 100644 index 0000000000..0500907f3e --- /dev/null +++ b/docs/public/images/component-thumbnails/text-area.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/text-input.svg b/docs/public/images/component-thumbnails/text-input.svg new file mode 100644 index 0000000000..b89da8cc6c --- /dev/null +++ b/docs/public/images/component-thumbnails/text-input.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/public/images/component-thumbnails/text.svg b/docs/public/images/component-thumbnails/text.svg new file mode 100644 index 0000000000..156f681dc7 --- /dev/null +++ b/docs/public/images/component-thumbnails/text.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/tooltip.svg b/docs/public/images/component-thumbnails/tooltip.svg new file mode 100644 index 0000000000..a344f005ec --- /dev/null +++ b/docs/public/images/component-thumbnails/tooltip.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/public/images/component-thumbnails/work-side-menu.svg b/docs/public/images/component-thumbnails/work-side-menu.svg new file mode 100644 index 0000000000..3abe8bbc82 --- /dev/null +++ b/docs/public/images/component-thumbnails/work-side-menu.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/public/search-index.json b/docs/public/search-index.json index aab298aa2c..c87843d61f 100644 --- a/docs/public/search-index.json +++ b/docs/public/search-index.json @@ -1,29 +1,2700 @@ [ { + "type": "component", + "id": "accordion", + "name": "Accordion", + "description": "Let users show and hide sections of related content on a page.", + "status": "stable", + "category": "content-layout", + "tags": [ + "expand", + "blind", + "collapse", + "content layout", + "expandable panel", + "expand" + ], + "slug": "accordion" + }, + { + "type": "component", + "id": "app-header", + "name": "Header", + "description": "Provide structure to help users find their way around the service.", + "status": "stable", + "category": "structure-and-navigation", + "tags": [ + "app header", + "global navigation", + "header", + "header and navigation", + "main navigation", + "navigation header", + "navigation menu", + "primary navigation", + "service header", + "structure and navigation", + "top navigation" + ], + "slug": "app-header" + }, + { + "type": "component", "id": "badge", - "title": "Badge", - "description": " Small labels which hold small amounts of information, system feedback, or states. ", - "content": "# Badge\n\nSmall labels which hold small amounts of information, system feedback, or states.\n", - "component": "badge", - "filePath": "docs/src/pages/components/badge/badge.mdx", - "urlPath": "components/badge", - "tags": [ - "filter chip", + "name": "Badge", + "description": "Small labels which hold small amounts of information, system feedback, or states.", + "status": "stable", + "category": "feedback-and-alerts", + "tags": [ + "feedback and alerts", + "label", + "lozenge", + "status", + "tag", + "token" + ], + "slug": "badge" + }, + { + "type": "component", + "id": "block", + "name": "Block", + "description": "Group components into a block with consistent space between.", + "status": "stable", + "category": "utilities", + "tags": [ + "utility" + ], + "slug": "block" + }, + { + "type": "component", + "id": "button-group", + "name": "Button group", + "description": "Display multiple related actions stacked or in a horizontal row to help with arrangement and spacing.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "action", + "inputs and actions", + "submit" + ], + "slug": "button-group" + }, + { + "type": "component", + "id": "button", + "name": "Button", + "description": "Carry out an important action or navigate to another page.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "action", + "inputs and actions", + "submit" + ], + "slug": "button" + }, + { + "type": "component", + "id": "callout", + "name": "Callout", + "description": "Communicate important information through a strong visual emphasis.", + "status": "stable", + "category": "feedback-and-alerts", + "tags": [ + "alert", + "feedback and alerts", + "show more information" + ], + "slug": "callout" + }, + { + "type": "component", + "id": "checkbox-list", + "name": "Checkbox list", + "description": "A multiple selection input.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "checkbox", + "input", + "inputs and actions" + ], + "slug": "checkbox-list" + }, + { + "type": "component", + "id": "checkbox", + "name": "Checkbox", + "description": "Let the user select one or more options.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "checklist", + "input", + "inputs and actions", + "options" + ], + "slug": "checkbox" + }, + { + "type": "component", + "id": "circular-progress", + "name": "Circular progress indicator", + "description": "Provide feedback of progress to users while loading.", + "status": "stable", + "category": "feedback-and-alerts", + "tags": [ + "feedback and alerts", + "loading", + "loader", + "loading indicator", + "progress spinner", + "process timer", + "spinner" + ], + "slug": "circular-progress" + }, + { + "type": "component", + "id": "container", + "name": "Container", + "description": "Group information, create hierarchy, and show related information.", + "status": "stable", + "category": "content-layout", + "tags": [ + "card", + "content", + "content layout", + "group", + "structure" + ], + "slug": "container" + }, + { + "type": "component", + "id": "data-grid", + "name": "Data Grid", + "description": "Advanced table with sorting and selection.", + "status": "stable", + "category": "content-layout", + "tags": [], + "slug": "data-grid" + }, + { + "type": "component", + "id": "date-picker", + "name": "Date picker", + "description": "Lets users select a date through a calendar without the need to manually type it in a field.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "calendar", + "date", + "date picker", + "inputs and actions", + "input" + ], + "slug": "date-picker" + }, + { + "type": "component", + "id": "details", + "name": "Details", + "description": "Let users reveal more detailed information when they need it.", + "status": "stable", + "category": "content-layout", + "tags": [ + "accordion details", + "additional info", + "additional information", + "content layout", + "detail accordion", + "details expander", + "details toggle", + "disclosure", + "expand", + "expander", + "expanding detail", + "expandable details", + "expandable help text", + "more info", + "see more", + "show more", + "show more information" + ], + "slug": "details" + }, + { + "type": "component", + "id": "divider", + "name": "Divider", + "description": "Indicate a separation of layout, or to distinguish large chunks of information on a page.", + "status": "stable", + "category": "utilities", + "tags": [ + "dividing line", + "page divider", + "utilities" + ], + "slug": "divider" + }, + { + "type": "component", + "id": "drawer", + "name": "Drawer", + "description": "A panel that slides in from the side of the screen to display additional content or actions without navigating away from the current view.", + "status": "stable", + "category": "content-layout", + "tags": [ + "sections", + "structure and navigation", + "sheet", + "sidesheet", + "sidepanel" + ], + "slug": "drawer" + }, + { + "type": "component", + "id": "dropdown", + "name": "Dropdown", + "description": "Present a list of options to the user to select from.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "inputs and actions", + "select", + "single select dropdown" + ], + "slug": "dropdown" + }, + { + "type": "component", + "id": "file-upload-input", + "name": "File uploader", + "description": "Help users select and upload a file.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "drag and drop", + "file upload", + "inputs and actions", + "uploader" + ], + "slug": "file-upload-input" + }, + { + "type": "component", + "id": "filter-chip", + "name": "Filter chip", + "description": "Allow the user to enter information, filter content, and make selections.", + "status": "stable", + "category": "feedback-and-alerts", + "tags": [ + "inputs and actions", + "pill" + ], + "slug": "filter-chip" + }, + { + "type": "component", + "id": "footer", + "name": "Footer", + "description": "Provides information related your service at the bottom of every page.", + "status": "stable", + "category": "structure-and-navigation", + "tags": [ + "page footer", + "structure and navigation" + ], + "slug": "footer" + }, + { + "type": "component", + "id": "form-item", + "name": "Form item", + "description": "Wraps an input control with a text label, requirement label, helper text, and error text.", + "status": "stable", + "category": "utilities", + "tags": [ + "form", + "input", + "inputs and actions" + ], + "slug": "form-item" + }, + { + "type": "component", + "id": "form-stepper", + "name": "Form stepper", + "description": "Provides a visual representation of a form through a series of steps.", + "status": "deprecated", + "category": "structure-and-navigation", + "tags": [ + "form stepper", + "horizontal step navigation", + "process overview", + "progress indicator", + "steps", + "structure and navigation", + "wizard" + ], + "slug": "form-stepper" + }, + { + "type": "component", + "id": "form", + "name": "Form", + "description": "Container for form inputs and validation.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [], + "slug": "form" + }, + { + "type": "component", + "id": "grid", + "name": "Grid", + "description": "Arrange a number of components into a responsive grid pattern.", + "status": "stable", + "category": "utilities", + "tags": [ + "utilities" + ], + "slug": "grid" + }, + { + "type": "component", + "id": "hero-banner", + "name": "Hero banner", + "description": "A visual band of text, including an image and a call to action.", + "status": "stable", + "category": "content-layout", + "tags": [ + "promotion banner", + "hero panel", + "structure and navigation" + ], + "slug": "hero-banner" + }, + { + "type": "component", + "id": "icon-button", + "name": "Icon button", + "description": "A compact button with an icon and no text.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "action", + "inputs and actions", + "submit" + ], + "slug": "icon-button" + }, + { + "type": "component", + "id": "icon", + "name": "Icons", + "description": "A simple and universal graphic symbol representing an action, object, or concept to help guide the user.", + "status": "stable", + "category": "utilities", + "tags": [ + "utilities" + ], + "slug": "icon" + }, + { + "type": "component", + "id": "input", + "name": "Input", + "description": "A single-line field where users can input and edit text.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "inputs and actions", + "text field", + "text box", + "search", + "text input" + ], + "slug": "input" + }, + { + "type": "component", + "id": "linear-progress", + "name": "Linear progress indicator", + "description": "Provide visual feedback to users while loading.", + "status": "stable", + "category": "feedback-and-alerts", + "tags": [ + "progress", + "feedback and alerts", + "loading", + "loader", + "loading indicator", + "process timer" + ], + "slug": "linear-progress" + }, + { + "type": "component", + "id": "link-button", + "name": "Link Button", + "description": "Button styled as a link for secondary actions.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [], + "slug": "link-button" + }, + { + "type": "component", + "id": "link", + "name": "Link", + "description": "Wraps an anchor element to add icons or margins.", + "status": "stable", + "category": "utilities", + "tags": [ + "utilities", + "text" + ], + "slug": "link" + }, + { + "type": "component", + "id": "menu-button", + "name": "Menu button", + "description": "A button with more than one action.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "menu button", + "split button" + ], + "slug": "menu-button" + }, + { + "type": "component", + "id": "microsite-header", + "name": "Microsite header", + "description": "Communicate what stage the service is at, connect to Alberta.ca, and gather feedback on your service.", + "status": "stable", + "category": "structure-and-navigation", + "tags": [ + "banner", + "development header", + "feedback bar", + "microheader", + "microsite banner", + "service header", + "service bar", + "service stage banner", + "service state banner", + "status bar", + "structure and navigation" + ], + "slug": "microsite-header" + }, + { + "type": "component", + "id": "modal", + "name": "Modal", + "description": "An overlay that appears in front of all other content, and requires a user to take an action before continuing.", + "status": "stable", + "category": "feedback-and-alerts", + "tags": [ + "feedback and alerts", + "popup modal", + "popup box", + "modal dialog", + "show more information" + ], + "slug": "modal" + }, + { + "type": "component", + "id": "notification", + "name": "Notification banner", + "description": "Display important page level information or notifications.", + "status": "stable", + "category": "feedback-and-alerts", + "tags": [ + "alert banner", + "banner", + "feedback and alerts" + ], + "slug": "notification" + }, + { + "type": "component", + "id": "page-block", + "name": "Page Block", + "description": "Full-width section with optional background.", + "status": "stable", + "category": "content-layout", + "tags": [], + "slug": "page-block" + }, + { + "type": "component", + "id": "pagination", + "name": "Pagination", + "description": "Help users navigation between multiple pages or screens as part of a set.", + "status": "stable", + "category": "structure-and-navigation", + "tags": [ + "pager", + "pagination controls", + "structure and navigation" + ], + "slug": "pagination" + }, + { + "type": "component", + "id": "popover", + "name": "Popover", + "description": "A small overlay that opens on demand, used in other components.", + "status": "stable", + "category": "content-layout", + "tags": [ + "content layout", + "show more information" + ], + "slug": "popover" + }, + { + "type": "component", + "id": "radio-group", + "name": "Radio", + "description": "Allow users to select one option from a set.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "inputs and actions", + "option button", + "radio button group", + "radio buttons" + ], + "slug": "radio-group" + }, + { + "type": "component", + "id": "side-menu", + "name": "Side menu", + "description": "A side navigation that helps the user navigate between pages.", + "status": "stable", + "category": "structure-and-navigation", + "tags": [ + "secondary navigation", + "side nav", + "side bar", + "structure and navigation" + ], + "slug": "side-menu" + }, + { + "type": "component", + "id": "skeleton", + "name": "Skeleton loader", + "description": "Provide visual feedback to users while loading a content heavy page or page element.", + "status": "stable", + "category": "feedback-and-alerts", + "tags": [ + "content layout", + "loading" + ], + "slug": "skeleton" + }, + { + "type": "component", + "id": "spacer", + "name": "Spacer", + "description": "Negative area between the components and the interface.", + "status": "stable", + "category": "utilities", + "tags": [ + "gap", + "margin", + "padding", + "space", + "utilities" + ], + "slug": "spacer" + }, + { + "type": "component", + "id": "table", + "name": "Table", + "description": "A set of structured data that is easy for a user to scan, examine, and compare.", + "status": "stable", + "category": "content-layout", + "tags": [ + "data table", + "content layout", + "interactive table", + "sortable table" + ], + "slug": "table" + }, + { + "type": "component", + "id": "tabs", + "name": "Tabs", + "description": "Let users navigate between related sections of content, displaying one section at a time.", + "status": "stable", + "category": "structure-and-navigation", + "tags": [ + "sections", + "structure and navigation", + "tabbed interface" + ], + "slug": "tabs" + }, + { + "type": "component", + "id": "temporary-notification", + "name": "Temporary notification", + "description": "A notification that appears at the bottom of the screen.", + "status": "stable", + "category": "feedback-and-alerts", + "tags": [ + "snackbar", + "toast", + "temporary notification" + ], + "slug": "temporary-notification" + }, + { + "type": "component", + "id": "text-area", + "name": "Text area", + "description": "A multi-line field where users can input and edit text.", + "status": "stable", + "category": "inputs-and-actions", + "tags": [ + "inputs and actions", + "long answer input field", + "multi line text input", + "multiple text box", + "text box", + "text input area" + ], + "slug": "text-area" + }, + { + "type": "component", + "id": "text", + "name": "Text", + "description": "Provides consistent sizing, spacing, and colour to written content.", + "status": "stable", + "category": "content-layout", + "tags": [ + "text", + "body", + "copy" + ], + "slug": "text" + }, + { + "type": "component", + "id": "tooltip", + "name": "Tooltip", + "description": "A small popover that displays more information about an item.", + "status": "stable", + "category": "feedback-and-alerts", + "tags": [ + "feedback and alerts" + ], + "slug": "tooltip" + }, + { + "type": "component", + "id": "work-side-menu", + "name": "Work Side Menu", + "description": "Side menu variant for worker applications.", + "status": "stable", + "category": "structure-and-navigation", + "tags": [], + "slug": "work-side-menu" + }, + { + "type": "example", + "id": "add-a-filter-chip", + "title": "Add a filter chip", + "description": "Allow users to apply filters using selectable chips, which visually represent active filters and can be removed to update results dynamically.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "filtering", + "chips", + "dynamic" + ], + "components": [ + "filter-chip", + "button" + ], + "scale": "interaction", + "userType": "both", + "slug": "add-a-filter-chip" + }, + { + "type": "example", + "id": "add-a-record-using-a-drawer", + "title": "Add a record using a drawer", + "description": "Add a record using a drawer. The drawer slides in from the side to allow data entry without navigating away from the current view.", + "status": "published", + "categories": [ + "structure-and-navigation" + ], + "tags": [ + "drawer", + "forms", + "records", + "data-entry" + ], + "components": [ + "drawer", + "button", + "button-group", + "form-item", + "dropdown", + "input", + "radio-group", + "block" + ], + "scale": "task", + "userType": "worker", + "slug": "add-a-record-using-a-drawer" + }, + { + "type": "example", + "id": "add-and-edit-lots-of-filters", + "title": "Add and edit lots of filters", + "description": "Add and edit filters using a drawer. This pattern is useful when you have many filter options that would clutter the main interface.", + "status": "published", + "categories": [ + "structure-and-navigation" + ], + "tags": [ + "filtering", + "drawer", + "forms", + "data-management" + ], + "components": [ + "drawer", + "button", + "button-group", + "form-item", + "checkbox-list", + "checkbox", + "dropdown", + "radio-group" + ], + "scale": "task", + "userType": "worker", + "slug": "add-and-edit-lots-of-filters" + }, + { + "type": "example", + "id": "add-another-item-in-a-modal", + "title": "Add another item in a modal", + "description": "Add a new item within a modal window without navigating away from the current context.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "modal", + "forms", + "data-entry" + ], + "components": [ + "modal", + "button", + "button-group", + "form-item", + "dropdown", + "input", + "text-area" + ], + "scale": "task", + "userType": "both", + "slug": "add-another-item-in-a-modal" + }, + { + "type": "example", + "id": "ask-a-long-answer-question-with-a-maximum-word-count", + "title": "Ask a long answer question with a maximum word count", + "description": "Restrict a long answer input to a maximum number of words or characters.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "text-area", + "validation", + "word-count" + ], + "components": [ + "form-item", + "text-area" + ], + "scale": "task", + "userType": "citizen", + "slug": "ask-a-long-answer-question-with-a-maximum-word-count" + }, + { + "type": "example", + "id": "ask-a-user-for-a-birthday", + "title": "Ask a user for a birthday", + "description": "Asks for a user's birthday using the date picker component.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "date-input", + "ask-a-user-for" + ], + "components": [ + "form-item", + "date-picker" + ], + "scale": "task", + "userType": "citizen", + "slug": "ask-a-user-for-a-birthday" + }, + { + "type": "example", + "id": "ask-a-user-for-an-address", + "title": "Ask a user for an address", + "description": "Collect a complete mailing address from the user, including fields like street, city, and postal code.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "address", + "location" + ], + "components": [ + "form-item", + "input", + "dropdown", + "block", + "button", + "button-group", + "text" + ], + "scale": "task", + "userType": "citizen", + "slug": "ask-a-user-for-an-address" + }, + { + "type": "example", + "id": "ask-a-user-for-an-indian-registration-number", + "title": "Ask a user for an Indian registration number", + "description": "Request a user's Indian registration number with appropriate validation and context.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "identity", + "registration" + ], + "components": [ + "form-item", + "input", + "block" + ], + "scale": "task", + "userType": "citizen", + "slug": "ask-a-user-for-an-indian-registration-number" + }, + { + "type": "example", + "id": "ask-a-user-for-direct-deposit-information", + "title": "Ask a user for direct deposit information", + "description": "Gather banking details from users to enable direct deposit, including account number and financial institution information.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "banking", + "financial" + ], + "components": [ + "form-item", + "input", + "details", + "text" + ], + "scale": "task", + "userType": "citizen", + "slug": "ask-a-user-for-direct-deposit-information" + }, + { + "type": "example", + "id": "ask-a-user-for-dollar-amounts", + "title": "Ask a user for dollar amounts", + "description": "Prompt users to enter monetary values using a consistent input format that supports validation and currency symbols.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "currency", + "financial" + ], + "components": [ + "form-item", + "input" + ], + "scale": "task", + "userType": "citizen", + "slug": "ask-a-user-for-dollar-amounts" + }, + { + "type": "example", + "id": "ask-a-user-one-question-at-a-time", + "title": "Ask a user one question at a time", + "description": "Ask a user one question at a time.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "questions", + "public-form" + ], + "components": [ + "form-item", + "radio-group", + "radio-item", + "button" + ], + "scale": "page", + "userType": "citizen", + "slug": "ask-a-user-one-question-at-a-time" + }, + { + "type": "example", + "id": "basic-page-layout", + "title": "Basic page layout", + "description": "A basic page template to use as a starting point.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "layout", + "page-structure", + "template" + ], + "components": [ + "microsite-header", + "app-header", + "footer", + "page-block", + "skeleton", + "grid" + ], + "scale": "page", + "userType": "both", + "slug": "basic-page-layout" + }, + { + "type": "example", + "id": "button-with-icon", + "title": "Button with Icon", + "description": "Shows how to add leading or trailing icons to buttons for enhanced visual communication.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ "icons", + "buttons", + "actions" + ], + "components": [ + "button", + "button-group", + "icon" + ], + "scale": "interaction", + "userType": "both", + "slug": "button-with-icon" + }, + { + "type": "example", + "id": "card-grid", + "title": "Card grid", + "description": "Display multiple cards in a grid layout, each containing related content or actions.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "cards", + "grid", + "navigation", + "dashboard" + ], + "components": [ + "container", + "grid", + "link", + "text" + ], + "scale": "task", + "userType": "both", + "slug": "card-grid" + }, + { + "type": "example", + "id": "card-view-of-case-files", + "title": "Card view of case files", + "description": "Present a visual overview of individual case files in a card format for scanning and access.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "cards", + "case-management", + "status", + "list" + ], + "components": [ + "container", + "block", + "badge", + "button" + ], + "scale": "task", + "userType": "worker", + "slug": "card-view-of-case-files" + }, + { + "type": "example", + "id": "communicate-a-future-service-outage", + "title": "Communicate a future service outage", + "description": "Display a clear message to inform users about an upcoming service outage, including the date, time, and expected impact on service availability.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "notification", + "maintenance", + "alerts", + "system-status" + ], + "components": [ + "notification" + ], + "scale": "task", + "userType": "both", + "slug": "communicate-a-future-service-outage" + }, + { + "type": "example", + "id": "confirm-a-change", + "title": "Confirm a change", + "description": "Ask the user to confirm a proposed change before it is applied.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "modal", + "confirmation", + "forms", + "changes" + ], + "components": [ + "modal", + "button", + "button-group", + "container", + "form-item", + "date-picker" + ], + "scale": "task", + "userType": "both", + "slug": "confirm-a-change" + }, + { + "type": "example", + "id": "confirm-a-destructive-action", + "title": "Confirm a destructive action", + "description": "Confirm a destructive action like deletion to prevent accidental data loss.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "modal", + "confirmation", + "delete", + "destructive" + ], + "components": [ + "modal", + "button", + "button-group" + ], + "scale": "task", + "userType": "both", + "slug": "confirm-a-destructive-action" + }, + { + "type": "example", + "id": "confirm-before-navigating-away", + "title": "Confirm before navigating away", + "description": "Prompt the user in a modal before navigating to a new route to preserve context.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "modal", + "navigation", + "confirmation", + "routing" + ], + "components": [ + "modal", + "button", + "button-group" + ], + "scale": "task", + "userType": "worker", + "slug": "confirm-before-navigating-away" + }, + { + "type": "example", + "id": "confirm-that-an-application-was-submitted", + "title": "Confirm that an application was submitted", + "description": "Display a confirmation screen to indicate successful application submission.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "confirmation", + "success", + "callout", + "application" + ], + "components": [ + "callout", + "button", + "button-group" + ], + "scale": "page", + "userType": "citizen", + "slug": "confirm-that-an-application-was-submitted" + }, + { + "type": "example", + "id": "copy-to-clipboard", + "title": "Copy to clipboard", + "description": "Allow users to quickly copy text or data to their clipboard with a single click.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "clipboard", + "copy", + "tooltip", + "icon-button" + ], + "components": [ + "block", + "icon-button", + "tooltip" + ], + "scale": "interaction", + "userType": "both", + "slug": "copy-to-clipboard" + }, + { + "type": "example", + "id": "disabled-button-with-a-required-field", + "title": "Disabled button with a required field", + "description": "Disable a submit button until required form fields are completed.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "button", + "form", + "validation", + "disabled", + "required" + ], + "components": [ + "button", + "button-group", + "form-item", + "input" + ], + "scale": "interaction", + "userType": "both", + "slug": "disabled-button-with-a-required-field" + }, + { + "type": "example", + "id": "display-numbers-in-a-table-so-they-can-be-scanned-easily", + "title": "Display numbers in a table so they can be scanned easily", + "description": "Right-align numeric columns in tables to make them easier to scan and compare.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "table", + "numbers", + "data", + "alignment", + "scanning" + ], + "components": [ "table" - ] + ], + "scale": "task", + "userType": "worker", + "slug": "display-numbers-in-a-table-so-they-can-be-scanned-easily" }, { - "id": "accordion", - "title": "Accordion", - "description": "Some additional description for the component", - "content": "# Accordion\nAccordion containers enable multiple content sections to be displayed in a limited space and collapsed or expanded by the user. You can create hierarchy of information by hiding secondary content inside collapsed expand containers.\n\n## Examples\n\n\n
\n
Name
\n
Joan Smith
\n
Contact preference
\n
Text message
\n
\n
\n\n### Close all\n\nconst AccordionCloseAllExample => () {\n const [expandedAll, setExpandedAll] = useState(false);\n const [expandedList, setExpandedList] = useState([]);\n useEffect(() => {\n setExpandedAll(expandedList.length === 4);\n }, [expandedList.length]);\n\n const expandOrCollapseAll = () => {\n setExpandedAll((prev) => {\n const newState = !prev;\n setExpandedList(newState ? [1, 2, 3, 4] : []);\n return newState;\n });\n };\n\n const updateAccordion = (order: number, isOpen: boolean) => {\n setExpandedList((prev) => {\n if (isOpen) {\n return prev.includes(order) ? prev: [...prev, order];\n }\n return prev.filter((item) => item !== order);\n });\n\n return (\n expandOrCollapseAll()}>\n {expandedAll ? \"Hide all sections\" : \"Show all sections\"}\n \n\n updateAccordion(1, open)}>\n To create an account you will need to contact your office admin.\n \n\n updateAccordion(2, open)}>\n You will need to verify your identity through our two factor authentication in addition to the digital signature.\n \n\n updateAccordion(3, open)}>\n Yes, you can see the status of your application on the main service dashboard when you login. You will receive updates and notifications in your email as your request progresses.\n \n\n updateAccordion(4, open)}>\n Yes, our digital service is designed with accessibility in mind. More information on accessibility.\n \n )\n}\n\n\n", - "component": "accordion", - "filePath": "docs/src/pages/components/accordion/accordion.mdx", - "urlPath": "components/accordion", + "type": "example", + "id": "display-user-information", + "title": "Display user information", + "description": "Display user contact information and related data using containers with clear visual hierarchy.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "container", + "user-info", + "contact", + "profile", + "table" + ], + "components": [ + "container", + "block", + "button", + "table", + "text" + ], + "scale": "task", + "userType": "worker", + "slug": "display-user-information" + }, + { + "type": "example", + "id": "dynamically-add-an-item-to-a-dropdown-list", + "title": "Dynamically add an item to a dropdown list", + "description": "Allow users to add new items to a dropdown list dynamically.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "dropdown", + "dynamic", + "form", + "input", + "radio" + ], + "components": [ + "dropdown", + "dropdown-item", + "form-item", + "input", + "button" + ], + "scale": "interaction", + "userType": "both", + "slug": "dynamically-add-an-item-to-a-dropdown-list" + }, + { + "type": "example", + "id": "dynamically-change-items-in-a-dropdown-list", + "title": "Dynamically change items in a dropdown list", + "description": "Update dropdown options based on the selection in another dropdown (cascading/dependent dropdowns).", + "status": "published", + "categories": [ + "inputs-and-actions" + ], "tags": [ + "dropdown", + "dynamic", + "cascading", + "dependent", + "form" + ], + "components": [ + "dropdown", + "dropdown-item", + "form-item" + ], + "scale": "interaction", + "userType": "both", + "slug": "dynamically-change-items-in-a-dropdown-list" + }, + { + "type": "example", + "id": "expand-or-collapse-part-of-a-form", + "title": "Expand or collapse part of a form", + "description": "Use accordions to organize form review sections that users can expand or collapse.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "accordion", + "form", + "review", + "collapsible", + "badge" + ], + "components": [ + "accordion", + "badge" + ], + "scale": "task", + "userType": "both", + "slug": "expand-or-collapse-part-of-a-form" + }, + { + "type": "example", + "id": "filter-data-in-a-table", + "title": "Filter data in a table", + "description": "Enable users to filter table data using search input and filter chips.", + "status": "published", + "categories": [ + "structure-and-navigation" + ], + "tags": [ + "table", + "filter", + "search", + "chips", + "data" + ], + "components": [ + "table", + "filter-chip", + "input", + "button", + "block", + "form-item", + "badge", + "text" + ], + "scale": "task", + "userType": "worker", + "slug": "filter-data-in-a-table" + }, + { + "type": "example", + "id": "form-stepper-with-controlled-navigation", + "title": "Form stepper with controlled navigation", + "description": "Create a multi-step form with controlled navigation using Previous/Next buttons.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "stepper", + "form", + "wizard", + "multi-step", + "navigation", + "pages" + ], + "components": [ + "form-stepper", + "form-step", + "pages", + "button", + "skeleton", + "spacer" + ], + "scale": "task", + "userType": "both", + "slug": "form-stepper-with-controlled-navigation" + }, + { + "type": "example", + "id": "give-background-information-before-asking-a-question", + "title": "Give background information before asking a question", + "description": "Provide explanatory context before asking a question to help users understand what is being asked.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "form", + "question", + "context", + "radio", + "citizen-facing" + ], + "components": [ + "form-item", + "radio-group", + "radio-item", + "button" + ], + "scale": "task", + "userType": "citizen", + "slug": "give-background-information-before-asking-a-question" + }, + { + "type": "example", + "id": "give-context-before-asking-a-long-answer-question", + "title": "Give context before asking a long answer question", + "description": "Provide context and guidance before a long-answer text field to help users provide relevant information.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "form", + "text-area", + "question", + "context", + "details", + "citizen-facing" + ], + "components": [ + "text-area", + "form-item", "details", - "tabs" - ] + "button", + "button-group" + ], + "scale": "task", + "userType": "citizen", + "slug": "give-context-before-asking-a-long-answer-question" + }, + { + "type": "example", + "id": "group-related-questions-together-on-a-question-page", + "title": "Group related questions together on a question page", + "description": "Group related form fields together on a single page to collect address information from users, making it easier to complete logically connected questions at once.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "address", + "question-page" + ], + "components": [ + "form-item", + "input", + "dropdown", + "dropdown-item", + "button" + ], + "scale": "page", + "userType": "citizen", + "slug": "group-related-questions-together-on-a-question-page" + }, + { + "type": "example", + "id": "header-with-menu-click-event", + "title": "Header with menu click event", + "description": "Handle custom menu click behavior in the app header, allowing you to intercept the mobile menu button click and implement custom functionality like custom navigation drawers.", + "status": "published", + "categories": [ + "structure-and-navigation" + ], + "tags": [ + "header", + "navigation", + "mobile", + "menu" + ], + "components": [ + "app-header", + "app-header-menu", + "radio-group", + "radio-item" + ], + "scale": "interaction", + "userType": "both", + "slug": "header-with-menu-click-event" + }, + { + "type": "example", + "id": "header-with-navigation", + "title": "Header with navigation", + "description": "Implement a standard application header with navigation menus, search functionality, and sign-in links for government services.", + "status": "published", + "categories": [ + "structure-and-navigation" + ], + "tags": [ + "header", + "navigation", + "menu" + ], + "components": [ + "app-header", + "app-header-menu", + "microsite-header" + ], + "scale": "task", + "userType": "both", + "slug": "header-with-navigation" + }, + { + "type": "example", + "id": "hero-banner-with-actions", + "title": "Hero banner with actions", + "description": "Create a hero banner with a call-to-action button to guide users toward the primary task on a landing page.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "hero", + "banner", + "cta", + "landing" + ], + "components": [ + "hero-banner", + "button" + ], + "scale": "task", + "userType": "both", + "slug": "hero-banner-with-actions" + }, + { + "type": "example", + "id": "hide-and-show-many-sections-of-information", + "title": "Hide and show many sections of information", + "description": "Allow users to expand and collapse multiple accordion sections, with a button to show or hide all sections at once.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "accordion", + "expand", + "collapse", + "faq" + ], + "components": [ + "accordion", + "button" + ], + "scale": "task", + "userType": "both", + "slug": "hide-and-show-many-sections-of-information" + }, + { + "type": "example", + "id": "include-a-link-in-the-helper-text-of-an-option", + "title": "Include a link in the helper text of an option", + "description": "Add links within the description text of checkbox options to provide additional context or resources while users are making selections.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "checkbox", + "helper-text", + "links", + "forms" + ], + "components": [ + "checkbox", + "form-item" + ], + "scale": "interaction", + "userType": "both", + "slug": "include-a-link-in-the-helper-text-of-an-option" + }, + { + "type": "example", + "id": "include-descriptions-for-items-in-a-checkbox-list", + "title": "Include descriptions for items in a checkbox list", + "description": "Add descriptive text to radio button options to help users understand the implications of each choice.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "radio", + "descriptions", + "forms" + ], + "components": [ + "form-item", + "radio-group", + "radio-item" + ], + "scale": "task", + "userType": "both", + "slug": "include-descriptions-for-items-in-a-checkbox-list" + }, + { + "type": "example", + "id": "link-the-user-to-give-feedback-to-the-service", + "title": "Link the user to give feedback to the service", + "description": "Use the microsite header's feedback functionality to collect user feedback during alpha or beta phases of a service.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "feedback", + "microsite-header", + "alpha", + "beta" + ], + "components": [ + "microsite-header" + ], + "scale": "interaction", + "userType": "citizen", + "slug": "link-the-user-to-give-feedback-to-the-service" + }, + { + "type": "example", + "id": "link-to-an-external-page", + "title": "Link to an external page", + "description": "Use an external link indicator to show users when a link will take them to a different website.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "link", + "external", + "navigation" + ], + "components": [ + "link" + ], + "scale": "interaction", + "userType": "both", + "slug": "link-to-an-external-page" + }, + { + "type": "example", + "id": "public-form", + "title": "Public form", + "description": "The public form pattern provides a structure for citizen-facing form experiences, emphasizing simplicity, accessibility, and low cognitive load.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "form", + "public", + "citizen", + "pattern" + ], + "components": [], + "scale": "service", + "userType": "citizen", + "slug": "public-form" + }, + { + "type": "example", + "id": "question-page", + "title": "Question page", + "description": "A question page pattern that presents one question at a time to help users focus, reduce cognitive load, and navigate complex forms more easily.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "question", + "wizard", + "one-thing-per-page" + ], + "components": [ + "form-item", + "input", + "button", + "button-group" + ], + "scale": "page", + "userType": "citizen", + "slug": "question-page" + }, + { + "type": "example", + "id": "remove-a-filter", + "title": "Remove a filter", + "description": "Allow users to remove active filters by clicking on filter chips, providing clear visual feedback and dynamic updates to filtered results.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "filtering", + "chips", + "remove" + ], + "components": [ + "filter-chip" + ], + "scale": "interaction", + "userType": "both", + "slug": "remove-a-filter" + }, + { + "type": "example", + "id": "require-user-action-before-continuing", + "title": "Require user action before continuing", + "description": "Use a modal dialog to require users to confirm an action before proceeding, especially for irreversible operations or important decision points.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "modal", + "confirmation", + "warning", + "action" + ], + "components": [ + "modal", + "button", + "button-group" + ], + "scale": "task", + "userType": "both", + "slug": "require-user-action-before-continuing" + }, + { + "type": "example", + "id": "reset-date-picker-field", + "title": "Reset date picker field", + "description": "Allow users to programmatically set or clear a date picker field value, useful for reset functionality or setting default dates.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "date-picker", + "form", + "reset", + "clear" + ], + "components": [ + "date-picker", + "form-item", + "button", + "button-group" + ], + "scale": "interaction", + "userType": "both", + "slug": "reset-date-picker-field" + }, + { + "type": "example", + "id": "result-page", + "title": "Result page", + "description": "A result page shown after form submission to confirm success, provide next steps, and offer relevant contact information.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "confirmation", + "success", + "completion", + "forms" + ], + "components": [ + "block", + "callout" + ], + "scale": "page", + "userType": "citizen", + "slug": "result-page" + }, + { + "type": "example", + "id": "reveal-input-based-on-a-selection", + "title": "Reveal input based on a selection", + "description": "Progressively reveal additional form fields based on user selections, reducing visual complexity while gathering necessary information.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "conditional", + "reveal", + "radio", + "checkbox", + "progressive-disclosure" + ], + "components": [ + "radio-group", + "radio-item", + "checkbox", + "form-item", + "input" + ], + "scale": "task", + "userType": "both", + "slug": "reveal-input-based-on-a-selection" + }, + { + "type": "example", + "id": "review-and-action", + "title": "Review and action", + "description": "A side-by-side layout for workers to review case details while taking an action, commonly used in case management and approval workflows.", + "status": "published", + "categories": [ + "structure-and-navigation" + ], + "tags": [ + "review", + "action", + "container", + "case-management", + "worker" + ], + "components": [ + "container", + "grid", + "block", + "form-item", + "radio-group", + "dropdown", + "text-area", + "button" + ], + "scale": "task", + "userType": "worker", + "slug": "review-and-action" + }, + { + "type": "example", + "id": "review-page", + "title": "Review page", + "description": "A review page where users can check their answers before submitting a form, with options to change individual responses.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "review", + "check-answers", + "forms", + "submission" + ], + "components": [ + "table", + "button", + "button-group" + ], + "scale": "page", + "userType": "citizen", + "slug": "review-page" + }, + { + "type": "example", + "id": "search", + "title": "Search", + "description": "A search input pattern with a search icon and button for users to find content or filter results.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "search", + "input", + "filtering" + ], + "components": [ + "input", + "button", + "block", + "form-item" + ], + "scale": "task", + "userType": "both", + "slug": "search" + }, + { + "type": "example", + "id": "select-one-or-more-from-a-list-of-options", + "title": "Select one or more from a list of options", + "description": "Use checkboxes to let users select one or more options from a list when multiple selections are valid.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "checkbox", + "selection", + "multiple", + "form" + ], + "components": [ + "checkbox", + "form-item" + ], + "scale": "task", + "userType": "both", + "slug": "select-one-or-more-from-a-list-of-options" + }, + { + "type": "example", + "id": "set-a-max-width-on-a-long-radio-item", + "title": "Set a max width on a long radio item", + "description": "Set a max width on a long radio item to control line wrapping.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "radio", + "forms", + "layout" + ], + "components": [ + "form-item", + "radio-group", + "radio-item" + ], + "scale": "interaction", + "userType": "both", + "slug": "set-a-max-width-on-a-long-radio-item" + }, + { + "type": "example", + "id": "set-a-specific-tab-to-be-active", + "title": "Set a specific tab to be active", + "description": "Set a specific tab to be active on page load using the initialTab property.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "tabs", + "navigation", + "tables" + ], + "components": [ + "tabs", + "tab", + "table", + "badge", + "button" + ], + "scale": "interaction", + "userType": "both", + "slug": "set-a-specific-tab-to-be-active" + }, + { + "type": "example", + "id": "set-the-status-of-step-on-a-form-stepper", + "title": "Set the status of step on a form stepper", + "description": "Set the status of each step on a form stepper to indicate completion progress.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "forms", + "stepper", + "multi-step", + "navigation" + ], + "components": [ + "form-stepper", + "form-step", + "pages", + "button" + ], + "scale": "task", + "userType": "both", + "slug": "set-the-status-of-step-on-a-form-stepper" + }, + { + "type": "example", + "id": "show-a-label-on-an-icon-only-button", + "title": "Show a label on an icon only button", + "description": "Show a label on an icon-only button using a tooltip to improve discoverability.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "buttons", + "icons", + "accessibility", + "tooltip" + ], + "components": [ + "icon-button", + "tooltip", + "button-group" + ], + "scale": "interaction", + "userType": "both", + "slug": "show-a-label-on-an-icon-only-button" + }, + { + "type": "example", + "id": "show-a-list-to-help-answer-a-question", + "title": "Show a list to help answer a question", + "description": "Show a list to help answer a question using an expandable details component.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "details", + "guidance", + "help" + ], + "components": [ + "form-item", + "radio-group", + "radio-item", + "details", + "block" + ], + "scale": "task", + "userType": "citizen", + "slug": "show-a-list-to-help-answer-a-question" + }, + { + "type": "example", + "id": "show-a-notification", + "title": "Show a notification", + "description": "Show a temporary notification to confirm an action was completed successfully.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "notification", + "feedback", + "success", + "toast" + ], + "components": [ + "temporary-notification", + "button" + ], + "scale": "interaction", + "userType": "both", + "slug": "show-a-notification" + }, + { + "type": "example", + "id": "show-a-notification-with-an-action", + "title": "Show a notification with an action", + "description": "Show a temporary notification with an action button for user interaction.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "notification", + "feedback", + "action", + "toast" + ], + "components": [ + "temporary-notification", + "button" + ], + "scale": "interaction", + "userType": "both", + "slug": "show-a-notification-with-an-action" + }, + { + "type": "example", + "id": "show-a-section-title-on-a-question-page", + "title": "Show a section title on a question page", + "description": "Show a section title on a question page to help users understand which part of the form they are completing.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "questions", + "navigation", + "section" + ], + "components": [ + "form-item", + "radio-group", + "radio-item", + "button" + ], + "scale": "task", + "userType": "citizen", + "slug": "show-a-section-title-on-a-question-page" + }, + { + "type": "example", + "id": "show-a-simple-progress-indicator-on-a-question-page", + "title": "Show a simple progress indicator on a question page", + "description": "Show a simple progress indicator on a question page to help users understand their progress through the form.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "questions", + "progress", + "navigation" + ], + "components": [ + "form-item", + "radio-group", + "radio-item", + "button" + ], + "scale": "task", + "userType": "citizen", + "slug": "show-a-simple-progress-indicator-on-a-question-page" + }, + { + "type": "example", + "id": "show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions", + "title": "Show a simple progress indicator on a question page with multiple questions", + "description": "Show a simple progress indicator on a question page when grouping multiple related questions together.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "forms", + "questions", + "progress", + "navigation", + "multi-question" + ], + "components": [ + "form-item", + "input", + "button" + ], + "scale": "task", + "userType": "citizen", + "slug": "show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions" + }, + { + "type": "example", + "id": "show-a-user-progress", + "title": "Show a user progress", + "description": "Display progress feedback during long-running operations like downloads, showing percentage completion with the ability to cancel and receive success confirmation.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "progress", + "notification", + "download", + "feedback" + ], + "components": [ + "temporary-notification", + "button" + ], + "scale": "task", + "userType": "both", + "slug": "show-a-user-progress" + }, + { + "type": "example", + "id": "show-a-user-progress-when-the-time-is-unknown", + "title": "Show a user progress when the time is unknown", + "description": "Display indeterminate progress for operations where completion time cannot be estimated, such as complex searches or external system queries.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "progress", + "notification", + "indeterminate", + "search", + "feedback" + ], + "components": [ + "temporary-notification", + "button" + ], + "scale": "task", + "userType": "both", + "slug": "show-a-user-progress-when-the-time-is-unknown" + }, + { + "type": "example", + "id": "show-different-views-of-data-in-a-table", + "title": "Show different views of data in a table", + "description": "Use tabs to organize table data into different views based on status or category, showing counts in each tab to help workers quickly navigate to relevant items.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "table", + "tabs", + "filtering", + "status", + "data-views" + ], + "components": [ + "tabs", + "tab", + "table", + "badge", + "button" + ], + "scale": "task", + "userType": "worker", + "slug": "show-different-views-of-data-in-a-table" + }, + { + "type": "example", + "id": "show-full-date-in-a-tooltip", + "title": "Show full date in a tooltip", + "description": "Display relative time (like \"4 hours ago\") while providing the full date and time on hover via tooltip for users who need exact timestamps.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "tooltip", + "date", + "relative-time", + "hover" + ], + "components": [ + "tooltip", + "container" + ], + "scale": "interaction", + "userType": "both", + "slug": "show-full-date-in-a-tooltip" + }, + { + "type": "example", + "id": "show-links-to-navigation-items", + "title": "Show links to navigation items", + "description": "Use the app footer to display comprehensive navigation links organized into sections, along with meta links for common utilities like privacy and accessibility.", + "status": "published", + "categories": [ + "structure-and-navigation" + ], + "tags": [ + "footer", + "navigation", + "links", + "sitemap" + ], + "components": [ + "footer", + "footer-nav-section", + "footer-meta-section" + ], + "scale": "task", + "userType": "both", + "slug": "show-links-to-navigation-items" + }, + { + "type": "example", + "id": "show-more-information-to-help-answer-a-question", + "title": "Show more information to help answer a question", + "description": "Use the Details component to provide optional contextual help that explains why a question is being asked, helping users understand the purpose without cluttering the main form.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "form", + "details", + "help", + "question-page", + "expandable" + ], + "components": [ + "details", + "form-item", + "radio-group", + "radio-item", + "button" + ], + "scale": "task", + "userType": "citizen", + "slug": "show-more-information-to-help-answer-a-question" + }, + { + "type": "example", + "id": "show-multiple-actions-in-a-compact-table", + "title": "Show multiple actions in a compact table", + "description": "Use icon buttons to provide multiple row actions in tables where space is limited, keeping the interface compact while maintaining accessibility through aria labels.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "table", + "icon-button", + "actions", + "compact", + "worker-ui" + ], + "components": [ + "table", + "icon-button", + "badge", + "block" + ], + "scale": "task", + "userType": "worker", + "slug": "show-multiple-actions-in-a-compact-table" + }, + { + "type": "example", + "id": "show-multiple-tags-together", + "title": "Show multiple tags together", + "description": "Display multiple badges together using GoabBlock with tight spacing to show multiple statuses or categories for a single item.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "badge", + "tags", + "status", + "grouping" + ], + "components": [ + "badge", + "block" + ], + "scale": "interaction", + "userType": "both", + "slug": "show-multiple-tags-together" + }, + { + "type": "example", + "id": "show-number-of-results-per-page", + "title": "Show number of results per page", + "description": "Combine pagination with a dropdown selector to let users control how many results appear per page, improving data browsing for different use cases.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "pagination", + "table", + "dropdown", + "results", + "per-page" + ], + "components": [ + "pagination", + "dropdown", + "dropdown-item", + "table", + "block", + "spacer" + ], + "scale": "task", + "userType": "both", + "slug": "show-number-of-results-per-page" + }, + { + "type": "example", + "id": "show-quick-links", + "title": "Show quick links", + "description": "Use the app footer meta section to display essential quick links like feedback, accessibility, privacy, and contact information without the full navigation structure.", + "status": "published", + "categories": [ + "structure-and-navigation" + ], + "tags": [ + "footer", + "navigation", + "meta-links", + "quick-access" + ], + "components": [ + "footer", + "footer-meta-section" + ], + "scale": "task", + "userType": "both", + "slug": "show-quick-links" + }, + { + "type": "example", + "id": "show-status-in-a-table", + "title": "Show status in a table", + "description": "Display status information within table rows using badges to provide clear visual indicators of item states like pending, complete, failed, or in progress.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "table", + "badge", + "status" + ], + "components": [ + "table", + "badge", + "button" + ], + "scale": "task", + "userType": "worker", + "slug": "show-status-in-a-table" + }, + { + "type": "example", + "id": "show-status-on-a-card", + "title": "Show status on a card", + "description": "Display status indicators on cards using badges in the actions slot, allowing workers to quickly see the priority or state of each item.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "card", + "container", + "badge", + "status" + ], + "components": [ + "container", + "badge" + ], + "scale": "task", + "userType": "worker", + "slug": "show-status-on-a-card" + }, + { + "type": "example", + "id": "show-version-number", + "title": "Show version number", + "description": "Display version information in the microsite header using the version slot, allowing custom formatting and styling of version text.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "microsite-header", + "version", + "alpha", + "beta" + ], + "components": [ + "microsite-header" + ], + "scale": "interaction", + "userType": "both", + "slug": "show-version-number" + }, + { + "type": "example", + "id": "slotted-error-text-in-a-form-item", + "title": "Slotted error text in a form item", + "description": "Use the error slot in a form item to display formatted error messages with custom styling like bold or italic text.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "form", + "form-item", + "error", + "validation", + "slot" + ], + "components": [ + "form-item", + "input" + ], + "scale": "interaction", + "userType": "both", + "slug": "slotted-error-text-in-a-form-item" + }, + { + "type": "example", + "id": "slotted-helper-text-in-a-form-item", + "title": "Slotted helper text in a form item", + "description": "Use the helpText slot in a form item to display formatted helper text with custom styling like bold, italic, or links.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "form", + "form-item", + "helper-text", + "slot" + ], + "components": [ + "form-item", + "input" + ], + "scale": "interaction", + "userType": "both", + "slug": "slotted-helper-text-in-a-form-item" + }, + { + "type": "example", + "id": "sort-data-in-a-table", + "title": "Sort data in a table", + "description": "Enable column sorting in tables using sort headers, allowing workers to organize data by clicking column headers to toggle ascending/descending order.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "table", + "sorting", + "data" + ], + "components": [ + "table", + "table-sort-header" + ], + "scale": "task", + "userType": "worker", + "slug": "sort-data-in-a-table" + }, + { + "type": "example", + "id": "start-page", + "title": "Start page", + "description": "A start page is the front door to a government service for citizens. It provides essential information about the service and a clear call to action to begin.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "page", + "service", + "start", + "citizen" + ], + "components": [ + "button" + ], + "scale": "page", + "userType": "citizen", + "slug": "start-page" + }, + { + "type": "example", + "id": "task-list-page", + "title": "Task list page", + "description": "A task list page provides a structure for multi-step services, showing users their progress through a series of tasks with clear status indicators.", + "status": "published", + "categories": [ + "forms" + ], + "tags": [ + "page", + "task-list", + "progress", + "form" + ], + "components": [ + "table", + "badge", + "callout" + ], + "scale": "page", + "userType": "both", + "slug": "task-list-page" + }, + { + "type": "example", + "id": "type-to-create-a-new-filter", + "title": "Type to create a new filter", + "description": "Allow users to type custom filter values and create filter chips by pressing Enter, with the ability to remove chips using Backspace or by clicking them.", + "status": "published", + "categories": [ + "inputs-and-actions" + ], + "tags": [ + "filter-chip", + "input", + "dynamic", + "keyboard" + ], + "components": [ + "filter-chip", + "input", + "form-item", + "container" + ], + "scale": "interaction", + "userType": "both", + "slug": "type-to-create-a-new-filter" + }, + { + "type": "example", + "id": "warn-a-user-of-a-deadline", + "title": "Warn a user of a deadline", + "description": "Use a modal with important callout styling to warn users about time-sensitive deadlines that could affect their submission or action.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "modal", + "warning", + "deadline", + "callout" + ], + "components": [ + "modal", + "button", + "button-group" + ], + "scale": "task", + "userType": "both", + "slug": "warn-a-user-of-a-deadline" } ] \ No newline at end of file diff --git a/docs/src/components/ComponentsGrid.tsx b/docs/src/components/ComponentsGrid.tsx index 3542605d74..063ee4f010 100644 --- a/docs/src/components/ComponentsGrid.tsx +++ b/docs/src/components/ComponentsGrid.tsx @@ -114,6 +114,27 @@ function formatStatus(status: string): string { return status.charAt(0).toUpperCase() + status.slice(1); } +// Thumbnail filename mapping for slugs that don't match the filename +const THUMBNAIL_MAP: Record = { + 'app-header': 'header', + 'icon': 'icons', + 'input': 'text-input', + 'checkbox-list': 'checkbox-group', + 'circular-progress': 'circular-progress-indicator', + 'linear-progress': 'linear-progress-indicator', + 'notification': 'notification-banner', + 'skeleton': 'skeleton-loader', + 'radio-group': 'radio', + 'file-upload-input': 'file-uploader', + 'link-button': 'link', + 'page-block': 'block', +}; + +function getThumbnailPath(slug: string): string { + const filename = THUMBNAIL_MAP[slug] || slug; + return `/images/component-thumbnails/${filename}.svg`; +} + export function ComponentsGrid({ components }: ComponentsGridProps) { // State const [searchValue, setSearchValue] = useState(""); @@ -166,12 +187,11 @@ export function ComponentsGrid({ components }: ComponentsGridProps) { }); // Listen for table sort events (from goa-table web component) - // Also explicitly set version="2" attribute since React may not set it correctly on custom elements useEffect(() => { const table = tableRef.current; if (!table) return; - // Explicitly set version attribute for V2 styling (React doesn't always set attributes on custom elements) + // Explicitly set version attribute for V2 styling table.setAttribute("version", "2"); const handleSort = (e: Event) => { @@ -481,8 +501,23 @@ export function ComponentsGrid({ components }: ComponentsGridProps) { className="component-card-link" >
- {/* Thumbnail placeholder - V2 images needed */} -
@@ -525,6 +561,7 @@ export function ComponentsGrid({ components }: ComponentsGridProps) { type={getCategoryBadgeType(component.data.category)} content={formatCategory(component.data.category)} emphasis="subtle" + icon="false" /> @@ -533,6 +570,7 @@ export function ComponentsGrid({ components }: ComponentsGridProps) { type={getStatusBadgeType(component.data.status)} content={formatStatus(component.data.status)} emphasis="subtle" + icon="false" /> @@ -695,7 +733,7 @@ export function ComponentsGrid({ components }: ComponentsGridProps) { {/* List View (table) */} {viewMode === "list" && (
- {/* Using web components directly for V2 styling - React wrappers don't pass version prop */} + {/* TODO: Table not rendering with V2 styling despite version="2" - investigate CSS loading or timing issue */} @@ -1045,10 +1083,30 @@ export function ComponentsGrid({ components }: ComponentsGridProps) { } .component-card-thumbnail { - aspect-ratio: 16 / 10; + aspect-ratio: 386 / 256; background: var(--goa-color-greyscale-200); border-radius: var(--goa-border-radius-m); margin-bottom: var(--goa-space-xs); + overflow: hidden; + } + + .component-card-thumbnail img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + } + + .component-card-thumbnail-fallback { + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + font: var(--goa-typography-heading-s); + color: var(--goa-color-text-secondary); + text-align: center; + padding: var(--goa-space-m); } .component-card-title { diff --git a/docs/src/components/ExamplesGrid.tsx b/docs/src/components/ExamplesGrid.tsx index 3b265901da..20cf2eb624 100644 --- a/docs/src/components/ExamplesGrid.tsx +++ b/docs/src/components/ExamplesGrid.tsx @@ -64,10 +64,10 @@ const DEFAULT_VISIBLE_COLUMNS = ["title", "scale", "category", "userType", "stat // Badge type mapping for scales (using V2 extended colors) function getScaleBadgeType( scale: string, -): "sky" | "sunset" | "pasture" | "lilac" | "prairie" | "dawn" { +): "sky" | "sunset" | "pasture" | "lilac" | "prairie" | "dawn" | "information" { switch (scale) { case "interaction": - return "sky"; + return "information"; case "task": return "sunset"; case "page": @@ -510,7 +510,8 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { type={getScaleBadgeType(example.data.scale)} content={tag} emphasis="subtle" - /> + icon="false" + /> ))} @@ -537,7 +538,8 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { type={getCategoryBadgeType(cat)} content={formatCategory(cat)} emphasis="subtle" - /> + icon="false" + /> ))} @@ -547,6 +549,7 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { type={getScaleBadgeType(example.data.scale)} content={formatScale(example.data.scale)} emphasis="subtle" + icon="false" /> @@ -556,9 +559,10 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { ))} diff --git a/docs/src/components/ExamplesSideNav.tsx b/docs/src/components/ExamplesSideNav.tsx deleted file mode 100644 index 97b5553988..0000000000 --- a/docs/src/components/ExamplesSideNav.tsx +++ /dev/null @@ -1,159 +0,0 @@ -/** - * ExamplesSideNav.tsx - * - * Left sidebar navigation for Examples section using GoA WorkSideMenu (experimental). - */ - -import { useState, useCallback } from 'react'; -import { - GoabxWorkSideMenu, - GoabxWorkSideMenuItem, -} from '@abgov/react-components/experimental'; - -// Example categories - these can be expanded to show individual examples -const EXAMPLE_CATEGORIES = [ - { - name: 'Public form', - slug: 'public-form', - expandable: true, - examples: [ - { name: 'Ask a user for a birthday', slug: 'ask-a-user-for-a-birthday' }, - { name: 'Simple login form', slug: 'simple-login-form' }, - ], - }, - { - name: 'Workspace', - slug: 'workspace', - expandable: true, - examples: [ - { name: 'Search input', slug: 'search-input' }, - ], - }, - { - name: 'Basic layout', - slug: 'basic-layout', - expandable: false, - examples: [], - }, -]; - -interface ExamplesSideNavProps { - currentSlug?: string; -} - -export function ExamplesSideNav({ currentSlug }: ExamplesSideNavProps) { - const [isOpen, setIsOpen] = useState(true); - const [expandedCategories, setExpandedCategories] = useState>(new Set()); - - const handleToggle = useCallback(() => { - setIsOpen((prev) => !prev); - }, []); - - const toggleCategory = useCallback((categorySlug: string) => { - setExpandedCategories((prev) => { - const next = new Set(prev); - if (next.has(categorySlug)) { - next.delete(categorySlug); - } else { - next.add(categorySlug); - } - return next; - }); - }, []); - - const handleBackClick = useCallback(() => { - window.location.href = '/'; - }, []); - - // Check if we're on the "All" page (no specific example selected, or on /examples) - const isAllSelected = !currentSlug || currentSlug === ''; - - // Primary content: Back button + All + categories - const primaryContent = ( - <> - {/* Back to home */} - - - {/* All examples */} - - - {/* Example categories */} - {EXAMPLE_CATEGORIES.map((category) => { - const isExpanded = expandedCategories.has(category.slug); - const hasCurrentExample = category.examples.some( - (e) => e.slug === currentSlug - ); - - if (category.expandable && category.examples.length > 0) { - return ( - toggleCategory(category.slug)} - > - {isExpanded && - category.examples.map((example) => ( - - ))} - - ); - } - - // Non-expandable category (flat link) - return ( - - ); - })} - - ); - - // Secondary content: Utility links at bottom - const secondaryContent = ( - <> - - { - console.log('AI Assistant clicked'); - }} - /> - - - ); - - return ( - - ); -} - -export default ExamplesSideNav; diff --git a/docs/src/components/MobileHeader.tsx b/docs/src/components/MobileHeader.tsx index 39784fe7d5..fc9f724881 100644 --- a/docs/src/components/MobileHeader.tsx +++ b/docs/src/components/MobileHeader.tsx @@ -19,10 +19,7 @@ export function MobileHeader() { }; const handleSearchClick = () => { - // Dispatch event for search - to be connected later window.dispatchEvent(new CustomEvent('goa-search-open')); - // For now, navigate to search page as fallback - window.location.href = '/search'; }; return ( diff --git a/docs/src/components/Search.tsx b/docs/src/components/Search.tsx deleted file mode 100644 index e8a0126bcc..0000000000 --- a/docs/src/components/Search.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import { useState, useEffect, useRef } from 'react'; -import { Document } from 'flexsearch'; -import { GoabBadge, GoabBlock, GoabButton, GoabInput, GoabPopover, GoabText } from "@abgov/react-components"; -import type { GoabInputOnChangeDetail } from "@abgov/ui-components-common"; - -interface SearchResult { - id: string; - title: string; - content: string; - component: string; - description: string; - previewUrl: string; - filePath: string; - urlPath: string; - tags: string[]; - [key: string]: string | string[]; -} - -interface SearchProps { - placeholder?: string; -} - -export default function Search({ placeholder = "Search components..." }: SearchProps) { - const [query, setQuery] = useState(''); - const [results, setResults] = useState([]); - const [isLoading, setIsLoading] = useState(true); - const indexRef = useRef | null>(null); - const searchDataRef = useRef([]); - - useEffect(() => { - async function initializeSearch() { - try { - const response = await fetch('/search-index.json'); - const data: SearchResult[] = await response.json(); - searchDataRef.current = data; - - const index = new Document({ - tokenize: 'forward', - document: { - id: 'id', - index: ['title', 'content', 'component', 'description', 'tags:0', 'tags:1', 'tags:2'], - store: ['id', 'title', 'component', 'path', 'tags', 'description', "previewUrl"] - } - }); - - data.forEach(doc => { - index.add(doc); - }); - - indexRef.current = index; - setIsLoading(false); - } catch (error) { - console.error('Failed to initialize search:', error); - setIsLoading(false); - } - } - - initializeSearch(); - }, []); - - useEffect(() => { - if (!indexRef.current || !query.trim()) { - setResults([]); - return; - } - - const searchResults = indexRef.current.search(query, { - limit: 10, - enrich: true - }); - - const flatResults: SearchResult[] = []; - searchResults.forEach((fieldResults: any) => { - fieldResults.result.forEach((item: any) => { - const existingIndex = flatResults.findIndex(r => r.id === item.id); - if (existingIndex === -1) { - const fullDoc = searchDataRef.current.find(d => d.id === item.id); - if (fullDoc) { - flatResults.push(fullDoc); - } - } - }); - }); - - setResults(flatResults); - }, [query]); - - const handleInputChange = (e: GoabInputOnChangeDetail) => { - setQuery(e.value); - }; - - const highlightMatch = (text: string, query: string) => { - if (!query.trim()) return text; - const regex = new RegExp(`(${query})`, 'gi'); - return text.replace(regex, '$1'); - }; - - const getPreview = (content: string, query: string, maxLength = 150) => { - if (!query.trim()) { - return content.substring(0, maxLength) + (content.length > maxLength ? '...' : ''); - } - - const lowerContent = content.toLowerCase(); - const lowerQuery = query.toLowerCase(); - const index = lowerContent.indexOf(lowerQuery); - - if (index === -1) { - return content.substring(0, maxLength) + (content.length > maxLength ? '...' : ''); - } - - const start = Math.max(0, index - 50); - const end = Math.min(content.length, index + query.length + 100); - const preview = (start > 0 ? '...' : '') + - content.substring(start, end) + - (end < content.length ? '...' : ''); - - return highlightMatch(preview, query); - }; - - return ( -
- - - } - > - {results.map((result) => ( - - - - - {result.tags && result.tags.length > 0 && ( - - {result.tags.map((tag, idx) => ( - - ))} - - )} - - - -
{result.path}
-
- ))} - - {query && results.length === 0 && ( -
No results found for "{query}"
- )} - - {!query && results.length === 0 && ( -
Search...
- )} -
- - - -
- ); -} diff --git a/docs/src/components/SideNav.tsx b/docs/src/components/SideNav.tsx deleted file mode 100644 index 2207461f58..0000000000 --- a/docs/src/components/SideNav.tsx +++ /dev/null @@ -1,196 +0,0 @@ -/** - * SideNav.tsx - * - * Left sidebar navigation using GoA WorkSideMenu (experimental). - * Includes component categories, utility links, and back navigation. - */ - -import { useState, useCallback } from 'react'; -import { - GoabxWorkSideMenu, - GoabxWorkSideMenuItem, -} from '@abgov/react-components/experimental'; - -// Component categories matching the design -const COMPONENT_CATEGORIES = [ - { - name: 'Content layout', - slug: 'content-layout', - icon: 'grid', - components: [ - { name: 'Block', slug: 'block' }, - { name: 'Columns', slug: 'columns' }, - { name: 'Container', slug: 'container' }, - { name: 'Divider', slug: 'divider' }, - { name: 'Grid', slug: 'grid' }, - { name: 'Spacer', slug: 'spacer' }, - ], - }, - { - name: 'Feedback and alerts', - slug: 'feedback-and-alerts', - icon: 'notifications', - components: [ - { name: 'Badge', slug: 'badge' }, - { name: 'Callout', slug: 'callout' }, - { name: 'Notification banner', slug: 'notification-banner' }, - { name: 'Progress indicator', slug: 'progress-indicator' }, - { name: 'Skeleton loader', slug: 'skeleton-loader' }, - { name: 'Tooltip', slug: 'tooltip' }, - ], - }, - { - name: 'Inputs and actions', - slug: 'inputs-and-actions', - icon: 'create', - components: [ - { name: 'Button', slug: 'button' }, - { name: 'Button group', slug: 'button-group' }, - { name: 'Icon button', slug: 'icon-button' }, - { name: 'Menu button', slug: 'menu-button' }, - { name: 'Checkbox', slug: 'checkbox' }, - { name: 'Checkbox list', slug: 'checkbox-list' }, - { name: 'Date picker', slug: 'date-picker' }, - { name: 'Dropdown', slug: 'dropdown' }, - { name: 'File uploader', slug: 'file-uploader' }, - { name: 'Input', slug: 'input' }, - { name: 'Radio', slug: 'radio' }, - { name: 'Text area', slug: 'text-area' }, - ], - }, - { - name: 'Structure and navigation', - slug: 'structure-and-navigation', - icon: 'browsers', - components: [ - { name: 'Accordion', slug: 'accordion' }, - { name: 'App footer', slug: 'app-footer' }, - { name: 'App header', slug: 'app-header' }, - { name: 'Breadcrumb', slug: 'breadcrumb' }, - { name: 'Card', slug: 'card' }, - { name: 'Details', slug: 'details' }, - { name: 'Hero banner', slug: 'hero-banner' }, - { name: 'Modal', slug: 'modal' }, - { name: 'Pagination', slug: 'pagination' }, - { name: 'Side menu', slug: 'side-menu' }, - { name: 'Tabs', slug: 'tabs' }, - ], - }, - { - name: 'Utilities', - slug: 'utilities', - icon: 'build', - components: [ - { name: 'Icon', slug: 'icon' }, - { name: 'Link', slug: 'link' }, - { name: 'Popover', slug: 'popover' }, - { name: 'Table', slug: 'table' }, - ], - }, -]; - -interface SideNavProps { - currentSlug?: string; - currentCategory?: string; -} - -export function SideNav({ currentSlug, currentCategory }: SideNavProps) { - const [isOpen, setIsOpen] = useState(true); - const [expandedCategories, setExpandedCategories] = useState>( - // Auto-expand the category containing the current component - new Set(currentCategory ? [currentCategory] : []) - ); - - const handleToggle = useCallback(() => { - setIsOpen((prev) => !prev); - }, []); - - const toggleCategory = useCallback((categorySlug: string) => { - setExpandedCategories((prev) => { - const next = new Set(prev); - if (next.has(categorySlug)) { - next.delete(categorySlug); - } else { - next.add(categorySlug); - } - return next; - }); - }, []); - - const handleBackClick = useCallback(() => { - window.location.href = '/'; - }, []); - - // Primary content: Back button + component categories - const primaryContent = ( - <> - {/* Back to home */} - - - {/* Component categories */} - {COMPONENT_CATEGORIES.map((category) => { - const isExpanded = expandedCategories.has(category.slug); - const hasCurrentComponent = category.components.some( - (c) => c.slug === currentSlug - ); - - return ( - toggleCategory(category.slug)} - > - {isExpanded && - category.components.map((component) => ( - - ))} - - ); - })} - - ); - - // Secondary content: Utility links at bottom - const secondaryContent = ( - <> - - { - // Future: Open AI assistant drawer - console.log('AI Assistant clicked'); - }} - /> - - - ); - - return ( - - ); -} - -export default SideNav; diff --git a/docs/src/components/nav/ComponentsSubMenu.tsx b/docs/src/components/nav/ComponentsSubMenu.tsx index bba2685b54..8516685431 100644 --- a/docs/src/components/nav/ComponentsSubMenu.tsx +++ b/docs/src/components/nav/ComponentsSubMenu.tsx @@ -5,98 +5,98 @@ * Uses GoabxWorkSideMenuGroup for expandable category sections. */ -import type { MouseEvent } from 'react'; +import { type MouseEvent } from "react"; import { GoabxWorkSideMenu, GoabxWorkSideMenuItem, GoabxWorkSideMenuGroup, -} from '@abgov/react-components/experimental'; -import { GoabSpacer } from '@abgov/react-components'; +} from "@abgov/react-components/experimental"; +import { MenuSecondaryContent } from "./MenuSecondaryContent"; // Component categories - synced with content collection (visible components only) const COMPONENT_CATEGORIES = [ { - name: 'Content layout', - slug: 'content-layout', - icon: 'grid', + name: "Content layout", + slug: "content-layout", + icon: "grid", components: [ - { name: 'Accordion', slug: 'accordion' }, - { name: 'Container', slug: 'container' }, - { name: 'Data Grid', slug: 'data-grid' }, - { name: 'Details', slug: 'details' }, - { name: 'Drawer', slug: 'drawer' }, - { name: 'Hero banner', slug: 'hero-banner' }, - { name: 'Page Block', slug: 'page-block' }, - { name: 'Popover', slug: 'popover' }, - { name: 'Table', slug: 'table' }, - { name: 'Text', slug: 'text' }, + { name: "Accordion", slug: "accordion" }, + { name: "Container", slug: "container" }, + { name: "Data Grid", slug: "data-grid" }, + { name: "Details", slug: "details" }, + { name: "Drawer", slug: "drawer" }, + { name: "Hero banner", slug: "hero-banner" }, + { name: "Page Block", slug: "page-block" }, + { name: "Popover", slug: "popover" }, + { name: "Table", slug: "table" }, + { name: "Text", slug: "text" }, ], }, { - name: 'Feedback and alerts', - slug: 'feedback-and-alerts', - icon: 'notifications', + name: "Feedback and alerts", + slug: "feedback-and-alerts", + icon: "notifications", components: [ - { name: 'Badge', slug: 'badge' }, - { name: 'Callout', slug: 'callout' }, - { name: 'Circular progress indicator', slug: 'circular-progress' }, - { name: 'Filter chip', slug: 'filter-chip' }, - { name: 'Linear progress indicator', slug: 'linear-progress' }, - { name: 'Modal', slug: 'modal' }, - { name: 'Notification banner', slug: 'notification' }, - { name: 'Skeleton loader', slug: 'skeleton' }, - { name: 'Temporary notification', slug: 'temporary-notification' }, - { name: 'Tooltip', slug: 'tooltip' }, + { name: "Badge", slug: "badge" }, + { name: "Callout", slug: "callout" }, + { name: "Circular progress indicator", slug: "circular-progress" }, + { name: "Filter chip", slug: "filter-chip" }, + { name: "Linear progress indicator", slug: "linear-progress" }, + { name: "Modal", slug: "modal" }, + { name: "Notification banner", slug: "notification" }, + { name: "Skeleton loader", slug: "skeleton" }, + { name: "Temporary notification", slug: "temporary-notification" }, + { name: "Tooltip", slug: "tooltip" }, ], }, { - name: 'Inputs and actions', - slug: 'inputs-and-actions', - icon: 'create', + name: "Inputs and actions", + slug: "inputs-and-actions", + icon: "create", components: [ - { name: 'Button', slug: 'button' }, - { name: 'Button group', slug: 'button-group' }, - { name: 'Checkbox', slug: 'checkbox' }, - { name: 'Checkbox list', slug: 'checkbox-list' }, - { name: 'Date picker', slug: 'date-picker' }, - { name: 'Dropdown', slug: 'dropdown' }, - { name: 'File uploader', slug: 'file-upload-input' }, - { name: 'Form', slug: 'form' }, - { name: 'Icon button', slug: 'icon-button' }, - { name: 'Input', slug: 'input' }, - { name: 'Link Button', slug: 'link-button' }, - { name: 'Menu button', slug: 'menu-button' }, - { name: 'Radio', slug: 'radio-group' }, - { name: 'Text area', slug: 'text-area' }, + { name: "Button", slug: "button" }, + { name: "Button group", slug: "button-group" }, + { name: "Checkbox", slug: "checkbox" }, + { name: "Checkbox list", slug: "checkbox-list" }, + { name: "Date picker", slug: "date-picker" }, + { name: "Dropdown", slug: "dropdown" }, + { name: "File uploader", slug: "file-upload-input" }, + { name: "Form", slug: "form" }, + { name: "Icon button", slug: "icon-button" }, + { name: "Input", slug: "input" }, + { name: "Link Button", slug: "link-button" }, + { name: "Menu button", slug: "menu-button" }, + { name: "Radio", slug: "radio-group" }, + { name: "Text area", slug: "text-area" }, ], }, { - name: 'Structure and navigation', - slug: 'structure-and-navigation', - icon: 'browsers', + name: "Structure and navigation", + slug: "structure-and-navigation", + icon: "browsers", components: [ - { name: 'Footer', slug: 'footer' }, - { name: 'Form stepper', slug: 'form-stepper' }, - { name: 'Header', slug: 'app-header' }, - { name: 'Microsite header', slug: 'microsite-header' }, - { name: 'Pagination', slug: 'pagination' }, - { name: 'Side menu', slug: 'side-menu' }, - { name: 'Tabs', slug: 'tabs' }, - { name: 'Work Side Menu', slug: 'work-side-menu' }, + { name: "Footer", slug: "footer" }, + { name: "Form stepper", slug: "form-stepper" }, + { name: "Header", slug: "app-header" }, + { name: "Microsite header", slug: "microsite-header" }, + { name: "Pagination", slug: "pagination" }, + { name: "Side menu", slug: "side-menu" }, + { name: "Tabs", slug: "tabs" }, + { name: "Work Side Menu", slug: "work-side-menu" }, ], }, { - name: 'Utilities', - slug: 'utilities', - icon: 'build', + name: "Utilities", + slug: "utilities", + icon: "build", components: [ - { name: 'Block', slug: 'block' }, - { name: 'Divider', slug: 'divider' }, - { name: 'Form item', slug: 'form-item' }, - { name: 'Grid', slug: 'grid' }, - { name: 'Icons', slug: 'icon' }, - { name: 'Link', slug: 'link' }, - { name: 'Spacer', slug: 'spacer' }, + { name: "Block", slug: "block" }, + { name: "Divider", slug: "divider" }, + { name: "Form item", slug: "form-item" }, + { name: "Grid", slug: "grid" }, + { name: "Icons", slug: "icon" }, + { name: "Link", slug: "link" }, + { name: "Spacer", slug: "spacer" }, ], }, ]; @@ -130,32 +130,24 @@ export function ComponentsSubMenu({ const handleAllComponentsClick = (e: MouseEvent) => { e.preventDefault(); e.stopPropagation(); - window.location.href = '/components'; + window.location.href = "/components"; }; // Primary content: Back button + All Components link + component categories const primaryContent = ( <> {/* Back to parent menu - wrapped div captures click since component doesn't expose onClick */} -
- +
+
{/* All Components page link - On All Components page: use url so auto-matching highlights it - On component detail pages: wrap in div to prevent auto-matching */} {isAllComponentsPage ? ( - + ) : ( -
+
{ // Auto-expand category if it contains the current component const containsCurrentComponent = category.components.some( - (c) => c.slug === currentSlug + (c) => c.slug === currentSlug, ); // Handler to expand menu when clicking on a collapsed category group @@ -201,34 +193,18 @@ export function ComponentsSubMenu({ ); - // Secondary content: Utility links at bottom - const secondaryContent = ( + return ( <> - - - } /> - ); - - return ( - - ); } export default ComponentsSubMenu; diff --git a/docs/src/components/nav/ExamplesSubMenu.tsx b/docs/src/components/nav/ExamplesSubMenu.tsx deleted file mode 100644 index 53e3b9c5bc..0000000000 --- a/docs/src/components/nav/ExamplesSubMenu.tsx +++ /dev/null @@ -1,87 +0,0 @@ -/** - * ExamplesSubMenu.tsx - * - * Sub-menu for Examples section. - * Shows category links - the full examples list is in the data grid. - */ - -import { useState, useCallback } from 'react'; -import { - GoabxWorkSideMenu, - GoabxWorkSideMenuItem, -} from '@abgov/react-components/experimental'; - -// Example categories for filtering -const EXAMPLE_CATEGORIES = [ - { name: 'All examples', slug: '', icon: 'list' }, - { name: 'Public form', slug: 'public-form', icon: 'document' }, - { name: 'Workspace', slug: 'workspace', icon: 'desktop' }, - { name: 'Basic layout', slug: 'basic-layout', icon: 'browsers' }, -]; - -interface ExamplesSubMenuProps { - isOpen: boolean; - onToggle: () => void; - onBack: () => void; - currentSlug?: string; -} - -export function ExamplesSubMenu({ - isOpen, - onToggle, - onBack, - currentSlug, -}: ExamplesSubMenuProps) { - // Primary content: Back button + category links - const primaryContent = ( - <> - {/* Back to parent menu */} - - - {/* Example categories */} - {EXAMPLE_CATEGORIES.map((category) => ( - - ))} - - ); - - // Secondary content: Utility links at bottom - const secondaryContent = ( - <> - - - - - ); - - return ( - - ); -} - -export default ExamplesSubMenu; diff --git a/docs/src/components/nav/MenuSecondaryContent.tsx b/docs/src/components/nav/MenuSecondaryContent.tsx new file mode 100644 index 0000000000..a27ff10e66 --- /dev/null +++ b/docs/src/components/nav/MenuSecondaryContent.tsx @@ -0,0 +1,58 @@ +/** + * MenuSecondaryContent.tsx + * + * Shared secondary content for all side menu variants. + * Renders: Search button (with keyboard shortcut), Get Support, Release Notes. + * + * Extracted to avoid duplicating this block across ParentMenu, ComponentsSubMenu, etc. + */ + +import { useCallback, useState, useEffect } from "react"; +import { GoabxWorkSideMenuItem } from "@abgov/react-components/experimental"; +import { GoabSpacer } from "@abgov/react-components"; +import "./menu-secondary.css"; + +interface MenuSecondaryContentProps { + /** Whether the side menu is expanded (controls label/badge visibility) */ + isOpen: boolean; +} + +export function MenuSecondaryContent({ isOpen }: MenuSecondaryContentProps) { + // Detect Mac vs Windows for keyboard shortcut display + const [shortcutKey, setShortcutKey] = useState("⌘K"); + useEffect(() => { + const isMac = /Mac|iPod|iPhone|iPad/.test(navigator.platform); + setShortcutKey(isMac ? "⌘K" : "Ctrl K"); + }, []); + + // Open search modal (workaround until #3340 adds onClick to WorkSideMenuItem) + const openSearch = useCallback(() => { + window.dispatchEvent(new CustomEvent("goa-search-open")); + }, []); + + return ( + <> + + + + + + ); +} diff --git a/docs/src/components/nav/ParentMenu.tsx b/docs/src/components/nav/ParentMenu.tsx index 080e1d0b3e..4feffa5d3d 100644 --- a/docs/src/components/nav/ParentMenu.tsx +++ b/docs/src/components/nav/ParentMenu.tsx @@ -7,20 +7,21 @@ * - Get started, Foundations: direct navigation (when content exists) */ +import React from "react"; import { GoabxWorkSideMenu, GoabxWorkSideMenuItem, GoabxWorkSideMenuGroup, -} from '@abgov/react-components/experimental'; -import { GoabSpacer } from '@abgov/react-components'; +} from "@abgov/react-components/experimental"; +import { MenuSecondaryContent } from "./MenuSecondaryContent"; export type MenuSection = - | 'parent' - | 'get-started' - | 'foundations' - | 'examples' - | 'components' - | 'tokens'; + | "parent" + | "get-started" + | "foundations" + | "examples" + | "components" + | "tokens"; interface ParentMenuProps { isOpen: boolean; @@ -32,38 +33,43 @@ interface ParentMenuProps { // Sections that navigate directly to a page (no submenu) const DIRECT_NAV_SECTIONS: Record = { - 'tokens': '/tokens', - 'examples': '/examples', - 'foundations': '/foundations', + tokens: "/tokens", + examples: "/examples", + foundations: "/foundations", }; // Sections that open a submenu -const SUBMENU_SECTIONS = ['components']; +const SUBMENU_SECTIONS = ["components"]; // Sections that render as expandable groups with sub-items const GROUP_SECTIONS: Record> = { - 'get-started': [ - { label: 'Early Adopters', url: '/get-started' }, - { label: 'Designers', url: '/get-started/designers' }, - { label: 'Developers', url: '/get-started/developers' }, + "get-started": [ + { label: "Early Adopters", url: "/get-started" }, + { label: "Designers", url: "/get-started/designers" }, + { label: "Developers", url: "/get-started/developers" }, ], }; // Main navigation sections const SECTIONS = [ - { id: 'get-started' as const, label: 'Get started', icon: 'document-text' }, - { id: 'foundations' as const, label: 'Foundations', icon: 'list' }, - { id: 'examples' as const, label: 'Examples', icon: 'browsers' }, - { id: 'components' as const, label: 'Components', icon: 'shapes' }, - { id: 'tokens' as const, label: 'Tokens', icon: 'code-slash' }, + { id: "get-started" as const, label: "Get started", icon: "document-text" }, + { id: "foundations" as const, label: "Foundations", icon: "list" }, + { id: "examples" as const, label: "Examples", icon: "browsers" }, + { id: "components" as const, label: "Components", icon: "shapes" }, + { id: "tokens" as const, label: "Tokens", icon: "code-slash" }, ]; -export function ParentMenu({ isOpen, onToggle, onSelectSection, currentSection }: ParentMenuProps) { +export function ParentMenu({ + isOpen, + onToggle, + onSelectSection, + currentSection, +}: ParentMenuProps) { // Handle click on Components item - prevent navigation, open submenu instead const handleComponentsClick = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); - onSelectSection('components'); + onSelectSection("components"); }; // Primary content: Main navigation sections @@ -84,11 +90,7 @@ export function ParentMenu({ isOpen, onToggle, onSelectSection, currentSection } icon={section.icon} > {groupItems.map((item) => ( - + ))} ); @@ -106,9 +108,13 @@ export function ParentMenu({ isOpen, onToggle, onSelectSection, currentSection } } else if (hasSubmenu) { // Opens submenu - use /components URL when on component pages for matching, // otherwise use non-matching URL to prevent false positives on homepage - const submenuUrl = isActive ? '/components' : '/__never_match__'; + const submenuUrl = isActive ? "/components" : "/__never_match__"; return ( -
+
); - // Secondary content: Utility links at bottom - const secondaryContent = ( + return ( <> - - } /> - - ); - - return ( - - ); } export default ParentMenu; diff --git a/docs/src/components/nav/TokensSubMenu.tsx b/docs/src/components/nav/TokensSubMenu.tsx deleted file mode 100644 index c02329c66d..0000000000 --- a/docs/src/components/nav/TokensSubMenu.tsx +++ /dev/null @@ -1,86 +0,0 @@ -/** - * TokensSubMenu.tsx - * - * Sub-menu for Tokens section. - * Shows category filters - the full tokens list is in the data grid. - */ - -import { - GoabxWorkSideMenu, - GoabxWorkSideMenuItem, -} from '@abgov/react-components/experimental'; - -// Token categories matching the design tokens structure -const TOKEN_CATEGORIES = [ - { name: 'All tokens', slug: '', icon: 'list' }, - { name: 'Color', slug: 'color', icon: 'color-palette' }, - { name: 'Spacing', slug: 'space', icon: 'resize' }, - { name: 'Typography', slug: 'typography', icon: 'text' }, - { name: 'Border', slug: 'border', icon: 'square' }, - { name: 'Shadow', slug: 'shadow', icon: 'layers' }, - { name: 'Icon', slug: 'icon', icon: 'shapes' }, -]; - -interface TokensSubMenuProps { - isOpen: boolean; - onToggle: () => void; - onBack: () => void; -} - -export function TokensSubMenu({ - isOpen, - onToggle, - onBack, -}: TokensSubMenuProps) { - // Primary content: Back button + category filters - const primaryContent = ( - <> - {/* Back to parent menu */} - - - {/* Token categories */} - {TOKEN_CATEGORIES.map((category) => ( - - ))} - - ); - - // Secondary content: Utility links at bottom - const secondaryContent = ( - <> - - - - - ); - - return ( - - ); -} - -export default TokensSubMenu; diff --git a/docs/src/components/nav/index.ts b/docs/src/components/nav/index.ts index 49640966b4..69abba6009 100644 --- a/docs/src/components/nav/index.ts +++ b/docs/src/components/nav/index.ts @@ -8,8 +8,5 @@ * Tokens and Examples are single-page sections that link directly from ParentMenu. */ -export { ParentMenu, type MenuSection } from './ParentMenu'; -export { ComponentsSubMenu } from './ComponentsSubMenu'; - -// Note: ExamplesSubMenu and TokensSubMenu are no longer used -// These sections now navigate directly to their single page from the parent menu +export { ParentMenu, type MenuSection } from "./ParentMenu"; +export { ComponentsSubMenu } from "./ComponentsSubMenu"; diff --git a/docs/src/components/nav/menu-secondary.css b/docs/src/components/nav/menu-secondary.css new file mode 100644 index 0000000000..642f6a5adc --- /dev/null +++ b/docs/src/components/nav/menu-secondary.css @@ -0,0 +1,42 @@ +.search-menu-button { + display: flex; + gap: var(--goa-space-m); + align-items: flex-start; + width: 100%; + border: none; + background: transparent; + border-radius: var(--goa-border-radius-m); + padding: var(--goa-space-xs) var(--goa-space-xs) var(--goa-space-xs) + calc(var(--goa-space-xs) + var(--goa-space-3xs)); + color: var(--goa-color-greyscale-600); + min-height: 40px; + cursor: pointer; + text-align: left; + font: var(--goa-typography-body-s); +} +.search-menu-button:hover { + background: var(--goa-color-greyscale-100); + color: var(--goa-color-text-default); +} +.search-menu-button:focus-visible { + outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus); + outline-offset: 2px; +} +.search-menu-button goa-icon { + margin-top: var(--goa-space-3xs); +} +.search-menu-label { + flex-grow: 1; +} +.search-menu-badge { + color: var(--goa-color-greyscale-600); + height: 1.25rem; + min-width: 1.25rem; + line-height: 1.3; + text-align: center; + font-size: var(--goa-font-size-2); + background-color: var(--goa-color-greyscale-100); + border: 1px solid var(--goa-color-greyscale-200); + border-radius: 6px; + padding: 0 6px; +} diff --git a/docs/src/components/search/SearchEmptyState.tsx b/docs/src/components/search/SearchEmptyState.tsx new file mode 100644 index 0000000000..e620925a78 --- /dev/null +++ b/docs/src/components/search/SearchEmptyState.tsx @@ -0,0 +1,112 @@ +/** + * SearchEmptyState.tsx + * + * Shown when the search input is empty. + * Displays: + * - Recent searches (if any) with clear option + * - Quick links to common destinations + */ + +import type { HistoryItem } from './useSearchHistory'; +import { quickLinks } from './quick-links'; + +/** Map category slug to icon name (matches ComponentsSubMenu) */ +const CATEGORY_ICONS: Record = { + 'content-layout': 'grid', + 'feedback-and-alerts': 'notifications', + 'inputs-and-actions': 'create', + 'structure-and-navigation': 'browsers', + 'utilities': 'build', +}; + +/** Get icon for a history item based on type and category */ +function getHistoryIcon(item: HistoryItem): string { + if (item.type === 'example') { + return 'browsers'; // Examples use browsers icon + } + // Components use their category icon + return item.category ? CATEGORY_ICONS[item.category] || 'shapes' : 'shapes'; +} + +interface SearchEmptyStateProps { + /** Recent search history */ + history: HistoryItem[]; + /** Called when user clicks a history item */ + onHistoryClick: (item: HistoryItem) => void; + /** Called when user clicks "Clear history" */ + onClearHistory: () => void; + /** Called when user clicks a quick link */ + onQuickLinkClick: () => void; +} + +export function SearchEmptyState({ + history, + onHistoryClick, + onClearHistory, + onQuickLinkClick, +}: SearchEmptyStateProps) { + return ( +
+ {/* Recent searches section */} + {history.length > 0 && ( +
+
+ Recent + +
+ +
+ )} + + {/* Quick links section */} +
+
+ Quick Links +
+ +
+
+ ); +} + +export default SearchEmptyState; diff --git a/docs/src/components/search/SearchFilterHints.tsx b/docs/src/components/search/SearchFilterHints.tsx new file mode 100644 index 0000000000..5c8ed4220f --- /dev/null +++ b/docs/src/components/search/SearchFilterHints.tsx @@ -0,0 +1,210 @@ +/** + * SearchFilterHints.tsx + * + * Dropdown shown when user types "/" in search input. + * Displays available filter commands: + * - /component (/c) - Filter to components only + * - /example (/e) - Filter to examples only + * - /token - Coming soon (disabled) + * + * Supports keyboard navigation (↑↓) and selection (Enter/click). + */ + +import { useEffect, useState } from 'react'; +import type { SearchFilter } from './useSearch'; + +export interface FilterOption { + /** Command to type (e.g., "/component") */ + command: string; + /** Short alias (e.g., "/c") */ + alias: string; + /** Display label */ + label: string; + /** Description shown below label */ + description: string; + /** Filter value to apply (null for disabled options) */ + filter: SearchFilter; + /** Whether this option is disabled (coming soon) */ + disabled?: boolean; +} + +/** Available filter commands */ +export const FILTER_OPTIONS: FilterOption[] = [ + { + command: '/component', + alias: '/c', + label: 'Components', + description: 'Search only components', + filter: 'component', + }, + { + command: '/example', + alias: '/e', + label: 'Examples', + description: 'Search only examples', + filter: 'example', + }, + { + command: '/token', + alias: '/t', + label: 'Tokens', + description: 'Coming soon', + filter: null, + disabled: true, + }, +]; + +interface SearchFilterHintsProps { + /** Current input value to filter hints */ + inputValue: string; + /** Called when a filter is selected */ + onSelect: (option: FilterOption) => void; + /** Currently selected index (for keyboard navigation) */ + selectedIndex: number; + /** Callback to change selected index */ + onSelectedIndexChange: (index: number) => void; +} + +/** + * Check if input matches a filter command prefix. + * Returns true if: + * - Input is exactly "/" + * - Input starts with "/" and partially matches a command or alias + */ +export function shouldShowFilterHints(inputValue: string): boolean { + if (!inputValue.startsWith('/')) return false; + + // Exact "/" shows all hints + if (inputValue === '/') return true; + + // Check if input matches any command prefix (but not a complete command with space) + const hasSpace = inputValue.includes(' '); + if (hasSpace) return false; + + const lower = inputValue.toLowerCase(); + return FILTER_OPTIONS.some( + opt => + opt.command.toLowerCase().startsWith(lower) || + opt.alias.toLowerCase().startsWith(lower) + ); +} + +/** + * Parse a filter command from input. + * Returns the filter and remaining query if a complete command is found. + * + * Examples: + * - "/component button" → { filter: 'component', query: 'button' } + * - "/c modal" → { filter: 'component', query: 'modal' } + * - "button" → { filter: null, query: 'button' } + */ +export function parseFilterCommand(input: string): { + filter: SearchFilter; + query: string; + command: string | null; +} { + if (!input.startsWith('/')) { + return { filter: null, query: input, command: null }; + } + + const spaceIndex = input.indexOf(' '); + if (spaceIndex === -1) { + // No space yet - could be typing a command + return { filter: null, query: '', command: null }; + } + + const commandPart = input.slice(0, spaceIndex).toLowerCase(); + const queryPart = input.slice(spaceIndex + 1); + + // Find matching command + for (const opt of FILTER_OPTIONS) { + if ( + !opt.disabled && + (opt.command.toLowerCase() === commandPart || + opt.alias.toLowerCase() === commandPart) + ) { + return { filter: opt.filter, query: queryPart, command: opt.command }; + } + } + + // No matching command - treat whole input as query + return { filter: null, query: input, command: null }; +} + +/** + * Get filtered options based on current input. + */ +export function getFilteredOptions(inputValue: string): FilterOption[] { + if (inputValue === '/') { + return FILTER_OPTIONS; + } + + const lower = inputValue.toLowerCase(); + return FILTER_OPTIONS.filter( + opt => + opt.command.toLowerCase().startsWith(lower) || + opt.alias.toLowerCase().startsWith(lower) + ); +} + +export function SearchFilterHints({ + inputValue, + onSelect, + selectedIndex, + onSelectedIndexChange, +}: SearchFilterHintsProps) { + const options = getFilteredOptions(inputValue); + + // Reset selection when options change + useEffect(() => { + if (selectedIndex >= options.length) { + onSelectedIndexChange(0); + } + }, [options.length, selectedIndex, onSelectedIndexChange]); + + // Don't render if no options match + if (options.length === 0) { + return null; + } + + return ( +
+
Filter by type
+
    + {options.map((option, index) => ( +
  • { + if (!option.disabled) { + onSelect(option); + } + }} + onMouseEnter={() => { + if (!option.disabled) { + onSelectedIndexChange(index); + } + }} + > +
    + {option.command} + ({option.alias}) +
    +
    + {option.description} +
    +
  • + ))} +
+
+ ↑↓ to navigate, Enter to select, Esc to cancel +
+
+ ); +} + +export default SearchFilterHints; diff --git a/docs/src/components/search/SearchInput.tsx b/docs/src/components/search/SearchInput.tsx new file mode 100644 index 0000000000..8898367ff6 --- /dev/null +++ b/docs/src/components/search/SearchInput.tsx @@ -0,0 +1,193 @@ +/** + * SearchInput.tsx + * + * Search input field with: + * - Search icon (leading) + * - Close button (trailing) + * - Keyboard hint badge showing ⌘K (desktop only) + * - Auto-focus on mount + */ + +import { useEffect, useRef } from "react"; +import type { SearchFilter } from "./useSearch"; + +interface SearchInputProps { + value: string; + onChange: (value: string) => void; + onClose: () => void; + /** Currently active filter (if any) */ + activeFilter?: SearchFilter; + /** The command that activated the filter (e.g., "/component") */ + activeCommand?: string | null; + /** Called when user clicks to clear the filter */ + onClearFilter?: () => void; + /** Forward arrow/enter keys to results navigation */ + onResultNav?: (key: string) => void; +} + +/** + * Simple search icon (magnifying glass). + * Using inline SVG to avoid external dependencies. + */ +function SearchIcon() { + return ( + + + + ); +} + +/** + * Close icon (X). + */ +function CloseIcon() { + return ( + + + + ); +} + +/** + * Detect if user is on Mac for keyboard shortcut display. + */ +function isMac(): boolean { + if (typeof navigator === "undefined") return false; + return navigator.platform.toLowerCase().includes("mac"); +} + +/** Get display label for a filter type */ +function getFilterLabel(filter: SearchFilter): string { + switch (filter) { + case "component": + return "Components"; + case "example": + return "Examples"; + default: + return ""; + } +} + +export function SearchInput({ + value, + onChange, + onClose, + activeFilter, + activeCommand, + onClearFilter, + onResultNav, +}: SearchInputProps) { + const inputRef = useRef(null); + + // Auto-focus the input when mounted + useEffect(() => { + // Small delay to ensure modal animation completes + const timer = setTimeout(() => { + inputRef.current?.focus(); + }, 50); + return () => clearTimeout(timer); + }, []); + + const handleChange = (e: React.ChangeEvent) => { + onChange(e.target.value); + }; + + const handleKeyDown = (e: React.KeyboardEvent) => { + // Escape closes the modal + if (e.key === "Escape") { + e.preventDefault(); + onClose(); + } + // Backspace on empty input clears the active filter + if (e.key === "Backspace" && value === "" && activeFilter) { + e.preventDefault(); + onClearFilter?.(); + } + // Forward arrow/enter to results navigation + if (onResultNav && ["ArrowUp", "ArrowDown", "Enter"].includes(e.key)) { + e.preventDefault(); + onResultNav(e.key); + } + }; + + // Determine the placeholder text based on filter + const placeholder = activeFilter + ? `Search ${activeFilter === "component" ? "components" : "examples"}...` + : "Search components and examples... (type / to filter)"; + + return ( +
+ {/* Search icon */} + + + {/* Active filter badge */} + {activeFilter && ( + + )} + + {/* Input field */} + + + {/* Keyboard hint (desktop only, hidden via CSS on mobile) */} + + + {/* Close button */} + +
+ ); +} + +export default SearchInput; diff --git a/docs/src/components/search/SearchModal.tsx b/docs/src/components/search/SearchModal.tsx new file mode 100644 index 0000000000..4a3fdad3be --- /dev/null +++ b/docs/src/components/search/SearchModal.tsx @@ -0,0 +1,342 @@ +/** + * SearchModal.tsx + * + * Main search modal component that orchestrates: + * - Backdrop (click to close) + * - Modal container + * - Focus trap when open + * - Listens for goa-search-open custom event (from MobileHeader) + * - Global Cmd+K / Ctrl+K listener to open + * + * Usage in Astro: + * + */ + +import { useState, useEffect, useCallback, useRef } from "react"; +import { + useSearch, + type SearchFilter, + type SearchResult, + type ComponentEntry, + type ExampleEntry, +} from "./useSearch"; +import { useSearchHistory, type HistoryItem } from "./useSearchHistory"; +import { SearchInput } from "./SearchInput"; +import { SearchResults, type SearchResultsHandle } from "./SearchResults"; +import { + SearchFilterHints, + shouldShowFilterHints, + parseFilterCommand, + getFilteredOptions, + type FilterOption, +} from "./SearchFilterHints"; +import "./search.css"; + +// ============================================================================ +// SearchModalContent - Only mounts when modal is open +// ============================================================================ + +interface SearchModalContentProps { + onClose: () => void; + previousFocusRef: React.RefObject; +} + +function SearchModalContent({ onClose, previousFocusRef }: SearchModalContentProps) { + const [query, setQuery] = useState(""); + const [activeFilter, setActiveFilter] = useState(null); + const [activeCommand, setActiveCommand] = useState(null); + const [hintSelectedIndex, setHintSelectedIndex] = useState(0); + const modalRef = useRef(null); + const searchResultsRef = useRef(null); + + // These hooks only run when the modal is open (component is mounted) + const { search, isLoading, error } = useSearch(); + const { history, addToHistory, clearHistory } = useSearchHistory(); + + // Determine if we should show filter hints + const showHints = shouldShowFilterHints(query); + + // Parse command and extract actual search query + const parsed = parseFilterCommand(query); + const searchQuery = parsed.filter ? parsed.query : query; + const effectiveFilter = parsed.filter || activeFilter; + + // When a filter command is typed (e.g., "/example "), activate the filter and clear the command from input + useEffect(() => { + if (parsed.filter && parsed.command) { + setActiveFilter(parsed.filter); + setActiveCommand(parsed.command); + setQuery(parsed.query); // Keep only the search term, remove the command + } + }, [parsed.filter, parsed.command, parsed.query]); + + // Run search when query changes (using the parsed query and filter) + const results = searchQuery.trim() ? search(searchQuery, effectiveFilter) : []; + + /** + * Handle filter selection from hints dropdown. + */ + const handleFilterSelect = useCallback((option: FilterOption) => { + setActiveFilter(option.filter); + setActiveCommand(option.command); + setQuery(""); // Clear input - the filter chip shows the active filter + setHintSelectedIndex(0); + }, []); + + /** + * Clear the active filter. + */ + const clearFilter = useCallback(() => { + setActiveFilter(null); + setActiveCommand(null); + setQuery(""); + }, []); + + /** + * Close the modal and restore focus. + * Note: scroll is restored in the outer SearchModal.closeModal() + */ + const closeModal = useCallback(() => { + onClose(); + setTimeout(() => { + previousFocusRef.current?.focus(); + }, 0); + }, [onClose, previousFocusRef]); + + /** + * Handle when a search result is clicked (for history tracking). + */ + const handleResultClick = useCallback( + (result: SearchResult) => { + const title = + result.type === "component" + ? (result as ComponentEntry).name + : (result as ExampleEntry).title; + const category = + result.type === "component" ? (result as ComponentEntry).category : undefined; + + addToHistory({ + id: result.id, + type: result.type, + title, + slug: result.slug, + category, + query: searchQuery || undefined, + }); + }, + [addToHistory, searchQuery], + ); + + /** + * Handle when a history item is clicked. + */ + const handleHistoryClick = useCallback( + (item: HistoryItem) => { + const prefix = item.type === "component" ? "components" : "examples"; + window.location.href = `/${prefix}/${item.slug}`; + closeModal(); + }, + [closeModal], + ); + + /** + * Handle when a suggestion is clicked. + */ + const handleSuggestionClick = useCallback((suggestion: string) => { + setQuery(suggestion); + }, []); + + /** + * Handle backdrop click to close. + */ + const handleBackdropClick = (e: React.MouseEvent) => { + if (e.target === e.currentTarget) { + closeModal(); + } + }; + + /** + * Handle keyboard navigation for filter hints. + */ + useEffect(() => { + if (!showHints) return; + + const handleHintKeyDown = (e: KeyboardEvent) => { + // Only handle when focus is on the search input — let other elements (close button, etc.) handle their own Enter + const activeEl = document.activeElement; + if ( + !activeEl || + !(activeEl instanceof HTMLInputElement && activeEl.type === "text") + ) + return; + + // Get options filtered by input AND enabled status (same as displayed hints) + const enabledOptions = getFilteredOptions(query).filter((opt) => !opt.disabled); + if (enabledOptions.length === 0) return; + + switch (e.key) { + case "ArrowDown": + e.preventDefault(); + e.stopPropagation(); + setHintSelectedIndex((prev) => + prev < enabledOptions.length - 1 ? prev + 1 : prev, + ); + break; + + case "ArrowUp": + e.preventDefault(); + e.stopPropagation(); + setHintSelectedIndex((prev) => (prev > 0 ? prev - 1 : prev)); + break; + + case "Enter": + e.preventDefault(); + e.stopPropagation(); + const selected = enabledOptions[hintSelectedIndex]; + if (selected) { + handleFilterSelect(selected); + } + break; + } + }; + + document.addEventListener("keydown", handleHintKeyDown, true); + return () => document.removeEventListener("keydown", handleHintKeyDown, true); + }, [showHints, hintSelectedIndex, handleFilterSelect, query]); + + return ( +
+ {/* @ts-expect-error - goa-focus-trap is a web component */} + +
{ + if (e.key === "Escape") { + e.preventDefault(); + closeModal(); + } + }} + > + + Use arrow keys to navigate results, Enter to select, Escape to close. + + searchResultsRef.current?.handleKeyDown(key)} + /> + + {showHints ? ( + + ) : error ? ( +
+
+ Unable to load search +

+ Please try refreshing the page. If the problem persists, search may be + temporarily unavailable. +

+
+
+ ) : ( + + )} +
+
+
+ ); +} + +// ============================================================================ +// SearchModal - Lightweight wrapper that handles open/close +// ============================================================================ + +export function SearchModal() { + const [isOpen, setIsOpen] = useState(false); + const previousFocusRef = useRef(null); + + /** + * Open the search modal. + */ + const openModal = useCallback(() => { + previousFocusRef.current = document.activeElement as HTMLElement; + setIsOpen(true); + document.body.style.overflow = "hidden"; + }, []); + + /** + * Close the search modal. + */ + const closeModal = useCallback(() => { + setIsOpen(false); + document.body.style.overflow = ""; + }, []); + + /** + * Handle keyboard shortcut (Cmd+K / Ctrl+K). + */ + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if ((e.metaKey || e.ctrlKey) && e.key === "k") { + e.preventDefault(); + if (isOpen) { + closeModal(); + } else { + openModal(); + } + } + }; + + document.addEventListener("keydown", handleKeyDown); + return () => document.removeEventListener("keydown", handleKeyDown); + }, [isOpen, openModal, closeModal]); + + /** + * Listen for goa-search-open custom event (from MobileHeader). + */ + useEffect(() => { + const handleSearchOpen = () => { + openModal(); + }; + + window.addEventListener("goa-search-open", handleSearchOpen); + return () => window.removeEventListener("goa-search-open", handleSearchOpen); + }, [openModal]); + + // Only render content when open - this is where lazy loading happens + if (!isOpen) { + return null; + } + + return ; +} + +export default SearchModal; diff --git a/docs/src/components/search/SearchNoResults.tsx b/docs/src/components/search/SearchNoResults.tsx new file mode 100644 index 0000000000..f4228c34c6 --- /dev/null +++ b/docs/src/components/search/SearchNoResults.tsx @@ -0,0 +1,50 @@ +/** + * SearchNoResults.tsx + * + * Shown when a search query returns no matches. + * Displays: + * - "No results found" message with the query + * - Suggestions section with popular search terms + */ + +import { popularSearches } from './quick-links'; + +interface SearchNoResultsProps { + /** The search query that had no results */ + query: string; + /** Called when user clicks a suggestion */ + onSuggestionClick: (suggestion: string) => void; +} + +export function SearchNoResults({ query, onSuggestionClick }: SearchNoResultsProps) { + return ( +
+ {/* No results message */} +
+ No results found for "{query}" +
+ + {/* Suggestions */} +
+
+ Try searching for +
+
    + {popularSearches.map(term => ( +
  • + +
  • + ))} +
+
+
+ ); +} + +export default SearchNoResults; diff --git a/docs/src/components/search/SearchPage.tsx b/docs/src/components/search/SearchPage.tsx new file mode 100644 index 0000000000..1208caa52e --- /dev/null +++ b/docs/src/components/search/SearchPage.tsx @@ -0,0 +1,326 @@ +/** + * SearchPage.tsx + * + * Standalone inline search component for the /search page. + * Reuses the same search logic and components as the modal, + * but renders inline rather than in a modal overlay. + * + * Features: + * - URL parameter support (?q=query) + * - Full search functionality (filters, history, results) + * - Accessible with proper ARIA attributes + * - Screen reader announcements for results + */ + +import { useState, useEffect, useCallback, useRef, useId } from 'react'; +import { useSearch, type SearchFilter, type SearchResult, type ComponentEntry, type ExampleEntry } from './useSearch'; +import { useSearchHistory, type HistoryItem } from './useSearchHistory'; +import { SearchResults } from './SearchResults'; +import { + SearchFilterHints, + shouldShowFilterHints, + parseFilterCommand, + getFilteredOptions, + type FilterOption, +} from './SearchFilterHints'; +import './search.css'; + +interface SearchPageProps { + /** Initial query from URL parameter */ + initialQuery?: string; +} + +/** + * Simple search icon (magnifying glass). + */ +function SearchIcon() { + return ( + + + + ); +} + +/** + * Detect if user is on Mac for keyboard shortcut display. + */ +function isMac(): boolean { + if (typeof navigator === 'undefined') return false; + return navigator.platform.toLowerCase().includes('mac'); +} + +/** Get display label for a filter type */ +function getFilterLabel(filter: SearchFilter): string { + switch (filter) { + case 'component': + return 'Components'; + case 'example': + return 'Examples'; + default: + return ''; + } +} + +export function SearchPage({ initialQuery = '' }: SearchPageProps) { + const [query, setQuery] = useState(initialQuery); + const [activeFilter, setActiveFilter] = useState(null); + const [activeCommand, setActiveCommand] = useState(null); + const [hintSelectedIndex, setHintSelectedIndex] = useState(0); + const inputRef = useRef(null); + const announcementId = useId(); + + const { search, isLoading, error, entries } = useSearch(); + const { history, addToHistory, clearHistory } = useSearchHistory(); + + // Determine if we should show filter hints + const showHints = shouldShowFilterHints(query); + + // Parse command and extract actual search query + const parsed = parseFilterCommand(query); + const searchQuery = parsed.filter ? parsed.query : query; + const effectiveFilter = parsed.filter || activeFilter; + + // When a filter command is typed (e.g., "/example "), activate the filter and clear the command from input + useEffect(() => { + if (parsed.filter && parsed.command) { + setActiveFilter(parsed.filter); + setActiveCommand(parsed.command); + setQuery(parsed.query); // Keep only the search term, remove the command + } + }, [parsed.filter, parsed.command, parsed.query]); + + // Run search when query changes + const results = searchQuery.trim() ? search(searchQuery, effectiveFilter) : []; + + // Focus input on mount + useEffect(() => { + inputRef.current?.focus(); + }, []); + + // Update URL when query changes (without page reload) + useEffect(() => { + const url = new URL(window.location.href); + if (query.trim()) { + url.searchParams.set('q', query); + } else { + url.searchParams.delete('q'); + } + window.history.replaceState({}, '', url.toString()); + }, [query]); + + /** + * Handle filter selection from hints dropdown. + */ + const handleFilterSelect = useCallback((option: FilterOption) => { + setActiveFilter(option.filter); + setActiveCommand(option.command); + setQuery(''); // Clear input - the filter chip shows the active filter + setHintSelectedIndex(0); + inputRef.current?.focus(); + }, []); + + /** + * Clear the active filter. + */ + const clearFilter = useCallback(() => { + setActiveFilter(null); + setActiveCommand(null); + setQuery(''); + inputRef.current?.focus(); + }, []); + + /** + * Handle when a search result is clicked (for history tracking). + */ + const handleResultClick = useCallback((result: SearchResult) => { + const title = result.type === 'component' + ? (result as ComponentEntry).name + : (result as ExampleEntry).title; + + addToHistory({ + id: result.id, + type: result.type, + title, + slug: result.slug, + query: searchQuery || undefined, + }); + }, [addToHistory, searchQuery]); + + /** + * Handle when a history item is clicked. + */ + const handleHistoryClick = useCallback((item: HistoryItem) => { + const prefix = item.type === 'component' ? 'components' : 'examples'; + window.location.href = `/${prefix}/${item.slug}`; + }, []); + + /** + * Handle when a suggestion is clicked. + */ + const handleSuggestionClick = useCallback((suggestion: string) => { + setQuery(suggestion); + }, []); + + /** + * Placeholder close function - not needed for inline but required by SearchResults + */ + const handleClose = useCallback(() => { + // No-op for inline search + }, []); + + /** + * Handle keyboard events on the search input. + * Handles hint navigation (when hints are showing) and filter clearing. + */ + const handleInputKeyDown = (e: React.KeyboardEvent) => { + // Backspace on empty input clears the active filter + if (e.key === 'Backspace' && query === '' && activeFilter) { + e.preventDefault(); + clearFilter(); + return; + } + + // Only handle hint navigation when hints are showing + if (!showHints) return; + + const enabledOptions = getFilteredOptions(query).filter(opt => !opt.disabled); + if (enabledOptions.length === 0) return; + + switch (e.key) { + case 'ArrowDown': + e.preventDefault(); + setHintSelectedIndex(prev => + prev < enabledOptions.length - 1 ? prev + 1 : prev + ); + break; + + case 'ArrowUp': + e.preventDefault(); + setHintSelectedIndex(prev => (prev > 0 ? prev - 1 : prev)); + break; + + case 'Enter': + e.preventDefault(); + const selected = enabledOptions[hintSelectedIndex]; + if (selected) { + handleFilterSelect(selected); + } + break; + } + }; + + // Generate announcement text for screen readers + const getAnnouncement = () => { + if (isLoading) return 'Loading search index...'; + if (error) return `Error loading search: ${error}`; + if (!searchQuery.trim()) return ''; + if (results.length === 0) return `No results found for "${searchQuery}"`; + return `Found ${results.length} result${results.length === 1 ? '' : 's'} for "${searchQuery}"`; + }; + + return ( +
+ {/* Screen reader announcement for results count */} +
+ {getAnnouncement()} +
+ + {/* Search input */} +
+ + + {/* Active filter badge */} + {effectiveFilter && ( + + )} + + setQuery(e.target.value)} + onKeyDown={handleInputKeyDown} + aria-label="Search query" + aria-describedby={announcementId} + autoComplete="off" + autoCorrect="off" + autoCapitalize="off" + spellCheck="false" + /> + + {/* Keyboard hint */} + +
+ + {/* Results container */} +
+ {showHints ? ( + + ) : error ? ( +
+
+ Error loading search: {error} +

Try refreshing the page. If the problem persists, search may be temporarily unavailable.

+
+
+ ) : ( + + )} +
+
+ ); +} + +export default SearchPage; diff --git a/docs/src/components/search/SearchResultItem.tsx b/docs/src/components/search/SearchResultItem.tsx new file mode 100644 index 0000000000..7826e9318c --- /dev/null +++ b/docs/src/components/search/SearchResultItem.tsx @@ -0,0 +1,147 @@ +/** + * SearchResultItem.tsx + * + * Renders a single search result with: + * - Type icon: △ for components, □ for examples + * - Breadcrumb showing category context + * - Title (clickable link) + * - Description (truncated) + * - Status badge for non-stable content + */ + +import type { SearchResult, ComponentEntry, ExampleEntry } from './useSearch'; + +interface SearchResultItemProps { + result: SearchResult; + isSelected: boolean; + onClick?: () => void; + /** Called when navigating to result, passes result info for history tracking */ + onNavigate?: (result: SearchResult) => void; +} + +/** + * Truncate text to a maximum length, adding ellipsis if needed. + */ +function truncate(text: string | undefined, maxLength: number): string { + if (!text) return ''; + if (text.length <= maxLength) return text; + return text.slice(0, maxLength).trim() + '…'; +} + +/** + * Get display name based on entry type. + */ +function getDisplayName(result: SearchResult): string { + if (result.type === 'component') { + return (result as ComponentEntry).name; + } + return (result as ExampleEntry).title; +} + +/** + * Build breadcrumb text from type and category. + * Examples: "Components > Feedback" or "Examples > Forms" + */ +function getBreadcrumb(result: SearchResult): string { + if (result.type === 'component') { + const comp = result as ComponentEntry; + return `Components > ${comp.category}`; + } + const example = result as ExampleEntry; + const category = example.categories?.[0] || 'General'; + return `Examples > ${category}`; +} + +/** + * Build the URL for the result based on type. + * Components: /components/{slug} + * Examples: /examples/{slug} + */ +function getUrl(result: SearchResult): string { + const prefix = result.type === 'component' ? 'components' : 'examples'; + return `/${prefix}/${result.slug}`; +} + +/** + * Get badge class for non-stable statuses. + */ +function getBadgeClass(status: string): string | null { + switch (status) { + case 'beta': + return 'search-result-badge--beta'; + case 'draft': + return 'search-result-badge--draft'; + case 'experimental': + return 'search-result-badge--experimental'; + case 'deprecated': + return 'search-result-badge--deprecated'; + default: + return null; + } +} + +/** + * Check if status should show a badge. + * Stable/published items don't need badges. + */ +function shouldShowBadge(status: string): boolean { + return !['stable', 'published'].includes(status); +} + +export function SearchResultItem({ result, isSelected, onClick, onNavigate }: SearchResultItemProps) { + const name = getDisplayName(result); + const breadcrumb = getBreadcrumb(result); + const url = getUrl(result); + const description = truncate(result.description, 80); + const badgeClass = getBadgeClass(result.status); + const itemId = `search-result-${result.type}-${result.id}`; + + const handleClick = () => { + onNavigate?.(result); + onClick?.(); + }; + + return ( +
  • + + {/* Type icon */} + +
  • + ); +} + +export default SearchResultItem; diff --git a/docs/src/components/search/SearchResults.tsx b/docs/src/components/search/SearchResults.tsx new file mode 100644 index 0000000000..e4d7358b0f --- /dev/null +++ b/docs/src/components/search/SearchResults.tsx @@ -0,0 +1,240 @@ +/** + * SearchResults.tsx + * + * Container for search results with: + * - Keyboard navigation (↑↓ to move, Enter to select) + * - Progressive loading (15 results initially, "Show more" for rest) + * - Loading, empty, and initial states + */ + +import { + useState, + useEffect, + useCallback, + useRef, + useId, + useImperativeHandle, + forwardRef, +} from "react"; +import type { SearchResult, ComponentEntry, ExampleEntry } from "./useSearch"; +import type { HistoryItem } from "./useSearchHistory"; +import { SearchResultItem } from "./SearchResultItem"; +import { SearchEmptyState } from "./SearchEmptyState"; +import { SearchNoResults } from "./SearchNoResults"; + +export interface SearchResultsHandle { + /** Handle arrow/enter keyboard navigation from the search input */ + handleKeyDown: (key: string) => void; +} + +interface SearchResultsProps { + results: SearchResult[]; + isLoading: boolean; + query: string; + onClose: () => void; + /** Recent search history */ + history: HistoryItem[]; + /** Called when a search result is clicked (for history tracking) */ + onResultClick: (result: SearchResult) => void; + /** Called when user clicks a history item */ + onHistoryClick: (item: HistoryItem) => void; + /** Called to clear search history */ + onClearHistory: () => void; + /** Called when user clicks a suggestion to search for it */ + onSuggestionClick: (suggestion: string) => void; +} + +/** Number of results to show initially */ +const INITIAL_LIMIT = 15; +/** How many more to show on each "Show more" click */ +const PAGE_SIZE = 15; + +export const SearchResults = forwardRef( + function SearchResults( + { + results, + isLoading, + query, + onClose, + history, + onResultClick, + onHistoryClick, + onClearHistory, + onSuggestionClick, + }, + ref, + ) { + const [selectedIndex, setSelectedIndex] = useState(0); + const [displayLimit, setDisplayLimit] = useState(INITIAL_LIMIT); + const listRef = useRef(null); + const listboxId = useId(); + const announcementId = useId(); + + // Reset selection when results change + useEffect(() => { + setSelectedIndex(0); + setDisplayLimit(INITIAL_LIMIT); + }, [results]); + + // Results to display (limited by displayLimit) + const displayedResults = results.slice(0, displayLimit); + const hasMore = results.length > displayLimit; + + /** + * Handle keyboard navigation by key name. + * Called by the search input via ref — no listeners needed here. + */ + const handleKeyDown = useCallback( + (key: string) => { + if (displayedResults.length === 0) return; + + switch (key) { + case "ArrowDown": + setSelectedIndex((prev) => + prev < displayedResults.length - 1 ? prev + 1 : prev, + ); + break; + + case "ArrowUp": + setSelectedIndex((prev) => (prev > 0 ? prev - 1 : prev)); + break; + + case "Enter": + const selected = displayedResults[selectedIndex]; + if (selected) { + onResultClick(selected); + const prefix = selected.type === "component" ? "components" : "examples"; + window.location.href = `/${prefix}/${selected.slug}`; + onClose(); + } + break; + } + }, + [displayedResults, selectedIndex, onClose, onResultClick], + ); + + // Expose navigation to parent via ref + useImperativeHandle(ref, () => ({ handleKeyDown }), [handleKeyDown]); + + // Scroll selected item into view + useEffect(() => { + if (listRef.current) { + const selected = listRef.current.querySelector('[data-selected="true"]'); + if (selected) { + selected.scrollIntoView({ block: "nearest" }); + } + } + }, [selectedIndex]); + + const handleShowMore = () => { + setDisplayLimit((prev) => prev + PAGE_SIZE); + }; + + // Loading state + if (isLoading) { + return ( +
    +
    + Loading search... +
    +
    + ); + } + + // Initial state (no query yet) - show empty state with history and quick links + if (!query.trim()) { + return ( +
    + +
    + ); + } + + // No results - show suggestions + if (results.length === 0) { + return ( +
    + +
    + ); + } + + // Get the active descendant ID for accessibility + const activeResult = displayedResults[selectedIndex]; + const activeDescendantId = activeResult + ? `search-result-${activeResult.type}-${activeResult.id}` + : undefined; + + return ( +
    + {/* Screen reader announcement for results count */} +
    + {results.length > 0 + ? `${results.length} result${results.length === 1 ? "" : "s"} found` + : query.trim() + ? "No results found" + : ""} +
    + +
      { + if (e.key === "ArrowDown" || e.key === "ArrowUp") { + e.preventDefault(); + const items = listRef.current?.querySelectorAll("a.search-result-item"); + if (!items || items.length === 0) return; + const currentIndex = Array.from(items).indexOf(e.target as HTMLElement); + const fromIndex = currentIndex >= 0 ? currentIndex : selectedIndex; + const nextIndex = e.key === "ArrowDown" + ? Math.min(fromIndex + 1, items.length - 1) + : Math.max(fromIndex - 1, 0); + items[nextIndex].focus(); + setSelectedIndex(nextIndex); + } + // Enter: don't intercept — let the focused navigate natively + }} + > + {displayedResults.map((result, index) => ( + + ))} +
    + + {hasMore && ( +
    + +
    + )} +
    + ); + }, +); + +export default SearchResults; diff --git a/docs/src/components/search/index.ts b/docs/src/components/search/index.ts new file mode 100644 index 0000000000..5324a5c2bc --- /dev/null +++ b/docs/src/components/search/index.ts @@ -0,0 +1,32 @@ +/** + * Search Module + * + * Exports the search components, hooks, and types. + */ + +// Hooks and types +export { + useSearch, + default as useSearchDefault, + type ComponentEntry, + type ExampleEntry, + type SearchEntry, + type SearchResult, +} from './useSearch'; + +export { + useSearchHistory, + type HistoryItem, +} from './useSearchHistory'; + +// Components +export { SearchModal, default as SearchModalDefault } from './SearchModal'; +export { SearchPage, default as SearchPageDefault } from './SearchPage'; +export { SearchInput } from './SearchInput'; +export { SearchResults } from './SearchResults'; +export { SearchResultItem } from './SearchResultItem'; +export { SearchEmptyState } from './SearchEmptyState'; +export { SearchNoResults } from './SearchNoResults'; + +// Config +export { quickLinks, popularSearches, type QuickLink } from './quick-links'; diff --git a/docs/src/components/search/quick-links.ts b/docs/src/components/search/quick-links.ts new file mode 100644 index 0000000000..fde2eace59 --- /dev/null +++ b/docs/src/components/search/quick-links.ts @@ -0,0 +1,37 @@ +/** + * quick-links.ts + * + * Configurable quick links shown in the search empty state. + * These provide fast navigation to common destinations. + */ + +export interface QuickLink { + label: string; + href: string; + /** Icon character displayed before the label */ + icon: string; +} + +/** + * Quick links shown when search input is empty. + * Edit this array to customize the links. + */ +export const quickLinks: QuickLink[] = [ + { label: 'Getting started', href: '/get-started', icon: 'document-text' }, + { label: 'Components', href: '/components', icon: 'shapes' }, + { label: 'Examples', href: '/examples', icon: 'browsers' }, + { label: 'Design tokens', href: '/tokens', icon: 'code-slash' }, +]; + +/** + * Popular/suggested searches shown when there are no results. + * These are common terms users might be looking for. + */ +export const popularSearches: string[] = [ + 'Button', + 'Form', + 'Table', + 'Input', + 'Modal', + 'Badge', +]; diff --git a/docs/src/components/search/search.css b/docs/src/components/search/search.css new file mode 100644 index 0000000000..f7953530eb --- /dev/null +++ b/docs/src/components/search/search.css @@ -0,0 +1,790 @@ +/** + * search.css + * + * Styles for the search modal and its components. + * Design: Clean modal, white background, blue links, accessible focus states. + */ + +/* ========================================================================== + Modal Backdrop & Container + ========================================================================== */ + +.search-modal-backdrop { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.5); + z-index: 1000; + display: flex; + align-items: flex-start; + justify-content: center; + padding-top: 10vh; + animation: fadeIn 150ms ease-out; +} + +/* Override goa-focus-trap's display:inline to not break flex layout */ +.search-modal-backdrop > goa-focus-trap, +.search-modal-backdrop > goa-focus-trap > div { + display: flex; + flex-direction: column; + width: 100%; + max-width: 600px; + max-height: 70vh; +} + +@keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } +} + +.search-modal { + background: white; + border-radius: var(--goa-space-m); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -2px rgba(0, 0, 0, 0.1), + 0 20px 25px -5px rgba(0, 0, 0, 0.15); + width: 100%; + max-width: 600px; + max-height: 70vh; + display: flex; + flex-direction: column; + animation: slideIn 150ms ease-out; + overflow: hidden; +} + +@keyframes slideIn { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +/* Mobile: full-width with small margins */ +@media (max-width: 640px) { + .search-modal-backdrop { + padding: var(--goa-space-m); + padding-top: var(--goa-space-m); + align-items: flex-start; + } + + .search-modal { + max-height: 85vh; + border-radius: var(--goa-space-s); + } +} + +/* ========================================================================== + Search Input + ========================================================================== */ + +.search-input-container { + display: flex; + align-items: center; + gap: var(--goa-space-s); + padding: var(--goa-space-m) var(--goa-space-l); + border-bottom: 1px solid var(--goa-color-greyscale-200, #e0e0e0); +} + +.search-input-icon { + flex-shrink: 0; + color: var(--goa-color-greyscale-500, #666); +} + +.search-input-icon svg { + width: 20px; + height: 20px; + display: block; +} + +.search-input-field { + flex: 1; + border: none; + outline: none; + font: var(--goa-typography-body-m); + font-size: 16px; /* Prevents iOS zoom */ + color: var(--goa-color-text-default, #333); + background: transparent; +} + +.search-input-field::placeholder { + color: var(--goa-color-greyscale-500, #666); +} + +.search-input-hint { + display: flex; + align-items: center; + gap: var(--goa-space-2xs); + flex-shrink: 0; +} + +.search-input-kbd { + display: inline-flex; + align-items: center; + padding: var(--goa-space-3xs) var(--goa-space-xs); + font-family: var(--goa-font-family-mono, monospace); + font-size: 12px; + color: var(--goa-color-greyscale-600, #555); + background: var(--goa-color-greyscale-100, #f5f5f5); + border: 1px solid var(--goa-color-greyscale-200, #e0e0e0); + border-radius: 4px; +} + +.search-input-close { + flex-shrink: 0; + padding: var(--goa-space-2xs); + background: none; + border: none; + cursor: pointer; + border-radius: 4px; + color: var(--goa-color-greyscale-500, #666); + display: flex; + align-items: center; + justify-content: center; +} + +.search-input-close:hover { + background: var(--goa-color-greyscale-100, #f5f5f5); + color: var(--goa-color-text-default, #333); +} + +.search-input-close:focus-visible { + outline: 2px solid var(--goa-color-interactive-focus, #0070c4); + outline-offset: 2px; +} + +.search-input-close svg { + width: 18px; + height: 18px; + display: block; +} + +/* Hide keyboard hint on mobile */ +@media (max-width: 640px) { + .search-input-hint { + display: none; + } +} + +/* ========================================================================== + Search Results + ========================================================================== */ + +.search-results { + flex: 1; + overflow-y: auto; +} + +.search-results-empty { + padding: var(--goa-space-2xl); + text-align: center; + color: var(--goa-color-greyscale-500, #666); +} + +/* Error state styling (modal and page) */ +.search-results-error { + padding: var(--goa-space-xl); + text-align: center; + background: var(--goa-color-status-emergency-light, #fef2f2); + border-radius: var(--goa-space-s); + margin: var(--goa-space-m); +} + +.search-results-error strong { + display: block; + color: var(--goa-color-status-emergency, #d32f2f); + font: var(--goa-typography-body-m); + font-weight: 600; + margin-bottom: var(--goa-space-xs); +} + +.search-results-error p { + margin: 0; + font: var(--goa-typography-body-s); + color: var(--goa-color-greyscale-700, #444); +} + +.search-results-loading { + padding: var(--goa-space-2xl); + text-align: center; + color: var(--goa-color-greyscale-500, #666); + display: flex; + flex-direction: column; + align-items: center; + gap: var(--goa-space-m); +} + +.search-results-loading::before { + content: ''; + width: 24px; + height: 24px; + border: 2px solid var(--goa-color-greyscale-200, #e0e0e0); + border-top-color: var(--goa-color-interactive-default, #0070c4); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +.search-results-initial { + padding: var(--goa-space-l) var(--goa-space-xl); + color: var(--goa-color-greyscale-500, #666); + font: var(--goa-typography-body-s); +} + +.search-results-list { + list-style: none; + margin: 0; + padding: 0; +} + +/* ========================================================================== + Search Result Item + ========================================================================== */ + +.search-result-item { + display: flex; + gap: var(--goa-space-s); + padding: var(--goa-space-s) var(--goa-space-l); + text-decoration: none; + color: inherit; + transition: background-color 100ms ease; +} + +.search-result-item:hover, +.search-result-item[data-selected="true"] { + background: var(--goa-color-greyscale-100, #f5f5f5); +} + +.search-result-item:focus-visible { + outline: none; + background: var(--goa-color-greyscale-100, #f5f5f5); + box-shadow: inset 0 0 0 2px var(--goa-color-interactive-focus, #0070c4); +} + +.search-result-icon { + flex-shrink: 0; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + color: var(--goa-color-greyscale-500, #666); + font-size: 14px; + margin-top: 2px; +} + +/* Component icon: triangle */ +.search-result-icon--component::before { + content: '△'; +} + +/* Example icon: square */ +.search-result-icon--example::before { + content: '□'; +} + +.search-result-content { + flex: 1; + min-width: 0; +} + +.search-result-breadcrumb { + font: var(--goa-typography-body-xs); + font-size: 12px; + color: var(--goa-color-greyscale-500, #666); + margin-bottom: var(--goa-space-3xs); +} + +.search-result-title { + font: var(--goa-typography-body-m); + font-weight: 600; + color: var(--goa-color-interactive-default, #0070c4); + margin-bottom: var(--goa-space-3xs); +} + +.search-result-item:hover .search-result-title { + text-decoration: underline; +} + +.search-result-description { + font: var(--goa-typography-body-s); + color: var(--goa-color-greyscale-600, #555); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.search-result-badge { + display: inline-block; + margin-left: var(--goa-space-xs); + padding: 0 var(--goa-space-xs); + font: var(--goa-typography-body-xs); + font-size: 11px; + text-transform: uppercase; + border-radius: 4px; + vertical-align: middle; +} + +.search-result-badge--beta { + background: var(--goa-color-status-warning-light, #fff3cd); + color: var(--goa-color-status-warning-dark, #856404); +} + +.search-result-badge--draft { + background: var(--goa-color-greyscale-200, #e0e0e0); + color: var(--goa-color-greyscale-700, #444); +} + +.search-result-badge--experimental { + background: var(--goa-color-status-info-light, #cce5ff); + color: var(--goa-color-status-info-dark, #004085); +} + +.search-result-badge--deprecated { + background: var(--goa-color-status-emergency-light, #f8d7da); + color: var(--goa-color-status-emergency-dark, #721c24); +} + +/* ========================================================================== + Show More Button + ========================================================================== */ + +.search-results-more { + padding: var(--goa-space-m) var(--goa-space-l); + border-top: 1px solid var(--goa-color-greyscale-200, #e0e0e0); +} + +.search-results-more-button { + width: 100%; + padding: var(--goa-space-s) var(--goa-space-m); + font: var(--goa-typography-body-m); + color: var(--goa-color-interactive-default, #0070c4); + background: none; + border: 1px solid var(--goa-color-greyscale-200, #e0e0e0); + border-radius: 4px; + cursor: pointer; + transition: background-color 100ms ease; +} + +.search-results-more-button:hover { + background: var(--goa-color-greyscale-100, #f5f5f5); +} + +.search-results-more-button:focus-visible { + outline: 2px solid var(--goa-color-interactive-focus, #0070c4); + outline-offset: 2px; +} + +/* ========================================================================== + Filter Badge (in search input) + ========================================================================== */ + +.search-input-filter-badge { + display: inline-flex; + align-items: center; + gap: var(--goa-space-2xs); + padding: var(--goa-space-3xs) var(--goa-space-xs); + background: var(--goa-color-interactive-default, #0070c4); + color: white; + font: var(--goa-typography-body-xs); + font-size: 12px; + border: none; + border-radius: 4px; + cursor: pointer; + flex-shrink: 0; + transition: background-color 100ms ease; +} + +.search-input-filter-badge:hover { + background: var(--goa-color-interactive-hover, #0059a3); +} + +.search-input-filter-badge:focus-visible { + outline: 2px solid var(--goa-color-interactive-focus, #0070c4); + outline-offset: 2px; +} + +.search-input-filter-badge-text { + white-space: nowrap; +} + +.search-input-filter-badge-x { + font-size: 14px; + line-height: 1; + opacity: 0.8; +} + +.search-input-filter-badge:hover .search-input-filter-badge-x { + opacity: 1; +} + +/* ========================================================================== + Filter Hints Dropdown + ========================================================================== */ + +.search-filter-hints { + padding: var(--goa-space-xs) 0; + border-top: 1px solid var(--goa-color-greyscale-200, #e0e0e0); +} + +.search-filter-hints-header { + padding: var(--goa-space-xs) var(--goa-space-l); + font: var(--goa-typography-body-xs); + font-size: 11px; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--goa-color-greyscale-500, #666); +} + +.search-filter-hints-list { + list-style: none; + margin: 0; + padding: 0; +} + +.search-filter-hints-item { + padding: var(--goa-space-s) var(--goa-space-l); + cursor: pointer; + transition: background-color 100ms ease; +} + +.search-filter-hints-item:hover, +.search-filter-hints-item[data-selected="true"] { + background: var(--goa-color-greyscale-100, #f5f5f5); +} + +.search-filter-hints-item--disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.search-filter-hints-item--disabled:hover { + background: transparent; +} + +.search-filter-hints-item-main { + display: flex; + align-items: center; + gap: var(--goa-space-xs); + margin-bottom: var(--goa-space-3xs); +} + +.search-filter-hints-command { + font: var(--goa-typography-body-m); + font-weight: 600; + color: var(--goa-color-interactive-default, #0070c4); +} + +.search-filter-hints-alias { + font: var(--goa-typography-body-s); + color: var(--goa-color-greyscale-500, #666); +} + +.search-filter-hints-description { + font: var(--goa-typography-body-s); + color: var(--goa-color-greyscale-600, #555); +} + +.search-filter-hints-item--disabled .search-filter-hints-command, +.search-filter-hints-item--disabled .search-filter-hints-description { + color: var(--goa-color-greyscale-500, #666); +} + +.search-filter-hints-footer { + padding: var(--goa-space-s) var(--goa-space-l); + border-top: 1px solid var(--goa-color-greyscale-200, #e0e0e0); + margin-top: var(--goa-space-xs); + font: var(--goa-typography-body-xs); + color: var(--goa-color-greyscale-500, #666); +} + +.search-filter-hints-footer kbd { + display: inline-block; + padding: 0 var(--goa-space-2xs); + font-family: var(--goa-font-family-mono, monospace); + font-size: 11px; + background: var(--goa-color-greyscale-100, #f5f5f5); + border: 1px solid var(--goa-color-greyscale-200, #e0e0e0); + border-radius: 3px; +} + +/* ========================================================================== + Empty State (shown when input is empty) + ========================================================================== */ + +.search-empty-state { + padding: 0; +} + +.search-empty-section { + padding: var(--goa-space-s) 0; +} + +.search-empty-section:not(:last-child) { + border-bottom: 1px solid var(--goa-color-greyscale-200, #e0e0e0); +} + +.search-empty-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--goa-space-xs) var(--goa-space-l); +} + +.search-empty-title { + font: var(--goa-typography-body-xs); + font-size: 11px; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--goa-color-greyscale-500, #666); +} + +.search-empty-clear { + font: var(--goa-typography-body-xs); + font-size: 12px; + color: var(--goa-color-interactive-default, #0070c4); + background: none; + border: none; + cursor: pointer; + padding: var(--goa-space-3xs) var(--goa-space-xs); + border-radius: 4px; +} + +.search-empty-clear:hover { + background: var(--goa-color-greyscale-100, #f5f5f5); + text-decoration: underline; +} + +.search-empty-clear:focus-visible { + outline: 2px solid var(--goa-color-interactive-focus, #0070c4); + outline-offset: 2px; +} + +.search-empty-list { + list-style: none; + margin: 0; + padding: 0; +} + +.search-empty-item { + display: flex; + align-items: center; + gap: var(--goa-space-s); + padding: var(--goa-space-s) var(--goa-space-l); + text-decoration: none; + color: inherit; + cursor: pointer; + transition: background-color 100ms ease; +} + +.search-empty-item:hover { + background: var(--goa-color-greyscale-100, #f5f5f5); +} + +.search-empty-item:focus-visible { + outline: none; + background: var(--goa-color-greyscale-100, #f5f5f5); + box-shadow: inset 0 0 0 2px var(--goa-color-interactive-focus, #0070c4); +} + +.search-empty-icon { + flex-shrink: 0; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + color: var(--goa-color-greyscale-500, #666); + font-size: 14px; +} + +/* History item icons use type-specific icons */ +.search-empty-icon--component::before { + content: '△'; +} + +.search-empty-icon--example::before { + content: '□'; +} + +.search-empty-item-title { + font: var(--goa-typography-body-m); + color: var(--goa-color-interactive-default, #0070c4); +} + +.search-empty-item:hover .search-empty-item-title { + text-decoration: underline; +} + +/* ========================================================================== + No Results State + ========================================================================== */ + +.search-no-results { + padding: var(--goa-space-l) var(--goa-space-l); +} + +.search-no-results-message { + font: var(--goa-typography-body-m); + color: var(--goa-color-greyscale-600, #555); + text-align: center; + padding: var(--goa-space-m) 0; +} + +.search-no-results-query { + font-weight: 600; + color: var(--goa-color-text-default, #333); +} + +.search-no-results-suggestions { + margin-top: var(--goa-space-l); + padding-top: var(--goa-space-m); + border-top: 1px solid var(--goa-color-greyscale-200, #e0e0e0); +} + +.search-no-results-suggestions-header { + font: var(--goa-typography-body-xs); + font-size: 11px; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--goa-color-greyscale-500, #666); + margin-bottom: var(--goa-space-s); +} + +.search-no-results-suggestions-list { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-wrap: wrap; + gap: var(--goa-space-xs); +} + +.search-no-results-suggestion { + font: var(--goa-typography-body-s); + color: var(--goa-color-interactive-default, #0070c4); + background: var(--goa-color-greyscale-100, #f5f5f5); + border: 1px solid var(--goa-color-greyscale-200, #e0e0e0); + border-radius: 4px; + padding: var(--goa-space-2xs) var(--goa-space-s); + cursor: pointer; + transition: background-color 100ms ease, border-color 100ms ease; +} + +.search-no-results-suggestion:hover { + background: var(--goa-color-greyscale-200, #e0e0e0); + border-color: var(--goa-color-greyscale-300, #ccc); +} + +.search-no-results-suggestion:focus-visible { + outline: 2px solid var(--goa-color-interactive-focus, #0070c4); + outline-offset: 2px; +} + +/* ========================================================================== + Standalone Search Page + ========================================================================== */ + +.search-page { + max-width: 700px; + margin: 0 auto; +} + +.search-page-input-container { + display: flex; + align-items: center; + gap: var(--goa-space-s); + padding: var(--goa-space-m) var(--goa-space-l); + background: white; + border: 2px solid var(--goa-color-greyscale-200, #e0e0e0); + border-radius: var(--goa-space-m); + transition: border-color 150ms ease; +} + +.search-page-input-container:focus-within { + border-color: var(--goa-color-interactive-focus, #0070c4); + box-shadow: 0 0 0 3px rgba(0, 112, 196, 0.15); +} + +.search-page-hint-text { + font: var(--goa-typography-body-xs); + color: var(--goa-color-greyscale-500, #666); + white-space: nowrap; +} + +.search-page-results { + margin-top: var(--goa-space-m); + background: white; + border: 1px solid var(--goa-color-greyscale-200, #e0e0e0); + border-radius: var(--goa-space-m); + min-height: 300px; + overflow: hidden; /* Clip child backgrounds to rounded corners */ +} + +/* Error state */ +.search-results-error { + padding: var(--goa-space-xl); + text-align: center; + color: var(--goa-color-status-emergency, #d32f2f); +} + +.search-results-error p { + margin-top: var(--goa-space-s); + font: var(--goa-typography-body-s); + color: var(--goa-color-greyscale-600, #555); +} + +/* Screen reader only utility */ +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +/* Mobile adjustments for search page */ +@media (max-width: 640px) { + .search-page-input-container { + padding: var(--goa-space-s) var(--goa-space-m); + } + + .search-page-hint-text { + display: none; + } + + .search-page-results { + border-radius: var(--goa-space-s); + } + + /* Ensure touch targets are at least 44px (WCAG 2.5.5) */ + .search-result-item { + min-height: 44px; + } + + .search-empty-item { + min-height: 44px; + } + + .search-filter-hints-item { + min-height: 44px; + } + + .search-no-results-suggestion { + min-height: 44px; + display: inline-flex; + align-items: center; + } +} diff --git a/docs/src/components/search/useSearch.ts b/docs/src/components/search/useSearch.ts new file mode 100644 index 0000000000..c574c8d6df --- /dev/null +++ b/docs/src/components/search/useSearch.ts @@ -0,0 +1,395 @@ +/** + * useSearch Hook + * + * Provides client-side full-text search using FlexSearch. + * Fetches the pre-built search index and initializes FlexSearch with field weighting. + * + * Usage: + * const { search, isLoading, error } = useSearch(); + * const results = search('button'); + */ + +import { useState, useEffect, useCallback, useRef } from 'react'; +import FlexSearch from 'flexsearch'; + +// ============================================================================ +// Types +// ============================================================================ + +export interface ComponentEntry { + type: 'component'; + id: string; + name: string; + description?: string; + status: string; + category: string; + tags: string[]; + slug: string; +} + +export interface ExampleEntry { + type: 'example'; + id: string; + title: string; + description?: string; + status: string; + categories: string[]; + tags: string[]; + components: string[]; + scale: string; + userType: string; + slug: string; +} + +export type SearchEntry = ComponentEntry | ExampleEntry; + +/** + * SearchResult is a SearchEntry with an additional score property. + * Using intersection type (not interface extends) to properly work with union types. + */ +export type SearchResult = SearchEntry & { + /** Search relevance score (higher = more relevant) */ + score: number; +}; + +/** Filter type for limiting search results */ +export type SearchFilter = 'component' | 'example' | null; + +interface UseSearchReturn { + /** Search function - returns results sorted by relevance and status */ + search: (query: string, filter?: SearchFilter) => SearchResult[]; + /** Whether the search index is still loading */ + isLoading: boolean; + /** Error message if index failed to load */ + error: string | null; + /** All entries (for browsing without search) */ + entries: SearchEntry[]; +} + +// ============================================================================ +// Status Priority +// ============================================================================ + +/** + * Type priority for sorting results. + * Components should appear before examples for the same query. + * Lower number = higher priority (appears first). + */ +const TYPE_PRIORITY: Record = { + component: 0, + example: 1, +}; + +function getTypePriority(type: string): number { + return TYPE_PRIORITY[type] ?? 2; +} + +/** + * Status priority for sorting results. + * Lower number = higher priority (appears first). + */ +const STATUS_PRIORITY: Record = { + stable: 0, + published: 0, + beta: 1, + experimental: 2, + draft: 3, + deprecated: 4, +}; + +function getStatusPriority(status: string): number { + return STATUS_PRIORITY[status] ?? 5; +} + +// ============================================================================ +// FlexSearch Setup +// ============================================================================ + +/** + * Create a FlexSearch index with field weighting. + * + * FlexSearch uses a Document index to search across multiple fields. + * We weight fields differently: + * - name/title: highest (exact matches matter most) + * - tags: high (categorization is important) + * - description: medium + * - components (for examples): medium + */ +function createSearchIndex() { + // FlexSearch Document index for multi-field search + return new FlexSearch.Document({ + // Tokenize for partial matching + tokenize: 'forward', + // Enable scoring + resolution: 9, + // Document fields to index + document: { + id: 'id', + index: [ + // Primary fields (highest weight via boost) + { + field: 'name', + tokenize: 'forward', + resolution: 9, + }, + { + field: 'title', + tokenize: 'forward', + resolution: 9, + }, + // Secondary fields + { + field: 'description', + tokenize: 'forward', + resolution: 5, + }, + { + field: 'tags', + tokenize: 'forward', + resolution: 7, + }, + { + field: 'components', + tokenize: 'forward', + resolution: 6, + }, + { + field: 'category', + tokenize: 'strict', + resolution: 4, + }, + { + field: 'categories', + tokenize: 'strict', + resolution: 4, + }, + ], + // Store these fields for retrieval + // Using explicit field list for TypeScript compatibility + store: ['id', 'type', 'name', 'title', 'description', 'status', 'category', 'categories', 'tags', 'components', 'scale', 'userType', 'slug'], + }, + }); +} + +// ============================================================================ +// Module-level cache (persists across component mounts) +// ============================================================================ + +interface SearchCache { + index: ReturnType; + entryMap: Map; + entries: SearchEntry[]; +} + +let searchCache: SearchCache | null = null; +let cachePromise: Promise | null = null; + +/** + * Load and cache the search index. Returns cached data if available. + */ +async function loadSearchIndex(): Promise { + // Return cached data if available + if (searchCache) { + return searchCache; + } + + // Return pending promise if already loading + if (cachePromise) { + return cachePromise; + } + + // Fetch and build the index + cachePromise = (async () => { + const response = await fetch('/search-index.json'); + + if (!response.ok) { + throw new Error(`Failed to load search index: ${response.status}`); + } + + const data: SearchEntry[] = await response.json(); + + // Create the FlexSearch index + const index = createSearchIndex(); + + // Add all entries to the index + const entryMap = new Map(); + for (const entry of data) { + // FlexSearch needs a unique ID - combine type and id + const uniqueId = `${entry.type}:${entry.id}`; + entryMap.set(uniqueId, entry); + + // Add to index with the data FlexSearch needs + index.add({ + ...entry, + id: uniqueId, + tags: entry.tags, + name: entry.type === 'component' ? entry.name : '', + category: entry.type === 'component' ? entry.category : '', + title: entry.type === 'example' ? entry.title : '', + categories: entry.type === 'example' ? entry.categories : [], + components: entry.type === 'example' ? entry.components : [], + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any); + } + + searchCache = { index, entryMap, entries: data }; + return searchCache; + })().catch((error) => { + // Clear the cached promise so the next call will retry + cachePromise = null; + throw error; + }); + + return cachePromise; +} + +// ============================================================================ +// Hook +// ============================================================================ + +export function useSearch(): UseSearchReturn { + const [entries, setEntries] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [error, setError] = useState(null); + + // Use ref for the index to avoid re-renders + const indexRef = useRef | null>(null); + // Map for quick entry lookup + const entryMapRef = useRef>(new Map()); + + // Load the search index on mount (uses cache if available) + useEffect(() => { + // If cache exists, use it immediately + if (searchCache) { + indexRef.current = searchCache.index; + entryMapRef.current = searchCache.entryMap; + setEntries(searchCache.entries); + setIsLoading(false); + return; + } + + // Otherwise, load the index + loadSearchIndex() + .then((cache) => { + indexRef.current = cache.index; + entryMapRef.current = cache.entryMap; + setEntries(cache.entries); + setIsLoading(false); + }) + .catch((err) => { + console.error('Failed to load search index:', err); + setError(err instanceof Error ? err.message : 'Unknown error'); + setIsLoading(false); + }); + }, []); + + /** + * Search for entries matching the query. + * + * Returns results sorted by: + * 1. Search relevance score (from FlexSearch) + * 2. Status priority (stable/published first) + * + * @param query - Search query string + * @param filter - Optional filter to limit results to 'component' or 'example' + */ + const search = useCallback((query: string, filter?: SearchFilter): SearchResult[] => { + if (!indexRef.current || !query.trim()) { + return []; + } + + // Search across all indexed fields + // FlexSearch returns results per field, we need to merge them + const searchResults = indexRef.current.search(query, { + limit: 50, + enrich: true, + }); + + // Collect unique results with scores + const scoreMap = new Map(); + + // FlexSearch returns array of field results + for (const fieldResult of searchResults) { + // Each field result has a `result` array + const results = fieldResult.result; + for (let i = 0; i < results.length; i++) { + const result = results[i]; + // Result can be string, number, or object with id property + const id = typeof result === 'string' || typeof result === 'number' + ? String(result) + : (result as { id: string }).id; + // Score based on position (earlier = higher score) and field + // Field importance is already handled by resolution + const positionScore = 1 - (i / results.length) * 0.5; + const currentScore = scoreMap.get(id) || 0; + scoreMap.set(id, currentScore + positionScore); + } + } + + // Convert to results array with scoring boosts + const queryLower = query.toLowerCase().trim(); + + const results: SearchResult[] = []; + for (const [id, score] of scoreMap) { + const entry = entryMapRef.current.get(id); + if (entry) { + let finalScore = score; + + // Exact name match boost: if query matches component/example name exactly + // "button" query + "Button" component = exact match = big boost + const entryName = entry.type === 'component' + ? (entry as ComponentEntry).name + : (entry as ExampleEntry).title; + + if (entryName.toLowerCase() === queryLower) { + // Exact match - this is almost certainly what they want + finalScore += 10; + } else if (entryName.toLowerCase().startsWith(queryLower)) { + // Name starts with query - also a strong signal + // "but" query + "Button" component = starts with = medium boost + finalScore += 3; + } + + // Small boost for components over examples (tiebreaker) + if (entry.type === 'component') { + finalScore += 0.5; + } + + results.push({ + ...entry, + score: finalScore, + }); + } + } + + // Sort by: score (includes type boost) → status + results.sort((a, b) => { + // First by score (component boost already included) + const scoreDiff = b.score - a.score; + if (Math.abs(scoreDiff) > 0.05) { + return scoreDiff; + } + + // Then by status priority (stable/published first) + const aPriority = getStatusPriority(a.status); + const bPriority = getStatusPriority(b.status); + return aPriority - bPriority; + }); + + // Apply filter if specified + if (filter) { + return results.filter(result => result.type === filter); + } + + return results; + }, []); + + return { + search, + isLoading, + error, + entries, + }; +} + +export default useSearch; diff --git a/docs/src/components/search/useSearchHistory.ts b/docs/src/components/search/useSearchHistory.ts new file mode 100644 index 0000000000..03dad36a17 --- /dev/null +++ b/docs/src/components/search/useSearchHistory.ts @@ -0,0 +1,152 @@ +/** + * useSearchHistory Hook + * + * Manages recent search history in localStorage. + * Tracks: query, clicked result (id, type, title), timestamp. + * Keeps the last 5 searches. + * + * Usage: + * const { history, addToHistory, clearHistory } = useSearchHistory(); + */ + +import { useState, useCallback, useEffect } from 'react'; + +// ============================================================================ +// Types +// ============================================================================ + +export interface HistoryItem { + /** The result that was clicked */ + id: string; + type: 'component' | 'example'; + title: string; + slug: string; + /** Category slug for components (e.g., 'inputs-and-actions') */ + category?: string; + /** Search query that led to this result (optional for direct clicks) */ + query?: string; + /** When the search occurred */ + timestamp: number; +} + +interface UseSearchHistoryReturn { + /** Recent search history, most recent first */ + history: HistoryItem[]; + /** Add a result to history */ + addToHistory: (item: Omit) => void; + /** Clear all history */ + clearHistory: () => void; +} + +// ============================================================================ +// Constants +// ============================================================================ + +const STORAGE_KEY = 'goa-ds-recent-searches'; +const MAX_HISTORY_ITEMS = 5; + +// ============================================================================ +// Helper Functions +// ============================================================================ + +/** + * Safely read history from localStorage. + */ +function readHistory(): HistoryItem[] { + if (typeof window === 'undefined') return []; + + try { + const stored = localStorage.getItem(STORAGE_KEY); + if (!stored) return []; + + const parsed = JSON.parse(stored); + if (!Array.isArray(parsed)) return []; + + // Validate each item has required fields + return parsed.filter( + (item): item is HistoryItem => + typeof item === 'object' && + item !== null && + typeof item.id === 'string' && + typeof item.type === 'string' && + typeof item.title === 'string' && + typeof item.slug === 'string' && + typeof item.timestamp === 'number' + ); + } catch { + return []; + } +} + +/** + * Safely write history to localStorage. + */ +function writeHistory(history: HistoryItem[]): void { + if (typeof window === 'undefined') return; + + try { + localStorage.setItem(STORAGE_KEY, JSON.stringify(history)); + } catch (error) { + // localStorage might be full or disabled + console.warn('Failed to save search history:', error); + } +} + +// ============================================================================ +// Hook +// ============================================================================ + +export function useSearchHistory(): UseSearchHistoryReturn { + const [history, setHistory] = useState([]); + + // Load history from localStorage on mount + useEffect(() => { + setHistory(readHistory()); + }, []); + + /** + * Add a clicked result to history. + * Deduplicates by id+type, moves existing items to top. + * Limits to MAX_HISTORY_ITEMS. + */ + const addToHistory = useCallback((item: Omit) => { + setHistory(prev => { + // Create the new item with timestamp + const newItem: HistoryItem = { + ...item, + timestamp: Date.now(), + }; + + // Remove any existing item with same id+type (dedup) + const filtered = prev.filter( + h => !(h.id === item.id && h.type === item.type) + ); + + // Add new item at the start, limit to max items + const updated = [newItem, ...filtered].slice(0, MAX_HISTORY_ITEMS); + + // Persist to localStorage + writeHistory(updated); + + return updated; + }); + }, []); + + /** + * Clear all search history. + */ + const clearHistory = useCallback(() => { + setHistory([]); + if (typeof window !== 'undefined') { + localStorage.removeItem(STORAGE_KEY); + } + }, []); + + return { + history, + addToHistory, + clearHistory, + }; +} + +export default useSearchHistory; diff --git a/docs/src/layouts/BaseLayout.astro b/docs/src/layouts/BaseLayout.astro index 3ef643ec52..702e762f49 100644 --- a/docs/src/layouts/BaseLayout.astro +++ b/docs/src/layouts/BaseLayout.astro @@ -3,6 +3,9 @@ import '@abgov/web-components/index.css'; import '@design-tokens/tokens.css'; +// Global search modal (available on all pages) +import { SearchModal } from '../components/search'; + interface Props { title: string; description?: string; @@ -240,6 +243,8 @@ const { title, description, page } = Astro.props; + + diff --git a/docs/src/pages/foundations/index.astro b/docs/src/pages/foundations/index.astro index 5837c38e31..eef052ee6a 100644 --- a/docs/src/pages/foundations/index.astro +++ b/docs/src/pages/foundations/index.astro @@ -2,8 +2,7 @@ /** * Foundations - Landing Page * - * Placeholder demonstrating the DocumentationPageLayout template. - * Content will be migrated from existing documentation in Brief 30. + * Core design principles and guidelines for the Government of Alberta Design System. */ import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; --- @@ -19,13 +18,6 @@ import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro ensure consistency across all Government of Alberta digital services. - - This page demonstrates the documentation template. Detailed foundations content will be - migrated from the current design system website in a future update. -

    -
    View current Foundations documentation - -

    Design principles

    Our design principles guide every decision we make when building government services. diff --git a/docs/src/pages/index.astro b/docs/src/pages/index.astro index 8355c1bf0a..f1ac0a1040 100644 --- a/docs/src/pages/index.astro +++ b/docs/src/pages/index.astro @@ -21,6 +21,20 @@ import CardLite from '../components/CardLite.astro';

    Build on the research and experience of other service teams by using shared components, examples, tokens, and templates.

    + +
    @@ -168,6 +182,60 @@ import CardLite from '../components/CardLite.astro'; max-width: 550px; } + /* Hero Search Trigger */ + .hero-search-trigger { + display: inline-flex; + align-items: center; + gap: var(--goa-space-s); + width: 100%; + max-width: 500px; + margin-top: var(--goa-space-xl); + padding: var(--goa-space-s) var(--goa-space-m); + background: rgba(255, 255, 255, 0.85); + border: 1px solid var(--goa-color-greyscale-300); + border-radius: var(--goa-border-radius-m); + font: var(--goa-typography-body-m); + cursor: pointer; + color: var(--goa-color-text-secondary); + text-align: left; + transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; + } + + .hero-search-trigger:hover { + background: rgba(255, 255, 255, 0.95); + border-color: var(--goa-color-greyscale-black); + box-shadow: inset 0 0 0 1px var(--goa-color-greyscale-black); + } + + .hero-search-trigger:focus-visible { + outline: 3px solid var(--goa-color-interactive-focus); + outline-offset: 2px; + } + + .hero-search-icon { + flex-shrink: 0; + color: var(--goa-color-text-secondary); + } + + .hero-search-trigger span { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .hero-search-trigger kbd { + flex-shrink: 0; + font-family: inherit; + font-size: 0.75rem; + line-height: 1; + padding: var(--goa-space-2xs) var(--goa-space-xs); + background: var(--goa-color-greyscale-100); + border: 1px solid var(--goa-color-greyscale-200); + border-radius: 6px; + color: var(--goa-color-greyscale-800); + } + /* Main Content - White background */ .ds-main-content { background: white; @@ -288,6 +356,12 @@ import CardLite from '../components/CardLite.astro'; max-width: 100%; } + .hero-search-trigger { + max-width: 500px; + margin-left: auto; + margin-right: auto; + } + .ds-main-content { padding: var(--goa-space-3xl) var(--goa-space-m); } @@ -340,6 +414,17 @@ import CardLite from '../components/CardLite.astro'; max-width: 200px; } + .hero-search-trigger { + max-width: none; + margin-left: 0; + margin-right: 0; + margin-bottom: var(--goa-space-xl); + } + + .hero-search-trigger kbd { + display: none; + } + .ds-main-content { padding: var(--goa-space-2xl) var(--goa-space-xs); } diff --git a/docs/src/pages/search.astro b/docs/src/pages/search.astro new file mode 100644 index 0000000000..21a3b75f0b --- /dev/null +++ b/docs/src/pages/search.astro @@ -0,0 +1,160 @@ +--- +/** + * Search Page + * + * Standalone search page for direct URL access. + * - Provides fallback search access when modal isn't available + * - Supports URL parameters: /search?q=button + * - Good for mobile, SEO, and sharing search links + */ +import BaseLayout from '../layouts/BaseLayout.astro'; +import { SiteNav } from '../components/SiteNav'; +import { MobileHeader } from '../components/MobileHeader'; +import { SearchPage } from '../components/search'; + +// Get query from URL parameters +const url = new URL(Astro.request.url); +const initialQuery = url.searchParams.get('q') || ''; +--- + + +
    +
    + + + + +
    + +
    + +
    + +
    +
    +

    Search

    +

    + Find components, patterns, and examples in the GoA Design System. +

    +
    + + +
    +
    +
    +
    +
    + + diff --git a/docs/src/scripts/build-search-index.ts b/docs/src/scripts/build-search-index.ts new file mode 100644 index 0000000000..3b2258ff69 --- /dev/null +++ b/docs/src/scripts/build-search-index.ts @@ -0,0 +1,306 @@ +/** + * Build Search Index Script + * + * Extracts searchable content from MDX files and outputs a JSON index. + * Run with: npm run build:search-index + * + * The index is consumed by useSearch.ts at runtime for client-side search. + */ + +import { readFileSync, writeFileSync, readdirSync, statSync, existsSync, mkdirSync } from 'node:fs'; +import { join, basename, dirname } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +// Get directory paths relative to this script +// Script is in docs/src/scripts/, so go up two levels to docs/ +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const ROOT = join(__dirname, '../..'); + +// Content directories +const COMPONENTS_DIR = join(ROOT, 'src/content/components'); +const EXAMPLES_DIR = join(ROOT, 'src/content/examples'); +const OUTPUT_FILE = join(ROOT, 'public/search-index.json'); + +// ============================================================================ +// Types +// ============================================================================ + +interface ComponentEntry { + type: 'component'; + id: string; // filename without .mdx + name: string; + description?: string; + status: string; + category: string; + tags: string[]; + slug: string; +} + +interface ExampleEntry { + type: 'example'; + id: string; + title: string; + description?: string; + status: string; + categories: string[]; + tags: string[]; + components: string[]; // What components this example uses + scale: string; + userType: string; + slug: string; +} + +type SearchEntry = ComponentEntry | ExampleEntry; + +// ============================================================================ +// Frontmatter Parsing +// ============================================================================ + +/** + * Extract YAML frontmatter from MDX content. + * + * MDX files have frontmatter between --- delimiters at the top: + * --- + * name: Button + * status: stable + * --- + * + * This is a simple parser that handles the common cases without + * pulling in a full YAML library. + */ +function parseFrontmatter(content: string): { frontmatter: Record; body: string } { + const frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---/; + const match = content.match(frontmatterRegex); + + if (!match) { + return { frontmatter: {}, body: content }; + } + + const yamlContent = match[1]; + const body = content.slice(match[0].length).trim(); + + // Simple YAML parser for our use case + const frontmatter: Record = {}; + let currentKey: string | null = null; + let currentArray: string[] | null = null; + + for (const line of yamlContent.split('\n')) { + // Array item (starts with " - ") + if (line.match(/^\s+-\s+/)) { + const value = line.replace(/^\s+-\s+/, '').trim(); + if (currentArray) { + currentArray.push(value); + } + continue; + } + + // Key-value pair + const kvMatch = line.match(/^(\w+):\s*(.*)/); + if (kvMatch) { + // Save previous array if any + if (currentKey && currentArray) { + frontmatter[currentKey] = currentArray; + } + + currentKey = kvMatch[1]; + const value = kvMatch[2].trim(); + + // Check if this starts an array (empty value followed by array items) + if (value === '' || value === '|') { + currentArray = []; + } else { + currentArray = null; + // Remove quotes if present + frontmatter[currentKey] = value.replace(/^["']|["']$/g, ''); + } + } + } + + // Don't forget the last array + if (currentKey && currentArray) { + frontmatter[currentKey] = currentArray; + } + + return { frontmatter, body }; +} + +/** + * Extract the first paragraph from MDX body content. + * Used as description for examples when not explicitly provided. + */ +function extractFirstParagraph(body: string): string | undefined { + // Skip headings and empty lines, find first paragraph + const lines = body.split('\n'); + let paragraph = ''; + + for (const line of lines) { + const trimmed = line.trim(); + + // Skip empty lines at start + if (!paragraph && !trimmed) continue; + + // Skip headings + if (trimmed.startsWith('#')) continue; + + // Found content + if (trimmed) { + paragraph += (paragraph ? ' ' : '') + trimmed; + } else if (paragraph) { + // Empty line after content = end of paragraph + break; + } + } + + return paragraph || undefined; +} + +// ============================================================================ +// File Processing +// ============================================================================ + +/** + * Process a component MDX file into a search entry. + */ +function processComponent(filePath: string): ComponentEntry | null { + try { + const content = readFileSync(filePath, 'utf-8'); + const { frontmatter } = parseFrontmatter(content); + + const id = basename(filePath, '.mdx'); + + // Skip hidden components + if (frontmatter.hidden === true || frontmatter.hidden === 'true') { + return null; + } + + return { + type: 'component', + id, + name: String(frontmatter.name || id), + description: frontmatter.description ? String(frontmatter.description) : undefined, + status: String(frontmatter.status || 'stable'), + category: String(frontmatter.category || 'utilities'), + tags: Array.isArray(frontmatter.tags) ? frontmatter.tags.map(String) : [], + slug: String(frontmatter.slug || id), + }; + } catch (error) { + console.error(`Error processing component ${filePath}:`, error); + return null; + } +} + +/** + * Process an example MDX file into a search entry. + * Examples live in subdirectories: examples/[name]/index.mdx + */ +function processExample(filePath: string): ExampleEntry | null { + try { + const content = readFileSync(filePath, 'utf-8'); + const { frontmatter, body } = parseFrontmatter(content); + + // Get ID from directory name + const dirName = basename(dirname(filePath)); + const id = String(frontmatter.id || dirName); + + // Extract description from body if not in frontmatter + const description = frontmatter.description + ? String(frontmatter.description) + : extractFirstParagraph(body); + + return { + type: 'example', + id, + title: String(frontmatter.title || id), + description, + status: String(frontmatter.status || 'published'), + categories: Array.isArray(frontmatter.categories) + ? frontmatter.categories.map(String) + : [], + tags: Array.isArray(frontmatter.tags) ? frontmatter.tags.map(String) : [], + components: Array.isArray(frontmatter.components) + ? frontmatter.components.map(String) + : [], + scale: String(frontmatter.scale || 'interaction'), + userType: String(frontmatter.userType || 'both'), + slug: String(frontmatter.slug || id), + }; + } catch (error) { + console.error(`Error processing example ${filePath}:`, error); + return null; + } +} + +/** + * Recursively find all MDX files in a directory. + */ +function findMdxFiles(dir: string): string[] { + const files: string[] = []; + + if (!existsSync(dir)) { + console.warn(`Directory not found: ${dir}`); + return files; + } + + for (const entry of readdirSync(dir)) { + const fullPath = join(dir, entry); + const stat = statSync(fullPath); + + if (stat.isDirectory()) { + files.push(...findMdxFiles(fullPath)); + } else if (entry.endsWith('.mdx')) { + files.push(fullPath); + } + } + + return files; +} + +// ============================================================================ +// Main +// ============================================================================ + +function main() { + console.log('Building search index...\n'); + + const entries: SearchEntry[] = []; + + // Process components + console.log('Processing components...'); + const componentFiles = findMdxFiles(COMPONENTS_DIR); + for (const file of componentFiles) { + const entry = processComponent(file); + if (entry) { + entries.push(entry); + } + } + console.log(` Found ${componentFiles.length} files, indexed ${entries.filter(e => e.type === 'component').length} components`); + + // Process examples + console.log('Processing examples...'); + const exampleFiles = findMdxFiles(EXAMPLES_DIR); + const exampleCount = entries.length; + for (const file of exampleFiles) { + const entry = processExample(file); + if (entry) { + entries.push(entry); + } + } + console.log(` Found ${exampleFiles.length} files, indexed ${entries.length - exampleCount} examples`); + + // Ensure public directory exists + const publicDir = dirname(OUTPUT_FILE); + if (!existsSync(publicDir)) { + mkdirSync(publicDir, { recursive: true }); + } + + // Write output + writeFileSync(OUTPUT_FILE, JSON.stringify(entries, null, 2)); + console.log(`\nWrote ${entries.length} entries to ${OUTPUT_FILE}`); + + // Show sample + console.log('\nSample entries:'); + console.log(JSON.stringify(entries.slice(0, 2), null, 2)); +} + +main(); From 2c6a80a7e684163f832362fd531678cbdb94eb09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 00:13:46 +0000 Subject: [PATCH 026/103] chore(deps): bump svgo Bumps and [svgo](https://github.com/svg/svgo). These dependencies needed to be updated together. Updates `svgo` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/svg/svgo/releases) - [Commits](https://github.com/svg/svgo/compare/v4.0.0...v4.0.1) Updates `svgo` from 3.3.2 to 3.3.3 - [Release notes](https://github.com/svg/svgo/releases) - [Commits](https://github.com/svg/svgo/compare/v4.0.0...v4.0.1) --- updated-dependencies: - dependency-name: svgo dependency-version: 4.0.1 dependency-type: indirect - dependency-name: svgo dependency-version: 3.3.3 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2a2a587893..cc80bf8cf5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18852,16 +18852,6 @@ "node": ">= 10" } }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", @@ -22283,9 +22273,9 @@ } }, "node_modules/astro/node_modules/svgo": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", - "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", + "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", "license": "MIT", "dependencies": { "commander": "^11.1.0", @@ -22294,7 +22284,7 @@ "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.1.1", - "sax": "^1.4.1" + "sax": "^1.5.0" }, "bin": { "svgo": "bin/svgo.js" @@ -43544,10 +43534,13 @@ } }, "node_modules/sax": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", - "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", - "license": "BlueOak-1.0.0" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.5.0.tgz", + "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } }, "node_modules/saxes": { "version": "6.0.0", @@ -46031,19 +46024,19 @@ "license": "MIT" }, "node_modules/svgo": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", - "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz", + "integrity": "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==", "dev": true, "license": "MIT", "dependencies": { - "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", - "picocolors": "^1.0.0" + "picocolors": "^1.0.0", + "sax": "^1.5.0" }, "bin": { "svgo": "bin/svgo" From b9f38a253c8755bafdab3b4ac3eacb4c7a535cc7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 18:25:10 +0000 Subject: [PATCH 027/103] chore(deps): bump @tootallnate/once, jest-environment-jsdom and jest-preset-angular Removes [@tootallnate/once](https://github.com/TooTallNate/once). It's no longer used after updating ancestor dependencies [@tootallnate/once](https://github.com/TooTallNate/once), [jest-environment-jsdom](https://github.com/jestjs/jest/tree/HEAD/packages/jest-environment-jsdom) and [jest-preset-angular](https://github.com/thymikee/jest-preset-angular). These dependencies need to be updated together. Removes `@tootallnate/once` Updates `jest-environment-jsdom` from 29.7.0 to 30.2.0 - [Release notes](https://github.com/jestjs/jest/releases) - [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jestjs/jest/commits/v30.2.0/packages/jest-environment-jsdom) Updates `jest-preset-angular` from 14.6.2 to 16.1.1 - [Release notes](https://github.com/thymikee/jest-preset-angular/releases) - [Changelog](https://github.com/thymikee/jest-preset-angular/blob/main/CHANGELOG.md) - [Commits](https://github.com/thymikee/jest-preset-angular/compare/v14.6.2...v16.1.1) --- updated-dependencies: - dependency-name: "@tootallnate/once" dependency-version: dependency-type: indirect - dependency-name: jest-environment-jsdom dependency-version: 30.2.0 dependency-type: direct:development - dependency-name: jest-preset-angular dependency-version: 16.1.1 dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- package-lock.json | 779 ++++++++++++++++++++++++++-------------------- package.json | 4 +- 2 files changed, 442 insertions(+), 341 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc80bf8cf5..3ce03be371 100644 --- a/package-lock.json +++ b/package-lock.json @@ -94,8 +94,8 @@ "eslint-plugin-react-hooks": "5.0.0", "glob": "^12.0.0", "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "jest-preset-angular": "^14.2.4", + "jest-environment-jsdom": "^30.2.0", + "jest-preset-angular": "^16.1.1", "jiti": "2.4.2", "jsdom": "^26.1.0", "jsonc-eslint-parser": "^2.1.0", @@ -6576,6 +6576,222 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/environment-jsdom-abstract": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.2.0.tgz", + "integrity": "sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/jsdom": "^21.1.7", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "canvas": "^3.0.0", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/@jest/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", @@ -18842,16 +19058,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", @@ -19260,9 +19466,9 @@ "license": "MIT" }, "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, "license": "MIT", "dependencies": { @@ -21292,14 +21498,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/abbrev": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", @@ -21336,17 +21534,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, "node_modules/acorn-import-phases": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", @@ -25133,13 +25320,6 @@ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "license": "CC0-1.0" }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true, - "license": "MIT" - }, "node_modules/cssstyle": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", @@ -25731,20 +25911,6 @@ ], "license": "BSD-2-Clause" }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -26576,39 +26742,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", @@ -31491,26 +31624,23 @@ "license": "MIT" }, "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.2.0.tgz", + "integrity": "sha512-zbBTiqr2Vl78pKp/laGBREYzbZx9ZtqPjOK4++lL4BNDhxRnahg51HtoDrk9/VjIy9IthNEWdKVd7H5bqBhiWQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", + "@jest/environment": "30.2.0", + "@jest/environment-jsdom-abstract": "30.2.0", + "@types/jsdom": "^21.1.7", "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" + "jsdom": "^26.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^3.0.0" }, "peerDependenciesMeta": { "canvas": { @@ -31518,250 +31648,193 @@ } } }, - "node_modules/jest-environment-jsdom/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, "license": "MIT", "dependencies": { - "debug": "4" + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" }, "engines": { - "node": ">= 6.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", "dev": true, "license": "MIT", "dependencies": { - "cssom": "~0.3.6" + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-environment-jsdom/node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "node_modules/jest-environment-jsdom/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">= 6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/jest-environment-jsdom/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } + "license": "MIT" }, - "node_modules/jest-environment-jsdom/node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/jest-environment-jsdom/node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "entities": "^6.0.0" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/jest-environment-jsdom/node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "node_modules/jest-environment-jsdom/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", "dev": true, "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=14" - } - }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "node_modules/jest-environment-jsdom/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">=12" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "node_modules/jest-environment-jsdom/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } + "license": "MIT" }, "node_modules/jest-environment-node": { "version": "29.7.0", @@ -31990,39 +32063,74 @@ } }, "node_modules/jest-preset-angular": { - "version": "14.6.2", - "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-14.6.2.tgz", - "integrity": "sha512-QWnjfXrnYJX65D+iZXBrdQ0ABHSo6DGvcmL3dGYOdF+V2ZhDlqJwKTmt7nyiOcORPdCL+20P8y+Q1mmnjZTHKQ==", + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-16.1.1.tgz", + "integrity": "sha512-yrvV/86IO2mj3H33xWVEPwmLW9CJIOM7YcMBcwDWa9OXEAW9XM+47no8R06oine9+wH+QWXfFzFR3TG6nX7QRA==", "dev": true, "license": "MIT", "dependencies": { + "@jest/environment-jsdom-abstract": "^30.0.0", "bs-logger": "^0.2.6", - "esbuild-wasm": ">=0.15.13", - "jest-environment-jsdom": "^29.7.0", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0", - "ts-jest": "^29.3.0" + "esbuild-wasm": ">=0.23.0", + "jest-util": "^30.0.0", + "pretty-format": "^30.0.0", + "ts-jest": "^29.4.0" }, "engines": { - "node": "^14.15.0 || >=16.10.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "optionalDependencies": { - "esbuild": ">=0.15.13" + "esbuild": ">=0.23.0" }, "peerDependencies": { - "@angular/compiler-cli": ">=15.0.0 <21.0.0", - "@angular/core": ">=15.0.0 <21.0.0", - "@angular/platform-browser-dynamic": ">=15.0.0 <21.0.0", - "jest": "^29.0.0", - "jsdom": ">=20.0.0", - "typescript": ">=4.8" + "@angular/compiler-cli": ">=19.0.0 <22.0.0", + "@angular/core": ">=19.0.0 <22.0.0", + "@angular/platform-browser": ">=19.0.0 <22.0.0", + "@angular/platform-browser-dynamic": ">=19.0.0 <22.0.0", + "jest": "^30.0.0", + "jsdom": ">=26.0.0", + "typescript": ">=5.5" + } + }, + "node_modules/jest-preset-angular/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" }, - "peerDependenciesMeta": { - "jsdom": { - "optional": true - } + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/jest-preset-angular/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-preset-angular/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-preset-angular/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", @@ -32036,19 +32144,53 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-preset-angular/node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-preset-angular/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/jest-preset-angular/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-preset-angular/node_modules/react-is": { @@ -41499,29 +41641,6 @@ "license": "MIT", "optional": true }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/psl/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -41576,13 +41695,6 @@ ], "license": "MIT" }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -47998,17 +48110,6 @@ "dev": true, "license": "MIT" }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", diff --git a/package.json b/package.json index b6e5d602ee..784ffc6cb8 100644 --- a/package.json +++ b/package.json @@ -92,8 +92,8 @@ "eslint-plugin-react-hooks": "5.0.0", "glob": "^12.0.0", "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "jest-preset-angular": "^14.2.4", + "jest-environment-jsdom": "^30.2.0", + "jest-preset-angular": "^16.1.1", "jiti": "2.4.2", "jsdom": "^26.1.0", "jsonc-eslint-parser": "^2.1.0", From 3be3c17dcace39bce028c86c7949874cc5ac7fa9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Mar 2026 23:51:30 +0000 Subject: [PATCH 028/103] chore(deps-dev): bump immutable from 5.1.4 to 5.1.5 Bumps [immutable](https://github.com/immutable-js/immutable-js) from 5.1.4 to 5.1.5. - [Release notes](https://github.com/immutable-js/immutable-js/releases) - [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/immutable-js/immutable-js/compare/v5.1.4...v5.1.5) --- updated-dependencies: - dependency-name: immutable dependency-version: 5.1.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ce03be371..8e5c51beed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30142,9 +30142,9 @@ } }, "node_modules/immutable": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", - "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", "dev": true, "license": "MIT" }, From 5af63131369e652a10c761ccb4def297fbfce7d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Mar 2026 21:15:37 +0000 Subject: [PATCH 029/103] chore(deps-dev): bump @hono/node-server from 1.19.9 to 1.19.10 Bumps [@hono/node-server](https://github.com/honojs/node-server) from 1.19.9 to 1.19.10. - [Release notes](https://github.com/honojs/node-server/releases) - [Commits](https://github.com/honojs/node-server/compare/v1.19.9...v1.19.10) --- updated-dependencies: - dependency-name: "@hono/node-server" dependency-version: 1.19.10 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8e5c51beed..a7ed92529d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5367,9 +5367,9 @@ } }, "node_modules/@hono/node-server": { - "version": "1.19.9", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.9.tgz", - "integrity": "sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==", + "version": "1.19.10", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.10.tgz", + "integrity": "sha512-hZ7nOssGqRgyV3FVVQdfi+U4q02uB23bpnYpdvNXkYTRRyWx84b7yf1ans+dnJ/7h41sGL3CeQTfO+ZGxuO+Iw==", "dev": true, "license": "MIT", "engines": { From 38be012e1386ad15054b888d3b791b31c9b4b792 Mon Sep 17 00:00:00 2001 From: Dustin Nielsen Date: Fri, 20 Feb 2026 15:23:47 -0700 Subject: [PATCH 030/103] fix(#3455,#3450): Updated top and bottom positioning for Popover --- apps/prs/angular/src/app/app.component.html | 33 +++++++-- apps/prs/angular/src/app/app.routes.ts | 3 + .../routes/bugs/3450/bug3450.component.html | 49 +++++++++++++ .../src/routes/bugs/3450/bug3450.component.ts | 35 +++++++++ apps/prs/react/src/app/app.tsx | 34 ++++++++- apps/prs/react/src/main.tsx | 2 + apps/prs/react/src/routes/bugs/bug3450.tsx | 71 +++++++++++++++++++ .../specs/popover.browser.spec.tsx | 6 +- .../src/components/popover/Popover.svelte | 16 ++--- 9 files changed, 232 insertions(+), 17 deletions(-) create mode 100644 apps/prs/angular/src/routes/bugs/3450/bug3450.component.html create mode 100644 apps/prs/angular/src/routes/bugs/3450/bug3450.component.ts create mode 100644 apps/prs/react/src/routes/bugs/bug3450.tsx diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index 885b9d505d..22b16d09f8 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -1,13 +1,37 @@
    -
    +
    Home - 2878 - Regional Insights - Occupational Insights + bug2720 + Dropdown expanding + ...inside Container + + Interactive super long menu item to test overflow handling lorem ipsum dolor sit + amet + + + Noninteractive super long menu item to test overflow handling lorem ipsum dolor + sit amet + + + Bug 3450 + Bug 3450 + + Super long menu item to test overflow handling lorem ipsum dolor sit amet + + + + Manage account + Request new staff account for a long + System admin + Sign out + Super long menu item to test overflow handling lorem ipsum dolor sit amet + +
    @@ -57,6 +81,7 @@ 3337 - Autocomplete styling 3279 3384 Table v2 sample + 3450 Dropdown expanding inside Container 1328 diff --git a/apps/prs/angular/src/app/app.routes.ts b/apps/prs/angular/src/app/app.routes.ts index 3e11b19234..f7b67f890c 100644 --- a/apps/prs/angular/src/app/app.routes.ts +++ b/apps/prs/angular/src/app/app.routes.ts @@ -43,6 +43,7 @@ import { Bug3281Component } from "../routes/bugs/3281/bug3281.component"; import { Bug3337Component } from "../routes/bugs/3337/bug3337.component"; import { Bug3279Component } from "../routes/bugs/3279/bug3279.component"; import { Bug3384Component } from "../routes/bugs/3384/bug3384.component"; +import { Bug3450Component } from "../routes/bugs/3450/bug3450.component"; import { Feat1328Component } from "../routes/features/feat1328/feat1328.component"; import { Feat1383Component } from "../routes/features/feat1383/feat1383.component"; @@ -119,6 +120,8 @@ export const appRoutes: Route[] = [ { path: "bugs/3337", component: Bug3337Component }, { path: "bugs/3279", component: Bug3279Component }, { path: "bugs/3384", component: Bug3384Component }, + { path: "bugs/3450", component: Bug3450Component }, + // Feature routes { path: "features/1328", component: Feat1328Component }, { path: "features/1383", component: Feat1383Component }, diff --git a/apps/prs/angular/src/routes/bugs/3450/bug3450.component.html b/apps/prs/angular/src/routes/bugs/3450/bug3450.component.html new file mode 100644 index 0000000000..d2b420dba3 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3450/bug3450.component.html @@ -0,0 +1,49 @@ +
    +

    Bug 3450 - Dropdown expanding inside Container

    + + + +

    The GoabDropdown below should expand outside of the container.

    + + + + + + + + +
    + +

    The GoabDatePicker below should expand outside of the container.

    + + + + +
    + +

    Menu Button should open properly also.

    + + + + + + +
    +
    + +

    Testing Directions

    +

    This is a test of GoabPopover not GoabDropdown or GoabDatePicker.

    +
      +
    • + Open the GoabDropdown and GoabDatePicker and verify that they expand outside of the + container. +
    • +
    • + Verify that the GoabDropdown and GoabDatePicker are not cut off by the container. +
    • +
    • + Shrink and expand the window to cause the GoabDropdown and GoabDatePicker to expand + upwards instead. +
    • +
    +
    diff --git a/apps/prs/angular/src/routes/bugs/3450/bug3450.component.ts b/apps/prs/angular/src/routes/bugs/3450/bug3450.component.ts new file mode 100644 index 0000000000..96a357a3d2 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3450/bug3450.component.ts @@ -0,0 +1,35 @@ +import { Component } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { + GoabBlock, + GoabContainer, + GoabDatePicker, + GoabDropdown, + GoabDropdownItem, + GoabFormItem, + GoabMenuAction, + GoabMenuButton, + GoabMenuButtonOnActionDetail, +} from "@abgov/angular-components"; + +@Component({ + standalone: true, + selector: "abgov-bug3450", + templateUrl: "./bug3450.component.html", + imports: [ + CommonModule, + GoabBlock, + GoabContainer, + GoabDatePicker, + GoabDropdown, + GoabDropdownItem, + GoabFormItem, + GoabMenuAction, + GoabMenuButton, + ], +}) +export class Bug3450Component { + onMenuAction(detail: GoabMenuButtonOnActionDetail) { + console.log("Menu action:", detail.action); + } +} diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index 5a0e7b1015..5d55fb0652 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -2,6 +2,7 @@ import { Link, Outlet } from "react-router-dom"; import { GoabAppFooter, GoabAppHeader, + GoabAppHeaderMenu, GoabMicrositeHeader, GoabOneColumnLayout, GoabSideMenu, @@ -12,9 +13,37 @@ import "@abgov/style"; export function App() { return ( -
    +
    - + + Home + + bug2720 + Dropdown expanding + ...inside Container + + Super long menu item to test overflow handling lorem ipsum dolor sit amet + + + + Bug 3450 + Bug 3450 + + Super long menu item to test overflow handling lorem ipsum dolor sit amet + + + + Manage account + Request new staff account + System admin + + Sign out + + + Super long menu item to test overflow handling lorem ipsum dolor sit amet + + +
    3337 Input autocomplete styling 3279 Work Side Menu Key Nav 3384 v2 Table Border + 3450 Dropdown expanding inside Container 1383 Button Filled Icons diff --git a/apps/prs/react/src/main.tsx b/apps/prs/react/src/main.tsx index edf5d1c7df..dc4ded1b4c 100644 --- a/apps/prs/react/src/main.tsx +++ b/apps/prs/react/src/main.tsx @@ -45,6 +45,7 @@ import { Bug3322Route } from "./routes/bugs/bug3322"; import { Bug3281Route } from "./routes/bugs/bug3281"; import { Bug3337Route } from "./routes/bugs/bug3337"; import { Bug3384Route } from "./routes/bugs/bug3384"; +import { Bug3450Route } from "./routes/bugs/bug3450"; import { EverythingRoute } from "./routes/everything"; import { EverythingBRoute } from "./routes/everything-b"; @@ -130,6 +131,7 @@ root.render( } /> } /> } /> + } /> } /> } /> diff --git a/apps/prs/react/src/routes/bugs/bug3450.tsx b/apps/prs/react/src/routes/bugs/bug3450.tsx new file mode 100644 index 0000000000..e63f795bc6 --- /dev/null +++ b/apps/prs/react/src/routes/bugs/bug3450.tsx @@ -0,0 +1,71 @@ +import { + GoabBlock, + GoabContainer, + GoabDatePicker, + GoabDropdown, + GoabDropdownItem, + GoabFormItem, + GoabMenuAction, + GoabMenuButton, +} from "@abgov/react-components"; +import { GoabMenuButtonOnActionDetail } from "@abgov/ui-components-common"; + +export function Bug3450Route() { + function onMenuAction(detail: GoabMenuButtonOnActionDetail) { + console.log("Menu action:", detail.action); + } + + return ( +
    +

    Bug 3450 - Dropdown expanding inside Container

    + + + +

    The GoabDropdown below should expand outside of the container.

    + + + + + + + + +
    + +

    The GoabDatePicker below should expand outside of the container.

    + + + + +
    + +

    Menu Button should open properly also.

    + + + + + + + +
    +
    + +

    Testing Directions

    +

    This is a test of GoabPopover not GoabDropdown or GoabDatePicker.

    +
      +
    • + Open the GoabDropdown and GoabDatePicker and verify that they expand outside of + the container. +
    • +
    • + Verify that the GoabDropdown and GoabDatePicker are not cut off by the + container. +
    • +
    • + Shrink and expand the window to cause the GoabDropdown and GoabDatePicker to + expand upwards instead. +
    • +
    +
    + ); +} diff --git a/libs/react-components/specs/popover.browser.spec.tsx b/libs/react-components/specs/popover.browser.spec.tsx index 5f83402c88..5b16c1d89f 100644 --- a/libs/react-components/specs/popover.browser.spec.tsx +++ b/libs/react-components/specs/popover.browser.spec.tsx @@ -100,7 +100,7 @@ describe("Popover", () => { await vi.waitFor(() => { const popoverContentEl = result.getByTestId("popover-content"); expect(popoverContentEl.element()).toBeTruthy(); - expect(popoverContentEl.element().style.bottom).toBe("auto"); + expect(popoverContentEl.element().style.bottom).toBe(""); }); }); @@ -150,7 +150,7 @@ describe("Popover", () => { const popoverContentEl = result.getByTestId("popover-content"); expect(popoverContentEl.element()).toBeTruthy(); // It should be a number ending with px when opening upwards - expect(popoverContentEl.element().style.bottom).toMatch(/-?\d+px/); + expect(popoverContentEl.element().style.top).toMatch(/-?\d+px/); }); }); @@ -199,7 +199,7 @@ describe("Popover", () => { const popoverContentEl = result.getByTestId("popover-content"); expect(popoverContentEl.element()).toBeTruthy(); // bottom should be set to 'auto' when opening downwards - expect(popoverContentEl.element().style.bottom).toBe("auto"); + expect(popoverContentEl.element().style.bottom).toBe(""); }); }); }); diff --git a/libs/web-components/src/components/popover/Popover.svelte b/libs/web-components/src/components/popover/Popover.svelte index 14d6586dbf..bbad013a7f 100644 --- a/libs/web-components/src/components/popover/Popover.svelte +++ b/libs/web-components/src/components/popover/Popover.svelte @@ -409,6 +409,8 @@ : null; const popoverRect = getBoundingClientRectWithMargins(_popoverEl); + const offsetParent = _popoverEl.offsetParent as HTMLElement | null; + const offsetParentTop = offsetParent?.getBoundingClientRect().top || 0; // exit if the popover hasn't yet been filled if (popoverRect.height < 20) return; @@ -432,9 +434,12 @@ : position === "above"; if (displayOnTop) { - _popoverEl.style.bottom = `${targetRect.height}px`; + const topPos = targetRect.top - popoverRect.height - offsetParentTop; + _popoverEl.style.top = `${topPos}px`; } else { - _popoverEl.style.bottom = "auto"; // In case this is triggered by _sectionHeight is changed + // Clear top/bottom to keep default below-target static positioning. + _popoverEl.style.top = ""; + _popoverEl.style.bottom = ""; } // Move the popover to the left if it is too far to the right and only if there is space to the left @@ -480,12 +485,7 @@ -
    +
    Date: Thu, 5 Mar 2026 20:30:13 +0000 Subject: [PATCH 031/103] chore(deps): bump dompurify from 3.3.1 to 3.3.2 Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.3.1 to 3.3.2. - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/3.3.1...3.3.2) --- updated-dependencies: - dependency-name: dompurify dependency-version: 3.3.2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package-lock.json | 11 +++++++---- package.json | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a7ed92529d..50ad8a6a81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@swc/helpers": "0.5.19", "astro": "^5.16.6", "date-fns": "^3.0.6", - "dompurify": "^3.3.1", + "dompurify": "^3.3.2", "flexsearch": "^0.8.212", "highlight.js": "^11.11.1", "react": "^19.2.3", @@ -25927,10 +25927,13 @@ } }, "node_modules/dompurify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", - "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.2.tgz", + "integrity": "sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==", "license": "(MPL-2.0 OR Apache-2.0)", + "engines": { + "node": ">=20" + }, "optionalDependencies": { "@types/trusted-types": "^2.0.7" } diff --git a/package.json b/package.json index 784ffc6cb8..4d124a137d 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "@astrojs/react": "^4.4.2", "astro": "^5.16.6", "date-fns": "^3.0.6", - "dompurify": "^3.3.1", + "dompurify": "^3.3.2", "flexsearch": "^0.8.212", "highlight.js": "^11.11.1", "@nrwl/jest": "19.5.4", From 29aba734cc0191befe455286e0ec66297607a13c Mon Sep 17 00:00:00 2001 From: Eric Hoff Date: Tue, 17 Feb 2026 10:41:19 -0700 Subject: [PATCH 032/103] feat(#3211): Upgrade Angular to v21 and TypeScript to v5.9 --- .templates/angular/src/app/playground.ts | 2 - apps/prs/angular/src/app/abgov-app.ts | 2 - apps/prs/angular/src/app/app.component.html | 1 + apps/prs/angular/src/app/app.routes.ts | 2 + .../angular/src/app/everything.component.html | 406 +- .../angular/src/app/everything.component.ts | 6 +- .../src/routes/bugs/2331/bug2331.component.ts | 3 +- .../src/routes/bugs/2408/bug2408.component.ts | 4 +- .../routes/bugs/2459/bug2459.component.html | 3 +- .../src/routes/bugs/2459/bug2459.component.ts | 3 +- .../src/routes/bugs/2655/bug2655.component.ts | 3 +- .../routes/bugs/2720/bug2720.component.html | 32 +- .../src/routes/bugs/2720/bug2720.component.ts | 13 +- .../src/routes/bugs/2721/bug2721.component.ts | 4 +- .../src/routes/bugs/2768/bug2768.component.ts | 3 +- .../src/routes/bugs/2782/bug2782.component.ts | 4 +- .../routes/bugs/2821/bug2821.component.html | 46 +- .../src/routes/bugs/2821/bug2821.component.ts | 11 +- .../src/routes/bugs/2837/bug2837.component.ts | 4 +- .../src/routes/bugs/2839/bug2839.component.ts | 4 +- .../src/routes/bugs/2849/bug2849.component.ts | 4 +- .../routes/bugs/2852/bug2852.component.html | 22 +- .../src/routes/bugs/2852/bug2852.component.ts | 3 +- .../src/routes/bugs/2873/bug2873.component.ts | 4 +- .../src/routes/bugs/2892/bug2892.component.ts | 4 +- .../src/routes/bugs/2922/bug2922.component.ts | 4 +- .../src/routes/bugs/2943/bug2943.component.ts | 3 +- .../src/routes/bugs/2948/bug2948.component.ts | 4 +- .../src/routes/bugs/2991/bug2991.component.ts | 4 +- .../routes/bugs/3072/bug3072.component.html | 6 +- .../src/routes/bugs/3072/bug3072.component.ts | 4 +- .../src/routes/bugs/3118/bug3118.component.ts | 11 +- .../routes/bugs/3156/bug3156.component.html | 75 +- .../src/routes/bugs/3156/bug3156.component.ts | 3 +- .../src/routes/bugs/3215/bug3215.component.ts | 4 +- .../src/routes/bugs/3248/bug3248.component.ts | 4 +- .../src/routes/bugs/3275/bug3275.component.ts | 4 +- .../src/routes/bugs/3279/bug3279.component.ts | 2 - .../src/routes/bugs/3281/bug3281.component.ts | 4 +- .../routes/bugs/3384/bug3384.component.html | 4 +- .../src/routes/bugs/3384/bug3384.component.ts | 4 +- .../features/feat1328/feat1328.component.ts | 3 +- .../features/feat1383/feat1383.component.ts | 2 - .../features/feat1547/feat1547.component.ts | 4 +- .../features/feat1813/feat1813.component.html | 3 +- .../features/feat1813/feat1813.component.ts | 4 +- .../features/feat2054/feat2054.component.html | 13 +- .../features/feat2054/feat2054.component.ts | 3 +- .../features/feat2361/feat2361.component.html | 12 +- .../features/feat2361/feat2361.component.ts | 3 - .../features/feat2469/feat2469.component.html | 4 +- .../features/feat2469/feat2469.component.ts | 12 +- .../features/feat2492/feat2492.component.html | 62 +- .../features/feat2492/feat2492.component.ts | 18 +- .../feat2611-tabs-disabled.component.ts | 3 +- .../features/feat2611/feat2611.component.ts | 3 +- .../features/feat2682/feat2682.component.ts | 4 +- .../features/feat2722/feat2722.component.ts | 4 +- .../features/feat2730/feat2730.component.html | 4 +- .../features/feat2730/feat2730.component.ts | 3 +- .../features/feat2829/feat2829.component.ts | 12 +- .../features/feat3102/feat3102.component.ts | 10 +- .../features/feat3137/feat3137.component.ts | 16 +- .../features/feat3211/feat3211.component.html | 59 + .../features/feat3211/feat3211.component.ts | 45 + .../features/feat3229/feat3229.component.ts | 2 - .../features/feat3241/feat3241.component.ts | 2 - .../features/feat3306/feat3306.component.html | 93 +- .../features/feat3306/feat3306.component.ts | 2 - .../features/feat3370/feat3370.component.ts | 3 +- .../features/feat3396/feat3396.component.ts | 5 +- .../featV2Checkbox.component.html | 81 +- .../featV2Checkbox.component.ts | 4 +- .../examples/add-a-filter-chip/angular.html | 3 +- .../angular.html | 3 +- .../angular.html | 7 +- .../filter-data-in-a-table/angular.html | 115 +- .../examples/remove-a-filter/angular.html | 3 +- .../angular.html | 27 +- .../angular.html | 16 +- .../angular.html | 4 +- .../angular.html | 4 +- .../show-status-in-a-table/angular.html | 4 +- .../sort-data-in-a-table/angular.html | 4 +- .../type-to-create-a-new-filter/angular.html | 13 +- jest.preset.js | 2 +- libs/angular-components/jest.config.ts | 4 + libs/angular-components/package.json | 6 +- .../src/experimental/badge/badge.ts | 39 +- .../src/experimental/button/button.spec.ts | 22 +- .../src/experimental/button/button.ts | 49 +- .../src/experimental/calendar/calendar.ts | 37 +- .../src/experimental/callout/callout.ts | 41 +- .../checkbox-list/checkbox-list.ts | 48 +- .../src/experimental/checkbox/checkbox.ts | 71 +- .../experimental/date-picker/date-picker.ts | 57 +- .../src/experimental/drawer/drawer.ts | 9 +- .../dropdown-item/dropdown-item.ts | 8 +- .../src/experimental/dropdown/dropdown.ts | 67 +- .../file-upload-card/file-upload-card.ts | 29 +- .../file-upload-input/file-upload-input.ts | 39 +- .../filter-chip/filter-chip.spec.ts | 8 +- .../experimental/filter-chip/filter-chip.ts | 38 +- .../footer-meta-section.ts | 8 +- .../footer-nav-section/footer-nav-section.ts | 7 +- .../src/experimental/footer/footer.ts | 7 +- .../experimental/form-item/form-item.spec.ts | 13 +- .../src/experimental/form-item/form-item.ts | 8 +- .../src/experimental/input/input.spec.ts | 8 +- .../src/experimental/input/input.ts | 44 +- .../src/experimental/link/link.ts | 38 +- .../src/experimental/modal/modal.ts | 51 +- .../experimental/notification/notification.ts | 30 +- .../pagination/pagination.spec.ts | 44 +- .../src/experimental/pagination/pagination.ts | 35 +- .../radio-group/radio-group.spec.ts | 36 +- .../experimental/radio-group/radio-group.ts | 52 +- .../radio-item/radio-item.spec.ts | 12 +- .../src/experimental/radio-item/radio-item.ts | 61 +- .../side-menu-group/side-menu-group.ts | 39 +- .../side-menu-heading.spec.ts | 15 +- .../side-menu-heading/side-menu-heading.ts | 36 +- .../src/experimental/side-menu/side-menu.ts | 25 +- .../src/experimental/tab/tab.ts | 31 +- .../table-sort-header/table-sort-header.ts | 15 +- .../src/experimental/table/table.ts | 39 +- .../src/experimental/tabs/tabs.ts | 32 +- .../experimental/textarea/textarea.spec.ts | 4 +- .../src/experimental/textarea/textarea.ts | 66 +- .../work-side-menu-group.ts | 20 +- .../work-side-menu-item.ts | 30 +- .../work-side-menu/work-side-menu.ts | 45 +- .../src/lib/angular-components.module.ts | 4 +- .../angular-components.component.html | 2 +- .../angular-components.component.ts | 5 +- .../src/lib/checked-directive.ts | 23 +- .../components/accordion/accordion.spec.ts | 10 +- .../src/lib/components/accordion/accordion.ts | 45 +- .../src/lib/components/badge/badge.ts | 32 +- .../src/lib/components/block/block.ts | 37 +- .../button-group/button-group.spec.ts | 3 +- .../components/button-group/button-group.ts | 29 +- .../src/lib/components/button/button.spec.ts | 22 +- .../src/lib/components/button/button.ts | 46 +- .../src/lib/components/calendar/calendar.ts | 35 +- .../src/lib/components/callout/callout.ts | 36 +- .../components/card-actions/card-actions.ts | 10 +- .../components/card-content/card-content.ts | 10 +- .../lib/components/card-image/card-image.ts | 14 +- .../src/lib/components/card/card.ts | 29 +- .../checkbox-list/checkbox-list.spec.ts | 7 +- .../components/checkbox-list/checkbox-list.ts | 44 +- .../lib/components/checkbox/checkbox.spec.ts | 30 +- .../src/lib/components/checkbox/checkbox.ts | 67 +- .../src/lib/components/chip/chip.spec.ts | 7 +- .../src/lib/components/chip/chip.ts | 39 +- .../circular-progress/circular-progress.ts | 23 +- .../components/column-layout/column-layout.ts | 10 +- .../src/lib/components/container/container.ts | 59 +- .../components/data-grid/data-grid.spec.ts | 25 +- .../src/lib/components/data-grid/data-grid.ts | 28 +- .../lib/components/date-picker/date-picker.ts | 55 +- .../src/lib/components/details/details.ts | 31 +- .../src/lib/components/divider/divider.ts | 23 +- .../src/lib/components/drawer/drawer.ts | 39 +- .../components/dropdown-item/dropdown-item.ts | 22 +- .../lib/components/dropdown/dropdown.spec.ts | 45 +- .../src/lib/components/dropdown/dropdown.ts | 63 +- .../file-upload-card/file-upload-card.ts | 27 +- .../file-upload-input/file-upload-input.ts | 37 +- .../filter-chip/filter-chip.spec.ts | 8 +- .../lib/components/filter-chip/filter-chip.ts | 32 +- .../footer-meta-section.ts | 11 +- .../footer-nav-section/footer-nav-section.ts | 19 +- .../src/lib/components/footer/footer.ts | 24 +- .../components/form-item/form-item.spec.ts | 11 +- .../src/lib/components/form-item/form-item.ts | 44 +- .../src/lib/components/form-step/form-step.ts | 20 +- .../form-stepper/form-stepper.spec.ts | 2 +- .../components/form-stepper/form-stepper.ts | 28 +- .../src/lib/components/form/fieldset.spec.ts | 4 +- .../src/lib/components/form/fieldset.ts | 32 +- .../components/form/public-form-page.spec.ts | 12 +- .../lib/components/form/public-form-page.ts | 48 +- .../form/public-form-summary.spec.ts | 8 +- .../components/form/public-form-summary.ts | 10 +- .../lib/components/form/public-form.spec.ts | 18 +- .../src/lib/components/form/public-form.ts | 29 +- .../form/public-subform-index.spec.ts | 12 +- .../components/form/public-subform-index.ts | 26 +- .../src/lib/components/form/public-subform.ts | 36 +- .../src/lib/components/form/task-list.spec.ts | 28 +- .../src/lib/components/form/task-list.ts | 22 +- .../src/lib/components/form/task.spec.ts | 12 +- .../src/lib/components/form/task.ts | 12 +- .../src/lib/components/grid/grid.ts | 37 +- .../lib/components/header-menu/header-menu.ts | 31 +- .../src/lib/components/header/header.ts | 29 +- .../lib/components/hero-banner/hero-banner.ts | 44 +- .../icon-button/icon-button.spec.ts | 2 +- .../lib/components/icon-button/icon-button.ts | 46 +- .../src/lib/components/icon/icon.ts | 45 +- .../components/input-number/input-number.ts | 133 +- .../src/lib/components/input/input.spec.ts | 26 +- .../src/lib/components/input/input.ts | 137 +- .../linear-progress/linear-progress.ts | 22 +- .../src/lib/components/link/link.ts | 42 +- .../lib/components/menu-button/menu-action.ts | 4 +- .../microsite-header/microsite-header.ts | 37 +- .../src/lib/components/modal/modal.ts | 49 +- .../components/notification/notification.ts | 35 +- .../lib/components/page-block/page-block.ts | 23 +- .../src/lib/components/pages/pages.ts | 34 +- .../components/pagination/pagination.spec.ts | 44 +- .../lib/components/pagination/pagination.ts | 33 +- .../src/lib/components/popover/popover.ts | 50 +- .../lib/components/push-drawer/push-drawer.ts | 45 +- .../radio-group/radio-group.spec.ts | 83 +- .../lib/components/radio-group/radio-group.ts | 48 +- .../components/radio-item/radio-item.spec.ts | 12 +- .../lib/components/radio-item/radio-item.ts | 62 +- .../side-menu-group/side-menu-group.ts | 36 +- .../side-menu-heading.spec.ts | 15 +- .../side-menu-heading/side-menu-heading.ts | 27 +- .../src/lib/components/side-menu/side-menu.ts | 22 +- .../lib/components/skeleton/skeleton.spec.ts | 30 +- .../src/lib/components/skeleton/skeleton.ts | 40 +- .../src/lib/components/spacer/spacer.spec.ts | 10 +- .../src/lib/components/spacer/spacer.ts | 31 +- .../src/lib/components/spinner/spinner.ts | 22 +- .../src/lib/components/tab/tab.ts | 35 +- .../table-sort-header/table-sort-header.ts | 25 +- .../src/lib/components/table/table.ts | 34 +- .../src/lib/components/tabs/tabs.spec.ts | 4 +- .../src/lib/components/tabs/tabs.ts | 23 +- .../temporary-notification-ctrl.ts | 26 +- .../src/lib/components/text/text.ts | 31 +- .../lib/components/textarea/textarea.spec.ts | 16 +- .../src/lib/components/textarea/textarea.ts | 62 +- .../lib/components/tooltip/tooltip.spec.ts | 2 +- .../src/lib/components/tooltip/tooltip.ts | 57 +- .../src/lib/value-directive.ts | 57 +- libs/angular-components/src/test-setup.ts | 9 +- libs/angular-components/tsconfig.spec.json | 7 +- package-lock.json | 42412 ++++++++-------- package.json | 35 +- 246 files changed, 24631 insertions(+), 24030 deletions(-) create mode 100644 apps/prs/angular/src/routes/features/feat3211/feat3211.component.html create mode 100644 apps/prs/angular/src/routes/features/feat3211/feat3211.component.ts diff --git a/.templates/angular/src/app/playground.ts b/.templates/angular/src/app/playground.ts index cab524670c..be670d52b0 100644 --- a/.templates/angular/src/app/playground.ts +++ b/.templates/angular/src/app/playground.ts @@ -1,5 +1,4 @@ import { CUSTOM_ELEMENTS_SCHEMA, Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; import { GoabInput, /* Import components here */ @@ -16,7 +15,6 @@ import { schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [ - CommonModule, GoabInput, // add test components here ], diff --git a/apps/prs/angular/src/app/abgov-app.ts b/apps/prs/angular/src/app/abgov-app.ts index 3ab16c2e39..67d75f4bd0 100644 --- a/apps/prs/angular/src/app/abgov-app.ts +++ b/apps/prs/angular/src/app/abgov-app.ts @@ -1,5 +1,4 @@ import { CUSTOM_ELEMENTS_SCHEMA, Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; import {} from "@abgov/angular-components"; @Component({ @@ -12,6 +11,5 @@ import {} from "@abgov/angular-components"; `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class AbgovAppComponent {} diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index 22b16d09f8..eecb8d4564 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -106,6 +106,7 @@ 3102 3229 MenuButton vs size and icon-only 3137 + 3211 Angular v21 3241 3306 3370 diff --git a/apps/prs/angular/src/app/app.routes.ts b/apps/prs/angular/src/app/app.routes.ts index f7b67f890c..7a18f9b8af 100644 --- a/apps/prs/angular/src/app/app.routes.ts +++ b/apps/prs/angular/src/app/app.routes.ts @@ -66,6 +66,7 @@ import { Feat2730Component } from "../routes/features/feat2730/feat2730.componen import { Feat2829Component } from "../routes/features/feat2829/feat2829.component"; import { Feat3102Component } from "../routes/features/feat3102/feat3102.component"; import { Feat3137Component } from "../routes/features/feat3137/feat3137.component"; +import { Feat3211Component } from "../routes/features/feat3211/feat3211.component"; import { Feat3241Component } from "../routes/features/feat3241/feat3241.component"; import { Feat3229Component } from "../routes/features/feat3229/feat3229.component"; import { Feat3306Component } from "../routes/features/feat3306/feat3306.component"; @@ -144,6 +145,7 @@ export const appRoutes: Route[] = [ { path: "features/2829", component: Feat2829Component }, { path: "features/3102", component: Feat3102Component }, { path: "features/3137", component: Feat3137Component }, + { path: "features/3211", component: Feat3211Component }, { path: "features/3241", component: Feat3241Component }, { path: "features/v2-icons", component: FeatV2IconsComponent }, { path: "features/3137", component: Feat3137Component }, diff --git a/apps/prs/angular/src/app/everything.component.html b/apps/prs/angular/src/app/everything.component.html index 7b65e84202..3599b718d7 100644 --- a/apps/prs/angular/src/app/everything.component.html +++ b/apps/prs/angular/src/app/everything.component.html @@ -10,25 +10,28 @@ Recent events - Interact with the components to populate the log. - - - - {{ entry.timestamp }} - ??" {{ entry.name }} - -
    +        @if (eventLog().length === 0) {
    +          Interact with the components to populate the log.
    +        }
    +        @for (entry of eventLog(); track $index) {
    +          
    +            
    +              
    +                {{ entry.timestamp }}
    +                ??" {{ entry.name }}
    +              
    +              
                   {{ entry.detail | json }}
                 
    -
    -
    + + + } @@ -38,26 +41,28 @@ Text sizes - - {{ size }} - + @for (size of textSizes; track $index) { + + {{ size }} + + } Text colors - - {{ colour | titlecase }} text - + @for (colour of textColors; track $index) { + + {{ colour | titlecase }} text + + } @@ -77,18 +82,19 @@ Containers - - - Type: {{ type }}
    - Accent: {{ containerAccents[idx % containerAccents.length] || "none" }} -
    -
    + @for (type of containerTypes; track $index; let idx = $index) { + + + Type: {{ type }}
    + Accent: {{ containerAccents[idx % containerAccents.length] || "none" }} +
    +
    + }
    @@ -169,37 +175,40 @@ Buttons by type - - {{ type | titlecase }} button - + @for (type of buttonTypes; track $index) { + + {{ type | titlecase }} button + + } Variants & sizes - - - {{ variant | titlecase }} - - - {{ size }} / {{ variant }} - - + + {{ variant | titlecase }} + + @for (size of buttonSizes; track $index) { + + {{ size }} / {{ variant }} + + } + + } @@ -217,33 +226,37 @@ > - - {{ linkType | titlecase }} link (action logged) - + @for (linkType of linkButtonTypes; track $index) { + + {{ linkType | titlecase }} link (action logged) + + } Icon buttons & icons - + @for (variant of iconButtonVariants; track $index; let idx = $index) { + + } Click counts: {{ iconButtonClickCount | json }} - + @for (icon of iconTypes; track $index; let idx = $index) { + + } @@ -256,8 +269,11 @@ Latest menu action: - {{ menuAction }} - pending + @if (menuAction) { + {{ menuAction }} + } @else { + pending + } @@ -267,11 +283,12 @@ Badge palette - + @for (badgeType of badgeTypes; track $index) { + + } @@ -299,12 +316,13 @@ Filter chips - + @for (theme of filterChipThemes; track $index) { + + } Filter chip clicks: {{ filterChipClicks }} - - - + @for (size of formItemLabelSizes; track $index) { + + + + } Trailing icon clicks: {{ inputTrailingClicks }} @@ -478,12 +497,13 @@ placeholder="Select mounts" (onChange)="onDropdownChange($event)" > - + @for (mount of dropdownMountTypes; track $index; let idx = $index) { + + } Selected: {{ dropdownMultiSelection || "None" }} @@ -501,11 +521,12 @@ [value]="linkedDropdownCategory" (onChange)="onLinkedDropdownCategoryChange($event)" > - + @for (option of linkedDropdownCategories; track option.value) { + + } Selected: {{ linkedDropdownCategory | titlecase }} @@ -521,11 +542,12 @@ [value]="linkedDropdownItem" (onChange)="onLinkedDropdownItemChange($event)" > - + @for (option of dependentDropdownItems; track option.value) { + + } Selected: @@ -569,11 +591,12 @@ [value]="reactiveDemoForm.get('radio')?.value || undefined" formControlName="radio" > - + @for (option of reactiveRadioOptions; track option.value) { + + } - + @for (option of reactiveDropdownOptions; track option.value) { + + } - + @for (option of reactiveCheckboxListOptions; track option.value) { + + } - + @for (status of formStepStatuses; track $index; let idx = $index) { + + } Active step: {{ formStepperState.step }} @@ -789,18 +815,19 @@ Callouts - - - This is a {{ type }} callout using the - {{ calloutIconThemes[idx % calloutIconThemes.length] }} - icon theme. - - + @for (type of calloutTypes; track $index; let idx = $index) { + + + This is a {{ type }} callout using the + {{ calloutIconThemes[idx % calloutIconThemes.length] }} + icon theme. + + + } @@ -884,11 +911,12 @@ Circular progress - + @for (variant of circularProgressVariants; track $index; let idx = $index) { + + } Linear progress @@ -911,12 +939,13 @@ Skeletons - + @for (skeleton of skeletonTypes; track $index; let idx = $index) { + + } @@ -952,20 +981,21 @@ Accordion & Tabs - - - Accordion content for {{ headingSize }} heading. Toggle to emit change - events. - - + @for (headingSize of accordionHeadingSizes; track $index; let idx = $index) { + + + Accordion content for {{ headingSize }} heading. Toggle to emit change + events. + + + } Last toggle: {{ accordionLastToggle?.heading || "None" }} → @@ -1045,7 +1075,8 @@ Data Grid (Keyboard Navigation) - The data grid wraps a table to enable keyboard navigation. Use arrow keys to move between cells. + The data grid wraps a table to enable keyboard navigation. Use arrow keys to + move between cells. @@ -1064,7 +1095,10 @@
    - - - - - - + @for (row of sampleData; track row.id) { + + + + + + + } @@ -60,31 +62,29 @@ Click Count: {{ clickCount }} -
    + @if (sortLog.length > 0) {
    - {{ log }} + @for (log of sortLog; track $index) { +
    + {{ log }} +
    + }
    -
    - - + } @else {
    No sort events yet. Click on a column header to start testing.
    -
    + }
    diff --git a/apps/prs/angular/src/routes/bugs/2821/bug2821.component.ts b/apps/prs/angular/src/routes/bugs/2821/bug2821.component.ts index 59c5299a0e..1237067193 100644 --- a/apps/prs/angular/src/routes/bugs/2821/bug2821.component.ts +++ b/apps/prs/angular/src/routes/bugs/2821/bug2821.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabTable, GoabTableSortHeader, @@ -20,14 +20,7 @@ interface TableRow { standalone: true, selector: "abgov-bug2821", templateUrl: "./bug2821.component.html", - imports: [ - CommonModule, - GoabTable, - GoabTableSortHeader, - GoabBlock, - GoabText, - GoabButton, - ], + imports: [GoabTable, GoabTableSortHeader, GoabBlock, GoabText, GoabButton], }) export class Bug2821Component { sortLog: string[] = []; diff --git a/apps/prs/angular/src/routes/bugs/2837/bug2837.component.ts b/apps/prs/angular/src/routes/bugs/2837/bug2837.component.ts index e2744fda9d..7a25b029f3 100644 --- a/apps/prs/angular/src/routes/bugs/2837/bug2837.component.ts +++ b/apps/prs/angular/src/routes/bugs/2837/bug2837.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBlock, GoabText, @@ -12,7 +12,7 @@ import { GoabInputOnChangeDetail } from "@abgov/ui-components-common"; standalone: true, selector: "abgov-bug2837", templateUrl: "./bug2837.component.html", - imports: [CommonModule, GoabBlock, GoabText, GoabInput, GoabInputNumber], + imports: [GoabBlock, GoabText, GoabInput, GoabInputNumber], }) export class Bug2837Component { handleInputChange(detail: GoabInputOnChangeDetail) { diff --git a/apps/prs/angular/src/routes/bugs/2839/bug2839.component.ts b/apps/prs/angular/src/routes/bugs/2839/bug2839.component.ts index 9bcc78e2a5..d4d18f27f8 100644 --- a/apps/prs/angular/src/routes/bugs/2839/bug2839.component.ts +++ b/apps/prs/angular/src/routes/bugs/2839/bug2839.component.ts @@ -1,5 +1,5 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabButton, GoabIconButton, @@ -11,7 +11,7 @@ import { standalone: true, selector: "abgov-bug2839", templateUrl: "./bug2839.component.html", - imports: [CommonModule, GoabButton, GoabIconButton, GoabButtonGroup, GoabBlock], + imports: [GoabButton, GoabIconButton, GoabButtonGroup, GoabBlock], schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class Bug2839Component { diff --git a/apps/prs/angular/src/routes/bugs/2849/bug2849.component.ts b/apps/prs/angular/src/routes/bugs/2849/bug2849.component.ts index 2345bde5e9..bd952c52e8 100644 --- a/apps/prs/angular/src/routes/bugs/2849/bug2849.component.ts +++ b/apps/prs/angular/src/routes/bugs/2849/bug2849.component.ts @@ -1,5 +1,5 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabDropdown, GoabDropdownItem, GoabBlock } from "@abgov/angular-components"; @Component({ @@ -7,7 +7,7 @@ import { GoabDropdown, GoabDropdownItem, GoabBlock } from "@abgov/angular-compon selector: "abgov-bug2849", templateUrl: "./bug2849.component.html", styleUrls: ["./bug2849.component.css"], - imports: [CommonModule, GoabDropdown, GoabDropdownItem, GoabBlock], + imports: [GoabDropdown, GoabDropdownItem, GoabBlock], schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class Bug2849Component { diff --git a/apps/prs/angular/src/routes/bugs/2852/bug2852.component.html b/apps/prs/angular/src/routes/bugs/2852/bug2852.component.html index b14218dd4e..5a1b4a8526 100644 --- a/apps/prs/angular/src/routes/bugs/2852/bug2852.component.html +++ b/apps/prs/angular/src/routes/bugs/2852/bug2852.component.html @@ -9,11 +9,12 @@

    Bug #2852: FormItem with Filterable Dropdown Test

    [filterable]="true" placeholder="Search for a state capital..." > - + @for (capital of usCapitals; track capital.value) { + + } @@ -30,11 +31,12 @@

    Bug #2852: FormItem with Filterable Dropdown Test

    [filterable]="false" placeholder="Search for a state capital..." > - + @for (capital of usCapitals; track capital.value) { + + } diff --git a/apps/prs/angular/src/routes/bugs/2852/bug2852.component.ts b/apps/prs/angular/src/routes/bugs/2852/bug2852.component.ts index b1d600508c..a351adee30 100644 --- a/apps/prs/angular/src/routes/bugs/2852/bug2852.component.ts +++ b/apps/prs/angular/src/routes/bugs/2852/bug2852.component.ts @@ -7,7 +7,6 @@ import { GoabInput, } from "@abgov/angular-components"; import { GoabDropdownOnChangeDetail } from "@abgov/ui-components-common"; -import { NgFor } from "@angular/common"; // US State Capitals const US_CAPITALS = [ @@ -67,7 +66,7 @@ const US_CAPITALS = [ selector: "abgov-bug2852", templateUrl: "./bug2852.component.html", standalone: true, - imports: [GoabBlock, GoabDropdown, GoabFormItem, GoabDropdownItem, GoabInput, NgFor], + imports: [GoabBlock, GoabDropdown, GoabFormItem, GoabDropdownItem, GoabInput], }) export class Bug2852Component { selectedCapital: string | number = ""; diff --git a/apps/prs/angular/src/routes/bugs/2873/bug2873.component.ts b/apps/prs/angular/src/routes/bugs/2873/bug2873.component.ts index 0c52b2157d..7de6f17363 100644 --- a/apps/prs/angular/src/routes/bugs/2873/bug2873.component.ts +++ b/apps/prs/angular/src/routes/bugs/2873/bug2873.component.ts @@ -1,5 +1,5 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; +import { NgTemplateOutlet } from "@angular/common"; import { GoabAccordion, GoabBlock, @@ -17,7 +17,6 @@ import { selector: "abgov-bug2873", templateUrl: "./bug2873.component.html", imports: [ - CommonModule, GoabAccordion, GoabBlock, GoabButton, @@ -27,6 +26,7 @@ import { GoabInput, GoabText, GoabTextArea, + NgTemplateOutlet, ], }) export class Bug2873Component { diff --git a/apps/prs/angular/src/routes/bugs/2892/bug2892.component.ts b/apps/prs/angular/src/routes/bugs/2892/bug2892.component.ts index e4cb5d3c8e..54fc7955f4 100644 --- a/apps/prs/angular/src/routes/bugs/2892/bug2892.component.ts +++ b/apps/prs/angular/src/routes/bugs/2892/bug2892.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBlock, GoabText, GoabInput, GoabFormItem } from "@abgov/angular-components"; import { GoabInputOnChangeDetail } from "@abgov/ui-components-common"; @@ -7,7 +7,7 @@ import { GoabInputOnChangeDetail } from "@abgov/ui-components-common"; standalone: true, selector: "abgov-bug2892", templateUrl: "./bug2892.component.html", - imports: [CommonModule, GoabBlock, GoabText, GoabInput, GoabFormItem], + imports: [GoabBlock, GoabText, GoabInput, GoabFormItem], }) export class Bug2892Component { handleInputChange(detail: GoabInputOnChangeDetail) { diff --git a/apps/prs/angular/src/routes/bugs/2922/bug2922.component.ts b/apps/prs/angular/src/routes/bugs/2922/bug2922.component.ts index b174c08305..d8f65de601 100644 --- a/apps/prs/angular/src/routes/bugs/2922/bug2922.component.ts +++ b/apps/prs/angular/src/routes/bugs/2922/bug2922.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabFormStepper, GoabFormStep } from "@abgov/angular-components"; import { GoabFormStepperOnChangeDetail } from "@abgov/ui-components-common"; @@ -7,7 +7,7 @@ import { GoabFormStepperOnChangeDetail } from "@abgov/ui-components-common"; standalone: true, selector: "abgov-bug2922", templateUrl: "./bug2922.component.html", - imports: [CommonModule, GoabFormStepper, GoabFormStep], + imports: [GoabFormStepper, GoabFormStep], }) export class Bug2922Component { currentStep = 1; diff --git a/apps/prs/angular/src/routes/bugs/2943/bug2943.component.ts b/apps/prs/angular/src/routes/bugs/2943/bug2943.component.ts index f433a975c6..b70cfa7de4 100644 --- a/apps/prs/angular/src/routes/bugs/2943/bug2943.component.ts +++ b/apps/prs/angular/src/routes/bugs/2943/bug2943.component.ts @@ -1,5 +1,5 @@ import { Component, signal } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBlock, GoabButton, @@ -16,7 +16,6 @@ import { templateUrl: "./bug2943.component.html", styleUrls: ["./bug2943.component.css"], imports: [ - CommonModule, GoabBlock, GoabButton, GoabDrawer, diff --git a/apps/prs/angular/src/routes/bugs/2948/bug2948.component.ts b/apps/prs/angular/src/routes/bugs/2948/bug2948.component.ts index 1efb17e290..6f96ab3bad 100644 --- a/apps/prs/angular/src/routes/bugs/2948/bug2948.component.ts +++ b/apps/prs/angular/src/routes/bugs/2948/bug2948.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabModal, GoabButton, @@ -11,7 +11,7 @@ import { standalone: true, selector: "abgov-bug2948", templateUrl: "./bug2948.component.html", - imports: [CommonModule, GoabModal, GoabButton, GoabButtonGroup, GoabBlock], + imports: [GoabModal, GoabButton, GoabButtonGroup, GoabBlock], }) export class Bug2948Component { // Modal 1: String heading diff --git a/apps/prs/angular/src/routes/bugs/2991/bug2991.component.ts b/apps/prs/angular/src/routes/bugs/2991/bug2991.component.ts index 3e74a2b5e9..10d5cff60e 100644 --- a/apps/prs/angular/src/routes/bugs/2991/bug2991.component.ts +++ b/apps/prs/angular/src/routes/bugs/2991/bug2991.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabFormItem, GoabInput } from "@abgov/angular-components"; import { GoabInputOnChangeDetail } from "@abgov/ui-components-common"; @@ -8,7 +8,7 @@ import { GoabInputOnChangeDetail } from "@abgov/ui-components-common"; selector: "abgov-bug2991", templateUrl: "./bug2991.component.html", styleUrls: ["./bug2991.component.css"], - imports: [CommonModule, GoabFormItem, GoabInput], + imports: [GoabFormItem, GoabInput], }) export class Bug2991Component { validationError?: string; diff --git a/apps/prs/angular/src/routes/bugs/3072/bug3072.component.html b/apps/prs/angular/src/routes/bugs/3072/bug3072.component.html index 5e249ed8e0..561c8b8e23 100644 --- a/apps/prs/angular/src/routes/bugs/3072/bug3072.component.html +++ b/apps/prs/angular/src/routes/bugs/3072/bug3072.component.html @@ -43,11 +43,12 @@ placeholder="Select a gender" formControlName="genderId" > + @for (gender of genders; track gender.value) { + } @@ -69,11 +70,12 @@ + @for (interest of interests; track interest.value) { + } diff --git a/apps/prs/angular/src/routes/bugs/3072/bug3072.component.ts b/apps/prs/angular/src/routes/bugs/3072/bug3072.component.ts index 73f6421b8e..396b43e8e7 100644 --- a/apps/prs/angular/src/routes/bugs/3072/bug3072.component.ts +++ b/apps/prs/angular/src/routes/bugs/3072/bug3072.component.ts @@ -1,4 +1,4 @@ -import { AsyncPipe, CommonModule } from "@angular/common"; +import { AsyncPipe, JsonPipe } from "@angular/common"; import { Component, inject } from "@angular/core"; import { FormBuilder, FormGroup, ReactiveFormsModule } from "@angular/forms"; import { @@ -23,7 +23,6 @@ import { templateUrl: "./bug3072.component.html", styleUrls: ["./bug3072.component.css"], imports: [ - CommonModule, AsyncPipe, ReactiveFormsModule, GoabBlock, @@ -39,6 +38,7 @@ import { GoabInputNumber, GoabText, GoabTextArea, + JsonPipe, ], }) export class Bug3072Component { diff --git a/apps/prs/angular/src/routes/bugs/3118/bug3118.component.ts b/apps/prs/angular/src/routes/bugs/3118/bug3118.component.ts index f8d3ff24d1..c6f4aac7ab 100644 --- a/apps/prs/angular/src/routes/bugs/3118/bug3118.component.ts +++ b/apps/prs/angular/src/routes/bugs/3118/bug3118.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; import { GoabBlock, @@ -14,15 +13,7 @@ import { GoabMenuButtonOnActionDetail } from "@abgov/ui-components-common"; standalone: true, selector: "abgov-bug3118", templateUrl: "./bug3118.component.html", - imports: [ - CommonModule, - GoabBlock, - GoabDivider, - GoabMenuAction, - GoabMenuButton, - GoabText, - GoabGrid, - ], + imports: [GoabBlock, GoabDivider, GoabMenuAction, GoabMenuButton, GoabText, GoabGrid], }) export class Bug3118Component { protected onAction(detail: GoabMenuButtonOnActionDetail): void { diff --git a/apps/prs/angular/src/routes/bugs/3156/bug3156.component.html b/apps/prs/angular/src/routes/bugs/3156/bug3156.component.html index 8732e0eb6f..1336bd7e19 100644 --- a/apps/prs/angular/src/routes/bugs/3156/bug3156.component.html +++ b/apps/prs/angular/src/routes/bugs/3156/bug3156.component.html @@ -1,5 +1,7 @@ - Bug 3156 — January disappears in Angular dropdowns + Bug 3156 — January disappears in Angular dropdowns The Calendar hotfix relies on every goa-dropdown-item emitting its @@ -11,9 +13,13 @@
    Reproduction checklist
      -
    1. Open the dropdown below — with the regression the first entry renders blank.
    2. +
    3. + Open the dropdown below — with the regression the first entry renders blank. +
    4. Attempt to pick January — there is nothing to select.
    5. -
    6. Inspect the diagnostics table — the first mount event carries empty data.
    7. +
    8. + Inspect the diagnostics table — the first mount event carries empty data. +
    @@ -23,12 +29,10 @@ >
    - - + @for (month of months; track month.value) { + + + }
    @@ -46,7 +50,7 @@
    Captured dropdown-item:mounted events -

    - Open the dropdown above to log the mount events. -

    + @if (mountedItems.length === 0) { +

    Open the dropdown above to log the mount events.

    + } -
    {formatUserType(example.data.userType)}{{ row.name }} {{ row.created }} - + {{ row.progress }}% diff --git a/apps/prs/angular/src/app/everything.component.ts b/apps/prs/angular/src/app/everything.component.ts index 84de89219c..7a3510cb45 100644 --- a/apps/prs/angular/src/app/everything.component.ts +++ b/apps/prs/angular/src/app/everything.component.ts @@ -1,5 +1,5 @@ -import { CommonModule } from "@angular/common"; import { Component, signal } from "@angular/core"; +import { DecimalPipe, JsonPipe, TitleCasePipe } from "@angular/common"; import { FormBuilder, FormGroup, ReactiveFormsModule } from "@angular/forms"; import { GoabAccordion, @@ -165,7 +165,6 @@ interface DemoFormValue { templateUrl: "./everything.component.html", styleUrls: ["./everything.component.css"], imports: [ - CommonModule, ReactiveFormsModule, GoabAccordion, GoabAppFooter, @@ -230,6 +229,9 @@ interface DemoFormValue { GoabText, GoabTextArea, GoabTooltip, + DecimalPipe, + JsonPipe, + TitleCasePipe, ], }) export class EverythingComponent { diff --git a/apps/prs/angular/src/routes/bugs/2331/bug2331.component.ts b/apps/prs/angular/src/routes/bugs/2331/bug2331.component.ts index de59da2671..04896a345c 100644 --- a/apps/prs/angular/src/routes/bugs/2331/bug2331.component.ts +++ b/apps/prs/angular/src/routes/bugs/2331/bug2331.component.ts @@ -1,5 +1,4 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; import { GoabBlock, GoabButton, @@ -13,7 +12,7 @@ import { GoabTabsOnChangeDetail } from "@abgov/ui-components-common"; standalone: true, selector: "abgov-bug2331", templateUrl: "./bug2331.component.html", - imports: [CommonModule, GoabBlock, GoabButton, GoabTabs, GoabTab, GoabText], + imports: [ GoabBlock, GoabButton, GoabTabs, GoabTab, GoabText], }) export class Bug2331Component { blockContent: string | null = null; diff --git a/apps/prs/angular/src/routes/bugs/2408/bug2408.component.ts b/apps/prs/angular/src/routes/bugs/2408/bug2408.component.ts index f8ba2b4964..5af653f993 100644 --- a/apps/prs/angular/src/routes/bugs/2408/bug2408.component.ts +++ b/apps/prs/angular/src/routes/bugs/2408/bug2408.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabFormStepper, GoabFormStep, @@ -13,7 +13,7 @@ import { standalone: true, selector: "abgov-bug2408", templateUrl: "./bug2408.component.html", - imports: [CommonModule, GoabFormStepper, GoabFormStep, GoabBlock, GoabText, GoabButton], + imports: [GoabFormStepper, GoabFormStep, GoabBlock, GoabText, GoabButton], }) export class Bug2408Component { currentStep = 1; diff --git a/apps/prs/angular/src/routes/bugs/2459/bug2459.component.html b/apps/prs/angular/src/routes/bugs/2459/bug2459.component.html index 4da275e613..5703df64de 100644 --- a/apps/prs/angular/src/routes/bugs/2459/bug2459.component.html +++ b/apps/prs/angular/src/routes/bugs/2459/bug2459.component.html @@ -4,8 +4,8 @@ (onSelectFile)="uploadFile($event)" maxFileSize="100MB" /> + @for (upload of uploads; track upload.file.name; let i = $index) { + } diff --git a/apps/prs/angular/src/routes/bugs/2459/bug2459.component.ts b/apps/prs/angular/src/routes/bugs/2459/bug2459.component.ts index 612b676059..b0c9e39c5b 100644 --- a/apps/prs/angular/src/routes/bugs/2459/bug2459.component.ts +++ b/apps/prs/angular/src/routes/bugs/2459/bug2459.component.ts @@ -5,7 +5,6 @@ import { GoabFileUploadInput, GoabFileUploadInputOnSelectFileDetail, } from "@abgov/angular-components"; -import { NgFor } from "@angular/common"; interface Uploader { upload: (url: string | ArrayBuffer) => void; @@ -42,7 +41,7 @@ class MockUploader implements Uploader { selector: "abgov-accordion", standalone: true, templateUrl: "./bug2459.component.html", - imports: [GoabFormItem, GoabFileUploadCard, GoabFileUploadInput, NgFor], + imports: [GoabFormItem, GoabFileUploadCard, GoabFileUploadInput], }) export class Bug2459Component { uploads: Upload[] = []; diff --git a/apps/prs/angular/src/routes/bugs/2655/bug2655.component.ts b/apps/prs/angular/src/routes/bugs/2655/bug2655.component.ts index db00bd3c83..b4352ea805 100644 --- a/apps/prs/angular/src/routes/bugs/2655/bug2655.component.ts +++ b/apps/prs/angular/src/routes/bugs/2655/bug2655.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabButton, GoabModal, @@ -13,7 +13,6 @@ import { selector: "abgov-bug2655", standalone: true, imports: [ - CommonModule, GoabButton, GoabModal, GoabDatePicker, diff --git a/apps/prs/angular/src/routes/bugs/2720/bug2720.component.html b/apps/prs/angular/src/routes/bugs/2720/bug2720.component.html index cacc342c53..680078d51a 100644 --- a/apps/prs/angular/src/routes/bugs/2720/bug2720.component.html +++ b/apps/prs/angular/src/routes/bugs/2720/bug2720.component.html @@ -121,31 +121,29 @@
    Tab Change Event Log -
    + @if (tabChangeLog.length > 0) {
    - {{ log }} + @for (log of tabChangeLog; track $index) { +
    + {{ log }} +
    + }
    -
    - - + } @else {
    No tab change events yet. Try changing tabs or using the test controls above.
    -
    + }
    diff --git a/apps/prs/angular/src/routes/bugs/2720/bug2720.component.ts b/apps/prs/angular/src/routes/bugs/2720/bug2720.component.ts index 77edd949a0..cc5effae7c 100644 --- a/apps/prs/angular/src/routes/bugs/2720/bug2720.component.ts +++ b/apps/prs/angular/src/routes/bugs/2720/bug2720.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabTabs, GoabTab, @@ -16,16 +16,7 @@ import { GoabTabsOnChangeDetail } from "@abgov/ui-components-common"; selector: "abgov-bug2720", templateUrl: "./bug2720.component.html", styleUrls: ["./bug2720.component.css"], - imports: [ - CommonModule, - GoabTabs, - GoabTab, - GoabBlock, - GoabText, - GoabButton, - GoabLink, - GoabBadge, - ], + imports: [GoabTabs, GoabTab, GoabBlock, GoabText, GoabButton, GoabLink, GoabBadge], }) export class Bug2720Component { currentTab = 0; diff --git a/apps/prs/angular/src/routes/bugs/2721/bug2721.component.ts b/apps/prs/angular/src/routes/bugs/2721/bug2721.component.ts index a01e27f175..d12e1aaf32 100644 --- a/apps/prs/angular/src/routes/bugs/2721/bug2721.component.ts +++ b/apps/prs/angular/src/routes/bugs/2721/bug2721.component.ts @@ -1,5 +1,5 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabText, GoabBlock } from "@abgov/angular-components"; @Component({ @@ -7,7 +7,7 @@ import { GoabText, GoabBlock } from "@abgov/angular-components"; selector: "abgov-bug2721", templateUrl: "./bug2721.component.html", styleUrls: ["./bug2721.component.css"], - imports: [CommonModule, GoabText, GoabBlock], + imports: [GoabText, GoabBlock], schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class Bug2721Component {} diff --git a/apps/prs/angular/src/routes/bugs/2768/bug2768.component.ts b/apps/prs/angular/src/routes/bugs/2768/bug2768.component.ts index bb2bece191..faa7b7f3a5 100644 --- a/apps/prs/angular/src/routes/bugs/2768/bug2768.component.ts +++ b/apps/prs/angular/src/routes/bugs/2768/bug2768.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabButton, GoabCheckbox, @@ -18,7 +18,6 @@ import { selector: "abgov-bug2768", templateUrl: "./bug2768.component.html", imports: [ - CommonModule, GoabButton, GoabCheckbox, GoabDatePicker, diff --git a/apps/prs/angular/src/routes/bugs/2782/bug2782.component.ts b/apps/prs/angular/src/routes/bugs/2782/bug2782.component.ts index ad7df40c84..dddf172a38 100644 --- a/apps/prs/angular/src/routes/bugs/2782/bug2782.component.ts +++ b/apps/prs/angular/src/routes/bugs/2782/bug2782.component.ts @@ -1,12 +1,12 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabInput, GoabBlock, GoabFormItem } from "@abgov/angular-components"; @Component({ standalone: true, selector: "abgov-bug2782", templateUrl: "./bug2782.component.html", - imports: [CommonModule, GoabInput, GoabBlock, GoabFormItem], + imports: [GoabInput, GoabBlock, GoabFormItem], schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class Bug2782Component { diff --git a/apps/prs/angular/src/routes/bugs/2821/bug2821.component.html b/apps/prs/angular/src/routes/bugs/2821/bug2821.component.html index de6fa8b9cd..20844ba644 100644 --- a/apps/prs/angular/src/routes/bugs/2821/bug2821.component.html +++ b/apps/prs/angular/src/routes/bugs/2821/bug2821.component.html @@ -41,12 +41,14 @@
    {{ row.id }}{{ row.name }}{{ row.age }}{{ row.department }}
    {{ row.id }}{{ row.name }}{{ row.age }}{{ row.department }}
    - - - - - - - - - - - - - - - - -
    #LabelValueMount type
    {{ index + 1 }}{{ item.label }}{{ item.value }}{{ item.mountType }}
    + @if (mountedItems.length > 0) { + + + + + + + + + + + @for (item of mountedItems; track item.value; let index = $index) { + + + + + + + } + +
    #LabelValueMount type
    {{ index + 1 }}{{ item.label }}{{ item.value }}{{ item.mountType }}
    + } - Expected: January appears as row 1 with value "0". Regression: the row reads "(empty)", - so the dropdown never registers January and the Calendar regression remains. + Expected: January appears as row 1 with value "0". Regression: the row reads + "(empty)", so the dropdown never registers January and the Calendar regression + remains. diff --git a/apps/prs/angular/src/routes/bugs/3156/bug3156.component.ts b/apps/prs/angular/src/routes/bugs/3156/bug3156.component.ts index ecfa352c97..4750aefcfb 100644 --- a/apps/prs/angular/src/routes/bugs/3156/bug3156.component.ts +++ b/apps/prs/angular/src/routes/bugs/3156/bug3156.component.ts @@ -5,7 +5,7 @@ import { OnDestroy, ViewChild, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBlock, GoabDatePicker, @@ -29,7 +29,6 @@ type DropdownItemLog = { templateUrl: "./bug3156.component.html", styleUrls: ["./bug3156.component.css"], imports: [ - CommonModule, GoabBlock, GoabDatePicker, GoabDropdown, diff --git a/apps/prs/angular/src/routes/bugs/3215/bug3215.component.ts b/apps/prs/angular/src/routes/bugs/3215/bug3215.component.ts index d11c756104..0a99b23063 100644 --- a/apps/prs/angular/src/routes/bugs/3215/bug3215.component.ts +++ b/apps/prs/angular/src/routes/bugs/3215/bug3215.component.ts @@ -1,5 +1,5 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; +import { NgTemplateOutlet } from "@angular/common"; import { GoabButton, GoabButtonGroup, @@ -11,7 +11,7 @@ import { standalone: true, selector: "abgov-bug3215", templateUrl: "./bug3215.component.html", - imports: [CommonModule, GoabButton, GoabButtonGroup, GoabDrawer, GoabText], + imports: [GoabButton, GoabButtonGroup, GoabDrawer, GoabText, NgTemplateOutlet], }) export class Bug3215Component { rightDrawerOpen = false; diff --git a/apps/prs/angular/src/routes/bugs/3248/bug3248.component.ts b/apps/prs/angular/src/routes/bugs/3248/bug3248.component.ts index 230f85d583..b1b64a29e4 100644 --- a/apps/prs/angular/src/routes/bugs/3248/bug3248.component.ts +++ b/apps/prs/angular/src/routes/bugs/3248/bug3248.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabButton, GoabDropdown, @@ -12,7 +12,7 @@ import { standalone: true, selector: "abgov-bug3248", templateUrl: "./bug3248.component.html", - imports: [CommonModule, GoabButton, GoabDropdown, GoabDropdownItem, GoabText], + imports: [GoabButton, GoabDropdown, GoabDropdownItem, GoabText], }) export class Bug3248Component { colors = ["red", "blue", "green", "yellow", "purple"]; diff --git a/apps/prs/angular/src/routes/bugs/3275/bug3275.component.ts b/apps/prs/angular/src/routes/bugs/3275/bug3275.component.ts index 99f948ace4..9ef0f2358b 100644 --- a/apps/prs/angular/src/routes/bugs/3275/bug3275.component.ts +++ b/apps/prs/angular/src/routes/bugs/3275/bug3275.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabButton, GoabButtonGroup, @@ -12,7 +12,7 @@ import { standalone: true, selector: "abgov-bug3275", templateUrl: "./bug3275.component.html", - imports: [CommonModule, GoabButton, GoabButtonGroup, GoabDatePicker, GoabFormItem], + imports: [GoabButton, GoabButtonGroup, GoabDatePicker, GoabFormItem], }) export class Bug3275Component { inputValue = ""; diff --git a/apps/prs/angular/src/routes/bugs/3279/bug3279.component.ts b/apps/prs/angular/src/routes/bugs/3279/bug3279.component.ts index 409fdfbb2d..903ef7ff3d 100644 --- a/apps/prs/angular/src/routes/bugs/3279/bug3279.component.ts +++ b/apps/prs/angular/src/routes/bugs/3279/bug3279.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; import { GoabButton, @@ -16,7 +15,6 @@ import { selector: "abgov-bug3279", templateUrl: "./bug3279.component.html", imports: [ - CommonModule, GoabButton, GoabContainer, GoabDetails, diff --git a/apps/prs/angular/src/routes/bugs/3281/bug3281.component.ts b/apps/prs/angular/src/routes/bugs/3281/bug3281.component.ts index 8e621c447a..5867ef3bd2 100644 --- a/apps/prs/angular/src/routes/bugs/3281/bug3281.component.ts +++ b/apps/prs/angular/src/routes/bugs/3281/bug3281.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBlock, GoabContainer, GoabTable, GoabText } from "@abgov/angular-components"; @Component({ @@ -7,7 +7,7 @@ import { GoabBlock, GoabContainer, GoabTable, GoabText } from "@abgov/angular-co selector: "abgov-bug3281", templateUrl: "./bug3281.component.html", styleUrls: ["./bug3281.component.css"], - imports: [CommonModule, GoabBlock, GoabContainer, GoabTable, GoabText], + imports: [GoabBlock, GoabContainer, GoabTable, GoabText], }) export class Bug3281Component implements OnInit { ngOnInit() { diff --git a/apps/prs/angular/src/routes/bugs/3384/bug3384.component.html b/apps/prs/angular/src/routes/bugs/3384/bug3384.component.html index 05b4f9e567..2dbc1847ac 100644 --- a/apps/prs/angular/src/routes/bugs/3384/bug3384.component.html +++ b/apps/prs/angular/src/routes/bugs/3384/bug3384.component.html @@ -13,12 +13,14 @@ - + @for (row of rows; track $index) { + {{ row.service }} {{ row.status }} {{ row.requests }} {{ row.updated }} + } diff --git a/apps/prs/angular/src/routes/bugs/3384/bug3384.component.ts b/apps/prs/angular/src/routes/bugs/3384/bug3384.component.ts index 48ff62ddd1..14de8d2dde 100644 --- a/apps/prs/angular/src/routes/bugs/3384/bug3384.component.ts +++ b/apps/prs/angular/src/routes/bugs/3384/bug3384.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBlock, GoabText, GoabxTable } from "@abgov/angular-components"; type Row = { @@ -13,7 +13,7 @@ type Row = { standalone: true, selector: "abgov-bug3384", templateUrl: "./bug3384.component.html", - imports: [CommonModule, GoabBlock, GoabText, GoabxTable], + imports: [GoabBlock, GoabText, GoabxTable], }) export class Bug3384Component { readonly rows: Row[] = [ diff --git a/apps/prs/angular/src/routes/features/feat1328/feat1328.component.ts b/apps/prs/angular/src/routes/features/feat1328/feat1328.component.ts index acec86592f..34566091f2 100644 --- a/apps/prs/angular/src/routes/features/feat1328/feat1328.component.ts +++ b/apps/prs/angular/src/routes/features/feat1328/feat1328.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabButton, GoabDropdown, @@ -25,7 +25,6 @@ import { selector: "abgov-feat1328", templateUrl: "./feat1328.component.html", imports: [ - CommonModule, GoabInput, GoabDropdown, GoabDropdownItem, diff --git a/apps/prs/angular/src/routes/features/feat1383/feat1383.component.ts b/apps/prs/angular/src/routes/features/feat1383/feat1383.component.ts index 0b26ff3668..b3d1e86f10 100644 --- a/apps/prs/angular/src/routes/features/feat1383/feat1383.component.ts +++ b/apps/prs/angular/src/routes/features/feat1383/feat1383.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; import { GoabBadge, @@ -113,7 +112,6 @@ const scenarios: { selector: "abgov-feat1383", templateUrl: "./feat1383.component.html", imports: [ - CommonModule, GoabText, GoabGrid, GoabBlock, diff --git a/apps/prs/angular/src/routes/features/feat1547/feat1547.component.ts b/apps/prs/angular/src/routes/features/feat1547/feat1547.component.ts index 162c662d48..c7e58ff61b 100644 --- a/apps/prs/angular/src/routes/features/feat1547/feat1547.component.ts +++ b/apps/prs/angular/src/routes/features/feat1547/feat1547.component.ts @@ -1,11 +1,11 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabTooltip, GoabIcon, GoabBlock } from "@abgov/angular-components"; @Component({ standalone: true, selector: "abgov-feat1547", templateUrl: "./feat1547.component.html", - imports: [CommonModule, GoabTooltip, GoabIcon, GoabBlock], + imports: [GoabTooltip, GoabIcon, GoabBlock], }) export class Feat1547Component {} diff --git a/apps/prs/angular/src/routes/features/feat1813/feat1813.component.html b/apps/prs/angular/src/routes/features/feat1813/feat1813.component.html index 77f989db9b..e5d2cb8a45 100644 --- a/apps/prs/angular/src/routes/features/feat1813/feat1813.component.html +++ b/apps/prs/angular/src/routes/features/feat1813/feat1813.component.html @@ -6,8 +6,8 @@ + @for (scenario of scenarios; track scenario.id) {
    + }
    diff --git a/apps/prs/angular/src/routes/features/feat1813/feat1813.component.ts b/apps/prs/angular/src/routes/features/feat1813/feat1813.component.ts index 7c42ddb182..f073e06163 100644 --- a/apps/prs/angular/src/routes/features/feat1813/feat1813.component.ts +++ b/apps/prs/angular/src/routes/features/feat1813/feat1813.component.ts @@ -5,7 +5,7 @@ import { OnDestroy, OnInit, } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { NgStyle } from "@angular/common"; import { GoabDatePicker, GoabDatePickerOnChangeDetail, @@ -41,7 +41,6 @@ interface ScenarioMeasurement { templateUrl: "./feat1813.component.html", styleUrls: ["./feat1813.component.css"], imports: [ - CommonModule, GoabDatePicker, GoabPopover, GoabButton, @@ -52,6 +51,7 @@ interface ScenarioMeasurement { ReactiveFormsModule, FormsModule, GoabBlock, + NgStyle, ], }) export class Feat1813Component implements OnInit, AfterViewInit, OnDestroy { diff --git a/apps/prs/angular/src/routes/features/feat2054/feat2054.component.html b/apps/prs/angular/src/routes/features/feat2054/feat2054.component.html index 296546bde5..40daa4330b 100644 --- a/apps/prs/angular/src/routes/features/feat2054/feat2054.component.html +++ b/apps/prs/angular/src/routes/features/feat2054/feat2054.component.html @@ -15,8 +15,8 @@ Dropdown examples + @for (example of examples; track $index) { + @for (item of dropdownItems; track item.value) { + } + } Textarea examples + @for (example of examples; track $index) { + } Tooltip examples -
    + @for (example of examples; track $index) { +
    {{ example.label }} Tooltip content mirrors the textarea copy so the surface width shifts solely from @@ -81,4 +85,5 @@
    + } diff --git a/apps/prs/angular/src/routes/features/feat2054/feat2054.component.ts b/apps/prs/angular/src/routes/features/feat2054/feat2054.component.ts index 75e96f08d6..5fb917e552 100644 --- a/apps/prs/angular/src/routes/features/feat2054/feat2054.component.ts +++ b/apps/prs/angular/src/routes/features/feat2054/feat2054.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBlock, GoabDropdown, @@ -20,7 +20,6 @@ interface MaxWidthExample { templateUrl: "./feat2054.component.html", styleUrls: ["./feat2054.component.css"], imports: [ - CommonModule, GoabBlock, GoabDropdown, GoabDropdownItem, diff --git a/apps/prs/angular/src/routes/features/feat2361/feat2361.component.html b/apps/prs/angular/src/routes/features/feat2361/feat2361.component.html index b2b3e6600f..c07cfd214e 100644 --- a/apps/prs/angular/src/routes/features/feat2361/feat2361.component.html +++ b/apps/prs/angular/src/routes/features/feat2361/feat2361.component.html @@ -30,14 +30,15 @@ [disabled]="disabledActive" [error]="errorActive" > + @for (option of horizontalOptions; track option.value) { + } @@ -52,14 +53,15 @@ [disabled]="disabledActive" [error]="errorActive" > + @for (option of verticalOptions; track option.value) { + } @@ -73,14 +75,15 @@ [disabled]="disabledActive" [error]="errorActive" > + @for (option of checkboxListOptions; track option.value) { + } @@ -90,14 +93,15 @@ requirement="optional" >
    + @for (option of checkboxOptions; track option.value) { + }
    diff --git a/apps/prs/angular/src/routes/features/feat2361/feat2361.component.ts b/apps/prs/angular/src/routes/features/feat2361/feat2361.component.ts index 1ee9c818a2..5634113693 100644 --- a/apps/prs/angular/src/routes/features/feat2361/feat2361.component.ts +++ b/apps/prs/angular/src/routes/features/feat2361/feat2361.component.ts @@ -1,4 +1,3 @@ -import { CommonModule, NgFor } from "@angular/common"; import { Component } from "@angular/core"; import { GoabBlock, @@ -20,8 +19,6 @@ type SelectionOption = { value: string; label: string }; templateUrl: "./feat2361.component.html", styleUrls: ["./feat2361.component.css"], imports: [ - CommonModule, - NgFor, GoabBlock, GoabButton, GoabCheckbox, diff --git a/apps/prs/angular/src/routes/features/feat2469/feat2469.component.html b/apps/prs/angular/src/routes/features/feat2469/feat2469.component.html index ec386cab7c..f13fca1610 100644 --- a/apps/prs/angular/src/routes/features/feat2469/feat2469.component.html +++ b/apps/prs/angular/src/routes/features/feat2469/feat2469.component.html @@ -29,11 +29,13 @@

    Pushed In Content

    - + @for (row of tableData; track $index) { + {{ row.firstName }} {{ row.lastName }} {{ row.numberCol }} + }
    diff --git a/apps/prs/angular/src/routes/features/feat2469/feat2469.component.ts b/apps/prs/angular/src/routes/features/feat2469/feat2469.component.ts index 65639c348f..c8be1598ee 100644 --- a/apps/prs/angular/src/routes/features/feat2469/feat2469.component.ts +++ b/apps/prs/angular/src/routes/features/feat2469/feat2469.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { FormsModule } from "@angular/forms"; import { GoabButton, @@ -34,15 +34,7 @@ function generateFakeData(numRows: number): DataTableFields[] { selector: "abgov-feat2469", templateUrl: "./feat2469.component.html", styleUrls: ["./feat2469.component.css"], - imports: [ - CommonModule, - FormsModule, - GoabButton, - GoabInput, - GoabPageBlock, - GoabPushDrawer, - GoabTable, - ], + imports: [FormsModule, GoabButton, GoabInput, GoabPageBlock, GoabPushDrawer, GoabTable], }) export class Feat2469Component { pushDrawerOpen = false; diff --git a/apps/prs/angular/src/routes/features/feat2492/feat2492.component.html b/apps/prs/angular/src/routes/features/feat2492/feat2492.component.html index 64481a56bd..6e503713ac 100644 --- a/apps/prs/angular/src/routes/features/feat2492/feat2492.component.html +++ b/apps/prs/angular/src/routes/features/feat2492/feat2492.component.html @@ -2,14 +2,18 @@ Feature 2492 - textarea blur preview - Enter text, move focus away, and confirm the onBlur event emits the textarea value for display below. + Enter text, move focus away, and confirm the onBlur event emits the textarea value + for display below. Interactive example - + Captured blur details - - Blur count: {{ blurCount }} - Last value: {{ lastBlurValue || '(empty text)' }} - - - Blur the textarea to capture and render its value. - + @if (blurCount > 0) { + + Blur count: {{ blurCount }} + Last value: {{ lastBlurValue || "(empty text)" }} + + } @else { + Blur the textarea to capture and render its value. + } Event log Change events - - - Change {{ index + 1 }}: {{ entry.value || '(empty text)' }} - - - + @if (changeLog.length) { + + @for (entry of changeLog; track $index; let index = $index) { + + Change {{ index + 1 }}: {{ entry.value || "(empty text)" }} + + } + + } @else { No onChange events captured yet. - + } Key press events - - - Key {{ index + 1 }}: {{ entry.key }} value: {{ entry.value || '(empty text)' }} - - - + @if (keyPressLog.length) { + + @for (entry of keyPressLog; track $index; let index = $index) { + + Key {{ index + 1 }}: {{ entry.key }} � value: + {{ entry.value || "(empty text)" }} + + } + + } @else { No onKeyPress events captured yet. - + }
    diff --git a/apps/prs/angular/src/routes/features/feat2492/feat2492.component.ts b/apps/prs/angular/src/routes/features/feat2492/feat2492.component.ts index ef11696a66..2a7e51cf24 100644 --- a/apps/prs/angular/src/routes/features/feat2492/feat2492.component.ts +++ b/apps/prs/angular/src/routes/features/feat2492/feat2492.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBlock, GoabFormItem, @@ -8,22 +8,18 @@ import { GoabText, GoabTextArea, } from "@abgov/angular-components"; -import { GoabTextAreaOnBlurDetail, GoabTextAreaOnChangeDetail, GoabTextAreaOnKeyPressDetail } from "@abgov/ui-components-common"; +import { + GoabTextAreaOnBlurDetail, + GoabTextAreaOnChangeDetail, + GoabTextAreaOnKeyPressDetail, +} from "@abgov/ui-components-common"; @Component({ standalone: true, selector: "abgov-feat2492", templateUrl: "./feat2492.component.html", styleUrls: ["./feat2492.component.css"], - imports: [ - CommonModule, - GoabBlock, - GoabFormItem, - GoabGrid, - GoabInput, - GoabText, - GoabTextArea, - ], + imports: [GoabBlock, GoabFormItem, GoabGrid, GoabInput, GoabText, GoabTextArea], }) export class Feat2492Component { lastBlurValue = ""; diff --git a/apps/prs/angular/src/routes/features/feat2611-tabs-disabled/feat2611-tabs-disabled.component.ts b/apps/prs/angular/src/routes/features/feat2611-tabs-disabled/feat2611-tabs-disabled.component.ts index bfca090f60..f6d57dd5f0 100644 --- a/apps/prs/angular/src/routes/features/feat2611-tabs-disabled/feat2611-tabs-disabled.component.ts +++ b/apps/prs/angular/src/routes/features/feat2611-tabs-disabled/feat2611-tabs-disabled.component.ts @@ -1,5 +1,4 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; import { GoabTabs, GoabTab, @@ -11,7 +10,7 @@ import { standalone: true, selector: "abgov-feat2611-tabs-disabled", templateUrl: "./feat2611-tabs-disabled.component.html", - imports: [CommonModule, GoabTabs, GoabTab, GoabButtonGroup, GoabButton], + imports: [GoabTabs, GoabTab, GoabButtonGroup, GoabButton], }) export class Feat2611TabsDisabledComponent { setHash(hash: string): void { diff --git a/apps/prs/angular/src/routes/features/feat2611/feat2611.component.ts b/apps/prs/angular/src/routes/features/feat2611/feat2611.component.ts index 21898a982f..baad93befe 100644 --- a/apps/prs/angular/src/routes/features/feat2611/feat2611.component.ts +++ b/apps/prs/angular/src/routes/features/feat2611/feat2611.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabTabs, GoabTab, @@ -16,7 +16,6 @@ import { selector: "abgov-feat2611", templateUrl: "./feat2611.component.html", imports: [ - CommonModule, GoabTabs, GoabTab, GoabBlock, diff --git a/apps/prs/angular/src/routes/features/feat2682/feat2682.component.ts b/apps/prs/angular/src/routes/features/feat2682/feat2682.component.ts index 40ef7fb06f..5feb54f356 100644 --- a/apps/prs/angular/src/routes/features/feat2682/feat2682.component.ts +++ b/apps/prs/angular/src/routes/features/feat2682/feat2682.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabFormItem, GoabDatePicker, @@ -12,7 +12,7 @@ import { GoabDatePickerOnChangeDetail } from "@abgov/ui-components-common"; standalone: true, selector: "abgov-feat2682", templateUrl: "./feat2682.component.html", - imports: [CommonModule, GoabFormItem, GoabDatePicker, GoabBlock, GoabText], + imports: [GoabFormItem, GoabDatePicker, GoabBlock, GoabText], }) export class Feat2682Component { // Calculate min and max dates (one month before and after today) diff --git a/apps/prs/angular/src/routes/features/feat2722/feat2722.component.ts b/apps/prs/angular/src/routes/features/feat2722/feat2722.component.ts index 3dde13669b..369f757b61 100644 --- a/apps/prs/angular/src/routes/features/feat2722/feat2722.component.ts +++ b/apps/prs/angular/src/routes/features/feat2722/feat2722.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabInput, GoabInputNumber, @@ -13,7 +13,7 @@ import { standalone: true, selector: "abgov-feat2722", templateUrl: "./feat2722.component.html", - imports: [CommonModule, GoabInput, GoabInputNumber, GoabBlock, GoabText, GoabFormItem], + imports: [GoabInput, GoabInputNumber, GoabBlock, GoabText, GoabFormItem], }) export class Feat2722Component { textValue = "Sample text input"; diff --git a/apps/prs/angular/src/routes/features/feat2730/feat2730.component.html b/apps/prs/angular/src/routes/features/feat2730/feat2730.component.html index a1c09616fc..9d295e1ff5 100644 --- a/apps/prs/angular/src/routes/features/feat2730/feat2730.component.html +++ b/apps/prs/angular/src/routes/features/feat2730/feat2730.component.html @@ -190,7 +190,8 @@

    Test Results

    Notification History (Last 10)

    -
    + @for (notification of notificationHistory; track notification.uuid) { +
    {{ notification.timestamp.toLocaleTimeString() }} - {{ notification.type }}Notification History (Last 10) UUID: {{ notification.uuid }}
    + } No notifications yet. Try clicking some buttons above! diff --git a/apps/prs/angular/src/routes/features/feat2730/feat2730.component.ts b/apps/prs/angular/src/routes/features/feat2730/feat2730.component.ts index 4e2e4298c5..7308f95c44 100644 --- a/apps/prs/angular/src/routes/features/feat2730/feat2730.component.ts +++ b/apps/prs/angular/src/routes/features/feat2730/feat2730.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabButton, GoabBlock, @@ -22,7 +22,6 @@ import { templateUrl: "./feat2730.component.html", styleUrls: ["./feat2730.component.css"], imports: [ - CommonModule, GoabButton, GoabBlock, GoabText, diff --git a/apps/prs/angular/src/routes/features/feat2829/feat2829.component.ts b/apps/prs/angular/src/routes/features/feat2829/feat2829.component.ts index 06c9be21d0..74c5155f2e 100644 --- a/apps/prs/angular/src/routes/features/feat2829/feat2829.component.ts +++ b/apps/prs/angular/src/routes/features/feat2829/feat2829.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabButton, GoabModal, @@ -13,15 +13,7 @@ import { standalone: true, selector: "abgov-feat2829", templateUrl: "./feat2829.component.html", - imports: [ - CommonModule, - GoabButton, - GoabModal, - GoabText, - GoabInput, - GoabFormItem, - GoabBlock, - ], + imports: [GoabButton, GoabModal, GoabText, GoabInput, GoabFormItem, GoabBlock], }) export class Feat2829Component { isModalOpen = false; diff --git a/apps/prs/angular/src/routes/features/feat3102/feat3102.component.ts b/apps/prs/angular/src/routes/features/feat3102/feat3102.component.ts index 8e300689ce..820a7002b1 100644 --- a/apps/prs/angular/src/routes/features/feat3102/feat3102.component.ts +++ b/apps/prs/angular/src/routes/features/feat3102/feat3102.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; import { GoabBlock, @@ -12,14 +11,7 @@ import { standalone: true, selector: "abgov-feat3102", templateUrl: "./feat3102.component.html", - imports: [ - CommonModule, - GoabBlock, - GoabMenuAction, - GoabMenuButton, - GoabText, - GoabDivider, - ], + imports: [GoabBlock, GoabMenuAction, GoabMenuButton, GoabText, GoabDivider], }) export class Feat3102Component { onAction(e: unknown) { diff --git a/apps/prs/angular/src/routes/features/feat3137/feat3137.component.ts b/apps/prs/angular/src/routes/features/feat3137/feat3137.component.ts index 8cbd10b313..3372965738 100644 --- a/apps/prs/angular/src/routes/features/feat3137/feat3137.component.ts +++ b/apps/prs/angular/src/routes/features/feat3137/feat3137.component.ts @@ -1,17 +1,15 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; -import { GoabxWorkSideMenu, GoabxWorkSideMenuItem, GoabxWorkSideMenuGroup } from "@abgov/angular-components"; +import { + GoabxWorkSideMenu, + GoabxWorkSideMenuItem, + GoabxWorkSideMenuGroup, +} from "@abgov/angular-components"; @Component({ standalone: true, selector: "abgov-feat3137", templateUrl: "./feat3137.component.html", styleUrls: ["./feat3137.component.css"], - imports: [ - CommonModule, - GoabxWorkSideMenu, - GoabxWorkSideMenuGroup, - GoabxWorkSideMenuItem - ], + imports: [GoabxWorkSideMenu, GoabxWorkSideMenuGroup, GoabxWorkSideMenuItem], }) -export class Feat3137Component { } +export class Feat3137Component {} diff --git a/apps/prs/angular/src/routes/features/feat3211/feat3211.component.html b/apps/prs/angular/src/routes/features/feat3211/feat3211.component.html new file mode 100644 index 0000000000..665136cae2 --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3211/feat3211.component.html @@ -0,0 +1,59 @@ +
    +

    Feature 3211 – Angular v21 Upgrade Tests

    + +
    +

    Stepper

    + + + + + + + +
    Page 1 content
    +
    Page 2 content
    +
    Page 3 content
    +
    Page 4 content
    +
    + + Previous + Next + +
    + +

    Input Testing

    + + + + + + + + + + + + $$ + + + +
    diff --git a/apps/prs/angular/src/routes/features/feat3211/feat3211.component.ts b/apps/prs/angular/src/routes/features/feat3211/feat3211.component.ts new file mode 100644 index 0000000000..ac3eeae3ae --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3211/feat3211.component.ts @@ -0,0 +1,45 @@ +import { + GoabBlock, + GoabButton, + GoabButtonGroup, + GoabFormItem, + GoabFormStep, + GoabFormStepper, + GoabFormStepperOnChangeDetail, + GoabFormStepStatus, + GoabInput, + GoabPages, +} from "@abgov/angular-components"; + +import { Component } from "@angular/core"; + +@Component({ + standalone: true, + selector: "abgov-feat3211", + templateUrl: "./feat3211.component.html", + imports: [ + GoabBlock, + GoabButton, + GoabButtonGroup, + GoabFormItem, + GoabFormStep, + GoabFormStepper, + GoabInput, + GoabPages, + ], +}) +export class Feat3211Component { + step = -1; + status: GoabFormStepStatus[] = ["complete", "complete", "incomplete", "not-started"]; + + onChange(detail: GoabFormStepperOnChangeDetail) { + console.log("Changed"); + this.step = detail.step; + } + + setPage(page: number) { + console.log("Page button clicked"); + if (page < 1 || page > 4) return; + this.step = page; + } +} diff --git a/apps/prs/angular/src/routes/features/feat3229/feat3229.component.ts b/apps/prs/angular/src/routes/features/feat3229/feat3229.component.ts index be0efdcb16..750af40ac8 100644 --- a/apps/prs/angular/src/routes/features/feat3229/feat3229.component.ts +++ b/apps/prs/angular/src/routes/features/feat3229/feat3229.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from "@angular/common"; import { Component, OnInit, OnDestroy } from "@angular/core"; import { GoabBlock, @@ -15,7 +14,6 @@ import { GoabMenuButtonOnActionDetail } from "@abgov/ui-components-common"; selector: "abgov-feat3229", templateUrl: "./feat3229.component.html", imports: [ - CommonModule, GoabBlock, GoabDivider, GoabxMenuAction, diff --git a/apps/prs/angular/src/routes/features/feat3241/feat3241.component.ts b/apps/prs/angular/src/routes/features/feat3241/feat3241.component.ts index 3555f99677..09726bc003 100644 --- a/apps/prs/angular/src/routes/features/feat3241/feat3241.component.ts +++ b/apps/prs/angular/src/routes/features/feat3241/feat3241.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; import { GoabAppFooter, @@ -83,7 +82,6 @@ interface User { selector: "abgov-feat3241", templateUrl: "./feat3241.component.html", imports: [ - CommonModule, GoabAppFooter, GoabAppFooterMetaSection, GoabAppFooterNavSection, diff --git a/apps/prs/angular/src/routes/features/feat3306/feat3306.component.html b/apps/prs/angular/src/routes/features/feat3306/feat3306.component.html index 74ebd0d62f..e89c8f69c4 100644 --- a/apps/prs/angular/src/routes/features/feat3306/feat3306.component.html +++ b/apps/prs/angular/src/routes/features/feat3306/feat3306.component.html @@ -7,9 +7,7 @@ - Feature 3306 - Add ability to set the `slug` for a Tab component. This slug value will work for - tabs that use a string `heading` value as well as when a `heading` slot is - defined. + The "OnChange" event should only fire once per click on the stepper items @@ -28,26 +26,30 @@ - - - - - Lorem Ipsum - 1234567890 - - Action - - - - - - - Lorem Ipsum - 1234567890 - - Action - - + @for (i of review; track $index) { + + + + + Lorem Ipsum + 1234567890 + + Action + + + } + @for (i of complete; track $index) { + + + + + Lorem Ipsum + 1234567890 + + Action + + + } @@ -66,16 +68,18 @@ - - - - - Lorem Ipsum - 1234567890 - - Action - - + @for (i of review; track $index) { + + + + + Lorem Ipsum + 1234567890 + + Action + + + } @@ -93,19 +97,20 @@ - - - - - Lorem Ipsum - 1234567890 - - Action - - + @for (i of complete; track $index) { + + + + + Lorem Ipsum + 1234567890 + + Action + + + } - diff --git a/apps/prs/angular/src/routes/features/feat3306/feat3306.component.ts b/apps/prs/angular/src/routes/features/feat3306/feat3306.component.ts index 612b09518f..63c8edf37e 100644 --- a/apps/prs/angular/src/routes/features/feat3306/feat3306.component.ts +++ b/apps/prs/angular/src/routes/features/feat3306/feat3306.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; import { GoabBlock, @@ -16,7 +15,6 @@ import { selector: "abgov-feat3306", templateUrl: "./feat3306.component.html", imports: [ - CommonModule, GoabBlock, GoabText, GoabDivider, diff --git a/apps/prs/angular/src/routes/features/feat3370/feat3370.component.ts b/apps/prs/angular/src/routes/features/feat3370/feat3370.component.ts index 8896bade1a..73a4216de7 100644 --- a/apps/prs/angular/src/routes/features/feat3370/feat3370.component.ts +++ b/apps/prs/angular/src/routes/features/feat3370/feat3370.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; import { GoabButton, @@ -15,7 +14,7 @@ import { standalone: true, selector: "abgov-feat3370", templateUrl: "./feat3370.component.html", - imports: [CommonModule, GoabButton, GoabButtonGroup, GoabCalendar, GoabDatePicker], + imports: [GoabButton, GoabButtonGroup, GoabCalendar, GoabDatePicker], }) export class Feat3370Component { calendarValue: Date | string = ""; diff --git a/apps/prs/angular/src/routes/features/feat3396/feat3396.component.ts b/apps/prs/angular/src/routes/features/feat3396/feat3396.component.ts index d1795136ab..a267ac2c08 100644 --- a/apps/prs/angular/src/routes/features/feat3396/feat3396.component.ts +++ b/apps/prs/angular/src/routes/features/feat3396/feat3396.component.ts @@ -1,11 +1,10 @@ -import { CommonModule } from "@angular/common"; import { Component } from "@angular/core"; -import { GoabBlock, GoabDivider, GoabLink, GoabText } from "@abgov/angular-components"; +import { GoabDivider, GoabLink, GoabText } from "@abgov/angular-components"; @Component({ standalone: true, selector: "abgov-feat3396", templateUrl: "./feat3396.component.html", - imports: [CommonModule, GoabBlock, GoabDivider, GoabLink, GoabText], + imports: [GoabDivider, GoabLink, GoabText], }) export class Feat3396Component {} diff --git a/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.html b/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.html index 908eea3d2b..837633b1be 100644 --- a/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.html +++ b/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.html @@ -6,8 +6,8 @@ - 1. Checkbox auto-margin removed - Checkboxes no longer have - default bottom margin, fixing alignment in tables + 1. Checkbox auto-margin removed - Checkboxes no longer have default + bottom margin, fixing alignment in tables 2. CheckboxList gap - CheckboxList now controls its own spacing @@ -22,8 +22,8 @@ Test 1: Checkbox in Table - Previously, checkboxes in tables had unwanted bottom margin causing misalignment. - Now they align properly with the row content. + Previously, checkboxes in tables had unwanted bottom margin causing misalignment. Now + they align properly with the row content. @@ -44,19 +44,21 @@ - - - - - {{ row.name }} - {{ row.email }} - {{ row.status }} - + @for (row of tableData; track row.id) { + + + + + {{ row.name }} + {{ row.email }} + {{ row.status }} + + } @@ -86,7 +88,7 @@ - Selected: {{ checkboxListValue.length > 0 ? checkboxListValue.join(', ') : 'none' }} + Selected: {{ checkboxListValue.length > 0 ? checkboxListValue.join(", ") : "none" }} @@ -105,13 +107,25 @@ [value]="compactListValue" (onChange)="onCompactListChange($event)" > - - - + + + - Selected: {{ compactListValue.length > 0 ? compactListValue.join(', ') : 'none' }} + Selected: {{ compactListValue.length > 0 ? compactListValue.join(", ") : "none" }} @@ -121,8 +135,8 @@ Test 4: V2 Standalone Checkbox (No Auto-Margin) - V2 checkboxes no longer have default bottom margin. - Spacing should be controlled by the parent layout. + V2 checkboxes no longer have default bottom margin. Spacing should be controlled by + the parent layout. @@ -138,9 +152,7 @@ - - V1 Regression Tests - + V1 Regression Tests These tests verify V1 checkboxes still behave correctly after the V2 spacing changes. @@ -154,8 +166,14 @@
    - - + +
    @@ -165,7 +183,8 @@ Test 6: V1 CheckboxList (No Gap Change) - V1 checkbox lists should look the same as before - individual checkbox margins control spacing, list gap is 0. + V1 checkbox lists should look the same as before - individual checkbox margins control + spacing, list gap is 0. - Selected: {{ v1ListValue.length > 0 ? v1ListValue.join(', ') : 'none' }} + Selected: {{ v1ListValue.length > 0 ? v1ListValue.join(", ") : "none" }}
    diff --git a/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.ts b/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.ts index b90ed46470..9faceaf8c4 100644 --- a/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.ts +++ b/apps/prs/angular/src/routes/features/featV2Checkbox/featV2Checkbox.component.ts @@ -11,14 +11,12 @@ import { GoabCheckboxOnChangeDetail, GoabCheckboxListOnChangeDetail, } from "@abgov/angular-components"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "abgov-feat-v2-checkbox", templateUrl: "./featV2Checkbox.component.html", imports: [ - CommonModule, GoabCheckbox, GoabCheckboxList, GoabxCheckbox, @@ -55,7 +53,7 @@ export class FeatV2CheckboxComponent { toggleSelectAll(event: GoabCheckboxOnChangeDetail) { if (event.checked) { - this.selectedRows = new Set(this.tableData.map(row => row.id)); + this.selectedRows = new Set(this.tableData.map((row) => row.id)); } else { this.selectedRows = new Set(); } diff --git a/docs/src/content/examples/add-a-filter-chip/angular.html b/docs/src/content/examples/add-a-filter-chip/angular.html index 84a3cf6ff7..34fbaffeac 100644 --- a/docs/src/content/examples/add-a-filter-chip/angular.html +++ b/docs/src/content/examples/add-a-filter-chip/angular.html @@ -1,11 +1,12 @@
    + @for (filter of activeFilters; track filter) { + }
    Add Random Filter diff --git a/docs/src/content/examples/dynamically-add-an-item-to-a-dropdown-list/angular.html b/docs/src/content/examples/dynamically-add-an-item-to-a-dropdown-list/angular.html index 89ff70d6b2..14de03c894 100644 --- a/docs/src/content/examples/dynamically-add-an-item-to-a-dropdown-list/angular.html +++ b/docs/src/content/examples/dynamically-add-an-item-to-a-dropdown-list/angular.html @@ -38,12 +38,13 @@ [value]="selectedTask" name="selectedTask" (onChange)="onSelectedTaskChange($event)"> + @for (task of tasks; track task.value) { + } diff --git a/docs/src/content/examples/dynamically-change-items-in-a-dropdown-list/angular.html b/docs/src/content/examples/dynamically-change-items-in-a-dropdown-list/angular.html index ba6e12440d..725d0b4e93 100644 --- a/docs/src/content/examples/dynamically-change-items-in-a-dropdown-list/angular.html +++ b/docs/src/content/examples/dynamically-change-items-in-a-dropdown-list/angular.html @@ -1,19 +1,22 @@
    - + @for (parent of parents; track parent) { + + } + @for (child of children; track child) { + } diff --git a/docs/src/content/examples/filter-data-in-a-table/angular.html b/docs/src/content/examples/filter-data-in-a-table/angular.html index 73c23db0ac..e83a7ca248 100644 --- a/docs/src/content/examples/filter-data-in-a-table/angular.html +++ b/docs/src/content/examples/filter-data-in-a-table/angular.html @@ -1,57 +1,66 @@ - -
    - - -
    - - Filter - -
    -
    - - - - Filter: - - - - - Clear all + +
    + + +
    + + Filter -
    + + + +@if (typedChips.length > 0) { + + Filter: + @for (typedChip of typedChips; track typedChip; let index = $index) { + + + } + + Clear all + + +} - - - - Status - Name - ID Number - - - - - - - - {{ item.name }} - {{ item.id }} - - - + + + + Status + Name + ID Number + + + + @for (item of dataFiltered; track $index) { + + + + + {{ item.name }} + {{ item.id }} + + } + + - - No results found - +@if (dataFiltered.length === 0 && data.length > 0) { + No results found +} diff --git a/docs/src/content/examples/remove-a-filter/angular.html b/docs/src/content/examples/remove-a-filter/angular.html index f2cbb5fa32..1bdafd7a1f 100644 --- a/docs/src/content/examples/remove-a-filter/angular.html +++ b/docs/src/content/examples/remove-a-filter/angular.html @@ -1,8 +1,9 @@
    + @for (chip of chips; track chip) { + }
    diff --git a/docs/src/content/examples/set-a-specific-tab-to-be-active/angular.html b/docs/src/content/examples/set-a-specific-tab-to-be-active/angular.html index dd2b46f167..fbc85e828b 100644 --- a/docs/src/content/examples/set-a-specific-tab-to-be-active/angular.html +++ b/docs/src/content/examples/set-a-specific-tab-to-be-active/angular.html @@ -10,7 +10,8 @@ - + @for (i of review; track $index) { + @@ -20,7 +21,8 @@ Action - + } @for (i of complete; track $index) { + @@ -30,11 +32,18 @@ Action + } - Review pending + Review pending @@ -45,7 +54,8 @@ - + @for (i of review; track $index) { + @@ -55,11 +65,14 @@ Action + } - Complete + Complete @@ -70,7 +83,8 @@ - + @for (i of complete; track $index) { + @@ -80,6 +94,7 @@ Action + } diff --git a/docs/src/content/examples/show-different-views-of-data-in-a-table/angular.html b/docs/src/content/examples/show-different-views-of-data-in-a-table/angular.html index c203155cce..65160ab4d1 100644 --- a/docs/src/content/examples/show-different-views-of-data-in-a-table/angular.html +++ b/docs/src/content/examples/show-different-views-of-data-in-a-table/angular.html @@ -10,18 +10,22 @@ - + @for (i of reviewItems; track $index) { + Lorem ipsum 1234567890 Action - + } + @for (i of completeItems; track $index) { + Lorem Ipsum 1234567890 Action + } @@ -37,12 +41,14 @@ - + @for (i of reviewItems; track $index) { + Lorem ipsum 1234567890 Action + } @@ -58,12 +64,14 @@ - + @for (i of completeItems; track $index) { + Lorem Ipsum 1234567890 Action + } diff --git a/docs/src/content/examples/show-multiple-actions-in-a-compact-table/angular.html b/docs/src/content/examples/show-multiple-actions-in-a-compact-table/angular.html index d05bfb062a..d69d75c9c1 100644 --- a/docs/src/content/examples/show-multiple-actions-in-a-compact-table/angular.html +++ b/docs/src/content/examples/show-multiple-actions-in-a-compact-table/angular.html @@ -8,7 +8,8 @@ - + @for (row of rows; track row.id) { + @@ -22,5 +23,6 @@ + } diff --git a/docs/src/content/examples/show-number-of-results-per-page/angular.html b/docs/src/content/examples/show-number-of-results-per-page/angular.html index 2c2a87170c..90ee1c2aa8 100644 --- a/docs/src/content/examples/show-number-of-results-per-page/angular.html +++ b/docs/src/content/examples/show-number-of-results-per-page/angular.html @@ -7,11 +7,13 @@ - + @for (user of pageUsers; track $index) { + {{ user.firstName }} {{ user.lastName }} {{ user.age }} + } diff --git a/docs/src/content/examples/show-status-in-a-table/angular.html b/docs/src/content/examples/show-status-in-a-table/angular.html index e87a799bca..06218b868e 100644 --- a/docs/src/content/examples/show-status-in-a-table/angular.html +++ b/docs/src/content/examples/show-status-in-a-table/angular.html @@ -8,7 +8,8 @@ - + @for (badge of badgeValues; track $index) { + @@ -18,5 +19,6 @@ Assign + } diff --git a/docs/src/content/examples/sort-data-in-a-table/angular.html b/docs/src/content/examples/sort-data-in-a-table/angular.html index 109c527f70..0b5da88aa4 100644 --- a/docs/src/content/examples/sort-data-in-a-table/angular.html +++ b/docs/src/content/examples/sort-data-in-a-table/angular.html @@ -13,10 +13,12 @@ - + @for (user of users; track $index) { + {{ user.firstName }} {{ user.lastName }} {{ user.age }} + } diff --git a/docs/src/content/examples/type-to-create-a-new-filter/angular.html b/docs/src/content/examples/type-to-create-a-new-filter/angular.html index 5d8273764a..24e35f365f 100644 --- a/docs/src/content/examples/type-to-create-a-new-filter/angular.html +++ b/docs/src/content/examples/type-to-create-a-new-filter/angular.html @@ -3,15 +3,20 @@ [value]="inputValue" (onChange)="handleInputChange($event)" (onKeyPress)="handleInputKeyPress($event)" - width="100%"> + width="100%" + > -
    +@if (typedChips.length > 0) { +
    + @for (typedChip of typedChips; track typedChip) { + (onClick)="removeTypedChip(typedChip)" + > + }
    +} diff --git a/jest.preset.js b/jest.preset.js index e6c8ebea00..0640263d2c 100644 --- a/jest.preset.js +++ b/jest.preset.js @@ -1,3 +1,3 @@ -const nxPreset = require('@nrwl/jest/preset').default; +const nxPreset = require("@nx/jest/preset").default; module.exports = { ...nxPreset }; diff --git a/libs/angular-components/jest.config.ts b/libs/angular-components/jest.config.ts index c9d3f7c02c..af4a49e0c4 100644 --- a/libs/angular-components/jest.config.ts +++ b/libs/angular-components/jest.config.ts @@ -19,4 +19,8 @@ export default { "jest-preset-angular/build/serializers/ng-snapshot", "jest-preset-angular/build/serializers/html-comment", ], + testEnvironmentOptions: { + errorOnUnknownElements: true, + errorOnUnknownProperties: true, + }, }; diff --git a/libs/angular-components/package.json b/libs/angular-components/package.json index 628343f127..b6d2402945 100644 --- a/libs/angular-components/package.json +++ b/libs/angular-components/package.json @@ -18,9 +18,9 @@ }, "peerDependencies": { "@abgov/ui-components-common": "^0.0.0 || ^1.0.0", - "@angular/forms": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/common": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/core": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0" + "@angular/forms": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0", + "@angular/common": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0", + "@angular/core": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0" }, "sideEffects": false } diff --git a/libs/angular-components/src/experimental/badge/badge.ts b/libs/angular-components/src/experimental/badge/badge.ts index ea69ec5dab..18c548b8d8 100644 --- a/libs/angular-components/src/experimental/badge/badge.ts +++ b/libs/angular-components/src/experimental/badge/badge.ts @@ -12,33 +12,34 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goabx-badge", template: ` - - + @if (isReady) { + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], + styles: [ ` :host { diff --git a/libs/angular-components/src/experimental/button/button.spec.ts b/libs/angular-components/src/experimental/button/button.spec.ts index c8cecded41..25a647faa3 100644 --- a/libs/angular-components/src/experimental/button/button.spec.ts +++ b/libs/angular-components/src/experimental/button/button.spec.ts @@ -1,7 +1,13 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from "@angular/core/testing"; import { GoabxButton } from "./button"; import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { GoabButtonSize, GoabButtonVariant, GoabIconType, Spacing, GoabButtonType } from "@abgov/ui-components-common"; +import { + GoabButtonSize, + GoabButtonVariant, + GoabIconType, + Spacing, + GoabButtonType, +} from "@abgov/ui-components-common"; import { By } from "@angular/platform-browser"; import { fireEvent } from "@testing-library/dom"; @@ -21,12 +27,13 @@ import { fireEvent } from "@testing-library/dom"; [mb]="mb" [ml]="ml" [mr]="mr" - (onClick)="onClick()"> - {{buttonText}} + (onClick)="onClick()" + > + {{ buttonText }} - ` + `, }) -class TestButtonComponent{ +class TestButtonComponent { type?: GoabButtonType; size?: GoabButtonSize; variant?: GoabButtonVariant; @@ -43,7 +50,6 @@ class TestButtonComponent{ onClick() { /* do nothing */ } - } describe("GoABButton", () => { @@ -94,5 +100,5 @@ describe("GoABButton", () => { fireEvent(buttonElement, new CustomEvent("_click")); expect(onClick).toHaveBeenCalled(); - })) -}) + })); +}); diff --git a/libs/angular-components/src/experimental/button/button.ts b/libs/angular-components/src/experimental/button/button.ts index 02bfaf735c..cc88aa8b93 100644 --- a/libs/angular-components/src/experimental/button/button.ts +++ b/libs/angular-components/src/experimental/button/button.ts @@ -14,36 +14,37 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goabx-button", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/experimental/calendar/calendar.ts b/libs/angular-components/src/experimental/calendar/calendar.ts index a2b3ab4646..810dd187f2 100644 --- a/libs/angular-components/src/experimental/calendar/calendar.ts +++ b/libs/angular-components/src/experimental/calendar/calendar.ts @@ -8,30 +8,31 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goabx-calendar", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/experimental/callout/callout.ts b/libs/angular-components/src/experimental/callout/callout.ts index ea2855d53f..d32a550e71 100644 --- a/libs/angular-components/src/experimental/callout/callout.ts +++ b/libs/angular-components/src/experimental/callout/callout.ts @@ -12,32 +12,33 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goabx-callout", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/experimental/checkbox-list/checkbox-list.ts b/libs/angular-components/src/experimental/checkbox-list/checkbox-list.ts index b1da9ef847..124b80f8d8 100644 --- a/libs/angular-components/src/experimental/checkbox-list/checkbox-list.ts +++ b/libs/angular-components/src/experimental/checkbox-list/checkbox-list.ts @@ -11,33 +11,34 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { CommonModule } from "@angular/common"; + import { GoabControlValueAccessor } from "../base.component"; @Component({ standalone: true, selector: "goabx-checkbox-list", - template: ` - - `, + template: `@if (isReady) { + + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], + providers: [ { provide: NG_VALUE_ACCESSOR, @@ -73,7 +74,10 @@ export class GoabxCheckboxList extends GoabControlValueAccessor implements OnIni @Output() onChange = new EventEmitter(); _onChange(e: Event) { - const detail = { ...(e as CustomEvent).detail, event: e }; + const detail = { + ...(e as CustomEvent).detail, + event: e, + }; this.onChange.emit(detail); this.markAsTouched(); diff --git a/libs/angular-components/src/experimental/checkbox/checkbox.ts b/libs/angular-components/src/experimental/checkbox/checkbox.ts index 72dbe2c89f..eff760ee30 100644 --- a/libs/angular-components/src/experimental/checkbox/checkbox.ts +++ b/libs/angular-components/src/experimental/checkbox/checkbox.ts @@ -16,44 +16,47 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; import { GoabControlValueAccessor } from "../base.component"; @Component({ standalone: true, selector: "goabx-checkbox", - template: ` - -
    - -
    -
    - -
    -
    `, + template: `@if (isReady) { + + +
    + +
    + @if (reveal) { +
    + +
    + } +
    + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { @@ -62,7 +65,7 @@ import { GoabControlValueAccessor } from "../base.component"; useExisting: forwardRef(() => GoabxCheckbox), }, ], - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], }) export class GoabxCheckbox extends GoabControlValueAccessor implements OnInit { isReady = false; diff --git a/libs/angular-components/src/experimental/date-picker/date-picker.ts b/libs/angular-components/src/experimental/date-picker/date-picker.ts index edd92c0056..cd76fee3bf 100644 --- a/libs/angular-components/src/experimental/date-picker/date-picker.ts +++ b/libs/angular-components/src/experimental/date-picker/date-picker.ts @@ -16,34 +16,35 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { CommonModule } from "@angular/common"; + import { GoabControlValueAccessor } from "../base.component"; @Component({ standalone: true, selector: "goabx-date-picker", - imports: [CommonModule], - template: ` - `, + + template: `@if (isReady) { + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { @@ -81,7 +82,10 @@ export class GoabxDatePicker extends GoabControlValueAccessor implements OnInit } _onChange(e: Event) { - const detail = { ...(e as CustomEvent).detail, event: e }; + const detail = { + ...(e as CustomEvent).detail, + event: e, + }; this.onChange.emit(detail); this.markAsTouched(); this.fcChange?.(detail.value); @@ -115,8 +119,9 @@ export class GoabxDatePicker extends GoabControlValueAccessor implements OnInit this.elementRef.nativeElement.disabled = isDisabled; } - @HostListener("disabledChange", ["$event.detail.disabled"]) - listenDisabledChange(isDisabled: boolean) { + @HostListener("disabledChange", ["$event"]) + listenDisabledChange(event: Event) { + const isDisabled = (event as CustomEvent<{ disabled: boolean }>).detail.disabled; this.setDisabledState(isDisabled); } diff --git a/libs/angular-components/src/experimental/drawer/drawer.ts b/libs/angular-components/src/experimental/drawer/drawer.ts index b64341aa49..4a5b1fe7b8 100644 --- a/libs/angular-components/src/experimental/drawer/drawer.ts +++ b/libs/angular-components/src/experimental/drawer/drawer.ts @@ -1,4 +1,4 @@ -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; import { booleanAttribute, Component, @@ -15,10 +15,9 @@ import { GoabDrawerPosition, GoabDrawerSize } from "@abgov/ui-components-common" @Component({ standalone: true, selector: "goabx-drawer", - imports: [NgTemplateOutlet, CommonModule], - template: ` + imports: [NgTemplateOutlet], + template: `@if (isReady) {
    - `, + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxDrawer implements OnInit { diff --git a/libs/angular-components/src/experimental/dropdown-item/dropdown-item.ts b/libs/angular-components/src/experimental/dropdown-item/dropdown-item.ts index 98a6d58f32..5e0b61c6a4 100644 --- a/libs/angular-components/src/experimental/dropdown-item/dropdown-item.ts +++ b/libs/angular-components/src/experimental/dropdown-item/dropdown-item.ts @@ -5,15 +5,14 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabDropdownItemMountType } from "@abgov/ui-components-common"; @Component({ standalone: true, selector: "goabx-dropdown-item", - template: ` + template: ` @if (isReady) { - `, + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabxDropdownItem implements OnInit { @Input() value?: string; diff --git a/libs/angular-components/src/experimental/dropdown/dropdown.ts b/libs/angular-components/src/experimental/dropdown/dropdown.ts index e59151c5be..cb7b351f35 100644 --- a/libs/angular-components/src/experimental/dropdown/dropdown.ts +++ b/libs/angular-components/src/experimental/dropdown/dropdown.ts @@ -16,46 +16,47 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { CommonModule } from "@angular/common"; + import { GoabControlValueAccessor } from "../base.component"; // "disabled", "value", "id" is an exposed property of HTMLInputElement, no need to bind with attr @Component({ standalone: true, selector: "goabx-dropdown", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ diff --git a/libs/angular-components/src/experimental/file-upload-card/file-upload-card.ts b/libs/angular-components/src/experimental/file-upload-card/file-upload-card.ts index 15efa2af0a..38dad59070 100644 --- a/libs/angular-components/src/experimental/file-upload-card/file-upload-card.ts +++ b/libs/angular-components/src/experimental/file-upload-card/file-upload-card.ts @@ -12,26 +12,25 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goabx-file-upload-card", - template: ` - `, + template: ` @if (isReady) { + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabxFileUploadCard implements OnInit { @Input({ required: true }) filename!: string; diff --git a/libs/angular-components/src/experimental/file-upload-input/file-upload-input.ts b/libs/angular-components/src/experimental/file-upload-input/file-upload-input.ts index 74f5ff8fcd..cb4fe76aae 100644 --- a/libs/angular-components/src/experimental/file-upload-input/file-upload-input.ts +++ b/libs/angular-components/src/experimental/file-upload-input/file-upload-input.ts @@ -11,29 +11,29 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goabx-file-upload-input", - template: ` - `, + template: ` @if (isReady) { + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabxFileUploadInput extends GoabBaseComponent implements OnInit { @Input() id?: string = ""; @@ -60,7 +60,10 @@ export class GoabxFileUploadInput extends GoabBaseComponent implements OnInit { } _onSelectFile(e: Event) { - const detail = { ...(e as CustomEvent).detail, event: e }; + const detail = { + ...(e as CustomEvent).detail, + event: e, + }; this.onSelectFile.emit(detail); } } diff --git a/libs/angular-components/src/experimental/filter-chip/filter-chip.spec.ts b/libs/angular-components/src/experimental/filter-chip/filter-chip.spec.ts index 6d64ce4afd..1bedccf79e 100644 --- a/libs/angular-components/src/experimental/filter-chip/filter-chip.spec.ts +++ b/libs/angular-components/src/experimental/filter-chip/filter-chip.spec.ts @@ -64,7 +64,9 @@ describe("GoabxFilterChip", () => { })); it("should render properties", () => { - const chipElement = fixture.debugElement.query(By.css("goa-filter-chip")).nativeElement; + const chipElement = fixture.debugElement.query( + By.css("goa-filter-chip"), + ).nativeElement; expect(chipElement.getAttribute("error")).toBe(`${component.error}`); expect(chipElement.getAttribute("content")).toBe(component.content); expect(chipElement.getAttribute("icontheme")).toBe(`${component.iconTheme}`); @@ -77,7 +79,9 @@ describe("GoabxFilterChip", () => { it("should allow to handle delete event", fakeAsync(() => { const onClick = jest.spyOn(component, "onClick"); - const chipElement = fixture.debugElement.query(By.css("goa-filter-chip")).nativeElement; + const chipElement = fixture.debugElement.query( + By.css("goa-filter-chip"), + ).nativeElement; fireEvent(chipElement, new CustomEvent("_click")); expect(onClick).toHaveBeenCalled(); diff --git a/libs/angular-components/src/experimental/filter-chip/filter-chip.ts b/libs/angular-components/src/experimental/filter-chip/filter-chip.ts index 809ae03263..26ccdce1c0 100644 --- a/libs/angular-components/src/experimental/filter-chip/filter-chip.ts +++ b/libs/angular-components/src/experimental/filter-chip/filter-chip.ts @@ -9,31 +9,31 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goabx-filter-chip", - template: ` - - `, + template: `@if (isReady) { + + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabxFilterChip extends GoabBaseComponent implements OnInit { @Input({ transform: booleanAttribute }) error?: boolean; diff --git a/libs/angular-components/src/experimental/footer-meta-section/footer-meta-section.ts b/libs/angular-components/src/experimental/footer-meta-section/footer-meta-section.ts index 2997cf66e8..23694e6589 100644 --- a/libs/angular-components/src/experimental/footer-meta-section/footer-meta-section.ts +++ b/libs/angular-components/src/experimental/footer-meta-section/footer-meta-section.ts @@ -5,19 +5,17 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goabx-app-footer-meta-section", - template: ` - + template: `@if (isReady) { + - `, + }`, styles: [":host { width: 100%; }"], schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabxAppFooterMetaSection implements OnInit { @Input() testId?: string; diff --git a/libs/angular-components/src/experimental/footer-nav-section/footer-nav-section.ts b/libs/angular-components/src/experimental/footer-nav-section/footer-nav-section.ts index 57486667ff..97aab6be7f 100644 --- a/libs/angular-components/src/experimental/footer-nav-section/footer-nav-section.ts +++ b/libs/angular-components/src/experimental/footer-nav-section/footer-nav-section.ts @@ -5,24 +5,21 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goabx-app-footer-nav-section", - template: ` + template: `@if (isReady) { - `, + }`, styles: [":host { width: 100%; }"], schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabxAppFooterNavSection implements OnInit { @Input() heading?: string; diff --git a/libs/angular-components/src/experimental/footer/footer.ts b/libs/angular-components/src/experimental/footer/footer.ts index a7aebd5425..1390997226 100644 --- a/libs/angular-components/src/experimental/footer/footer.ts +++ b/libs/angular-components/src/experimental/footer/footer.ts @@ -5,14 +5,12 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goabx-app-footer", - template: ` + template: `@if (isReady) { - `, + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabxAppFooter implements OnInit { @Input() maxContentWidth?: string; diff --git a/libs/angular-components/src/experimental/form-item/form-item.spec.ts b/libs/angular-components/src/experimental/form-item/form-item.spec.ts index 94ff893f76..09af9b1f21 100644 --- a/libs/angular-components/src/experimental/form-item/form-item.spec.ts +++ b/libs/angular-components/src/experimental/form-item/form-item.spec.ts @@ -4,11 +4,10 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; import { GoabFormItemRequirement, Spacing } from "@abgov/ui-components-common"; import { By } from "@angular/platform-browser"; import { GoabxFormItemSlot } from "./form-item-slot"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, - imports: [GoabxFormItem, GoabxFormItemSlot, CommonModule], + imports: [GoabxFormItem, GoabxFormItemSlot], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: ` - This is an error slot - This is a helpText slot + @if (errorSlot) { + This is an error slot + } + @if (helpTextSlot) { + + This is a helpText slot + + } `, }) diff --git a/libs/angular-components/src/experimental/form-item/form-item.ts b/libs/angular-components/src/experimental/form-item/form-item.ts index acf0feb4b2..0683c9c8fe 100644 --- a/libs/angular-components/src/experimental/form-item/form-item.ts +++ b/libs/angular-components/src/experimental/form-item/form-item.ts @@ -9,16 +9,15 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; import { GoabFormItemType } from "@abgov/ui-components-common"; @Component({ standalone: true, selector: "goabx-form-item", - template: ` + template: `@if (isReady) { - `, + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabxFormItem extends GoabBaseComponent implements OnInit { @Input() label?: string; diff --git a/libs/angular-components/src/experimental/input/input.spec.ts b/libs/angular-components/src/experimental/input/input.spec.ts index 304761937a..50cd7ce3b5 100644 --- a/libs/angular-components/src/experimental/input/input.spec.ts +++ b/libs/angular-components/src/experimental/input/input.spec.ts @@ -222,7 +222,7 @@ describe("GoABInput", () => { new CustomEvent("_change", { detail: { name: "foo", value: "new value" } }), ); - expect(validateOnChange).toBeCalledWith( + expect(validateOnChange).toHaveBeenCalledWith( expect.objectContaining({ name: "foo", value: "new value", @@ -238,7 +238,7 @@ describe("GoABInput", () => { fireEvent(input, new CustomEvent("_focus")); - expect(validateOnFocus).toBeCalled(); + expect(validateOnFocus).toHaveBeenCalled(); }); it("should handle onBlur event", () => { @@ -248,7 +248,7 @@ describe("GoABInput", () => { fireEvent(input, new CustomEvent("_blur")); - expect(validateOnBlur).toBeCalled(); + expect(validateOnBlur).toHaveBeenCalled(); }); it("should handle onKeyPress event", () => { @@ -258,7 +258,7 @@ describe("GoABInput", () => { fireEvent(input, new CustomEvent("_keyPress")); - expect(validateOnKeyPress).toBeCalled(); + expect(validateOnKeyPress).toHaveBeenCalled(); }); it("should render leading and trailing content", () => { diff --git a/libs/angular-components/src/experimental/input/input.ts b/libs/angular-components/src/experimental/input/input.ts index 1a352983e5..231e87518b 100644 --- a/libs/angular-components/src/experimental/input/input.ts +++ b/libs/angular-components/src/experimental/input/input.ts @@ -24,16 +24,15 @@ import { } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; import { GoabControlValueAccessor } from "../base.component"; -import { NgIf, NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; @Component({ standalone: true, selector: "goabx-input", - imports: [NgIf, NgTemplateOutlet, CommonModule], - template: ` + imports: [NgTemplateOutlet], + template: `@if (isReady) { -
    - - - - - {{ getLeadingContentAsString() }} - -
    + @if (leadingContent) { +
    + @if (getLeadingContentAsTemplate()) { + + + } @else { + {{ getLeadingContentAsString() }} + } +
    + } -
    - - + @if (trailingContent) { +
    + @if (getTrailingContentAsTemplate()) { - - {{ getTrailingContentAsString() }} - -
    + } @else { + {{ getTrailingContentAsString() }} + } +
    + }
    - `, + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { diff --git a/libs/angular-components/src/experimental/link/link.ts b/libs/angular-components/src/experimental/link/link.ts index 76cffb9441..1849fda32d 100644 --- a/libs/angular-components/src/experimental/link/link.ts +++ b/libs/angular-components/src/experimental/link/link.ts @@ -11,31 +11,31 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goabx-link", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxLink implements OnInit { diff --git a/libs/angular-components/src/experimental/modal/modal.ts b/libs/angular-components/src/experimental/modal/modal.ts index 565711a289..b2ca999cad 100644 --- a/libs/angular-components/src/experimental/modal/modal.ts +++ b/libs/angular-components/src/experimental/modal/modal.ts @@ -13,37 +13,42 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; @Component({ standalone: true, selector: "goabx-modal", - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - -
    - -
    +
    + @if (this.heading !== "" && getHeadingAsTemplate() !== null) { + + } +
    - + -
    - -
    -
    - `, +
    + @if (this.actions) { + + } +
    + + } + `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxModal implements OnInit { diff --git a/libs/angular-components/src/experimental/notification/notification.ts b/libs/angular-components/src/experimental/notification/notification.ts index 7ab3380484..f799b9eac9 100644 --- a/libs/angular-components/src/experimental/notification/notification.ts +++ b/libs/angular-components/src/experimental/notification/notification.ts @@ -13,27 +13,27 @@ import { ChangeDetectorRef, booleanAttribute, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goabx-notification", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxNotification implements OnInit { diff --git a/libs/angular-components/src/experimental/pagination/pagination.spec.ts b/libs/angular-components/src/experimental/pagination/pagination.spec.ts index 78a782b9f2..09edac9e8b 100644 --- a/libs/angular-components/src/experimental/pagination/pagination.spec.ts +++ b/libs/angular-components/src/experimental/pagination/pagination.spec.ts @@ -1,23 +1,29 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from "@angular/core/testing"; import { GoabxPagination } from "./pagination"; import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { GoabPaginationOnChangeDetail, GoabPaginationVariant, Spacing } from "@abgov/ui-components-common"; +import { + GoabPaginationOnChangeDetail, + GoabPaginationVariant, + Spacing, +} from "@abgov/ui-components-common"; @Component({ standalone: true, imports: [GoabxPagination], template: ` - - - ` + + + `, }) class TestPaginationComponent { itemCount = 100; @@ -25,11 +31,13 @@ class TestPaginationComponent { perPageCount = 20; variant = "all" as GoabPaginationVariant; mt = "s" as Spacing; - mb = "m" as Spacing; - ml = "l" as Spacing; - mr = "xl" as Spacing; + mb = "m" as Spacing; + ml = "l" as Spacing; + mr = "xl" as Spacing; - onChange = (event: GoabPaginationOnChangeDetail) => {/** do nothing **/}; + onChange = (event: GoabPaginationOnChangeDetail) => { + /** do nothing **/ + }; } describe("GoABPagination", () => { @@ -39,7 +47,7 @@ describe("GoABPagination", () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ imports: [GoabxPagination, TestPaginationComponent], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); fixture = TestBed.createComponent(TestPaginationComponent); @@ -59,7 +67,7 @@ describe("GoABPagination", () => { expect(el.getAttribute("mt")).toBe(component.mt); expect(el.getAttribute("mb")).toBe(component.mb); expect(el.getAttribute("ml")).toBe(component.ml); - expect(el.getAttribute("mr")).toBe( component.mr); + expect(el.getAttribute("mr")).toBe(component.mr); }); it("should handle the onChange event", () => { diff --git a/libs/angular-components/src/experimental/pagination/pagination.ts b/libs/angular-components/src/experimental/pagination/pagination.ts index 372622aa1c..28864fd9b0 100644 --- a/libs/angular-components/src/experimental/pagination/pagination.ts +++ b/libs/angular-components/src/experimental/pagination/pagination.ts @@ -12,30 +12,31 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goabx-pagination", template: ` - - + @if (isReady) { + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxPagination extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/experimental/radio-group/radio-group.spec.ts b/libs/angular-components/src/experimental/radio-group/radio-group.spec.ts index 9fc7169f2b..4c5fa82d1e 100644 --- a/libs/angular-components/src/experimental/radio-group/radio-group.spec.ts +++ b/libs/angular-components/src/experimental/radio-group/radio-group.spec.ts @@ -9,7 +9,6 @@ import { import { GoabxRadioItem } from "../radio-item/radio-item"; import { fireEvent } from "@testing-library/dom"; import { By } from "@angular/platform-browser"; -import { CommonModule } from "@angular/common"; interface RadioOption { text: string; @@ -20,7 +19,7 @@ interface RadioOption { @Component({ standalone: true, - imports: [GoabxRadioGroup, GoabxRadioItem, CommonModule], + imports: [GoabxRadioGroup, GoabxRadioItem], template: ` - - {{ option.text }} -
    - {{ option.description }} -
    -
    + @for (option of options; track option.value) { + + {{ option.text }} + @if (option.isDescriptionSlot) { +
    + {{ option.description }} +
    + } +
    + }
    `, }) @@ -180,7 +182,7 @@ describe("GoABRadioGroup", () => { }), ); - expect(onChange).toBeCalledWith( + expect(onChange).toHaveBeenCalledWith( expect.objectContaining({ name: component.name, value: component.options[0].value, diff --git a/libs/angular-components/src/experimental/radio-group/radio-group.ts b/libs/angular-components/src/experimental/radio-group/radio-group.ts index ccd3e95181..1cca9b71c2 100644 --- a/libs/angular-components/src/experimental/radio-group/radio-group.ts +++ b/libs/angular-components/src/experimental/radio-group/radio-group.ts @@ -15,36 +15,37 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { CommonModule } from "@angular/common"; + import { GoabControlValueAccessor } from "../base.component"; @Component({ standalone: true, selector: "goabx-radio-group", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { @@ -79,7 +80,10 @@ export class GoabxRadioGroup extends GoabControlValueAccessor implements OnInit @Output() onChange = new EventEmitter(); _onChange(e: Event) { - const detail = { ...(e as CustomEvent).detail, event: e }; + const detail = { + ...(e as CustomEvent).detail, + event: e, + }; this.markAsTouched(); this.onChange.emit(detail); diff --git a/libs/angular-components/src/experimental/radio-item/radio-item.spec.ts b/libs/angular-components/src/experimental/radio-item/radio-item.spec.ts index 3189d88ff6..f3f0bf820a 100644 --- a/libs/angular-components/src/experimental/radio-item/radio-item.spec.ts +++ b/libs/angular-components/src/experimental/radio-item/radio-item.spec.ts @@ -19,7 +19,7 @@ import { GoabxRadioItem } from "./radio-item"; `, }) -class TestRadioItemWithRevealSlotComponent { } +class TestRadioItemWithRevealSlotComponent {} describe("Radio item with reveal slot", () => { let fixture: ComponentFixture; @@ -37,13 +37,17 @@ describe("Radio item with reveal slot", () => { })); it("should render with slot reveal", () => { - const radioItemElement = fixture.debugElement.nativeElement.querySelector("goa-radio-item"); + const radioItemElement = + fixture.debugElement.nativeElement.querySelector("goa-radio-item"); const slotReveal = radioItemElement.querySelector("[slot='reveal']"); expect(slotReveal.textContent).toContain("A reveal slot"); }); it("should pass the revealAriaLabel property to the web component", () => { - const radioItemElement = fixture.debugElement.nativeElement.querySelector("goa-radio-item"); - expect(radioItemElement.getAttribute("revealarialabel")).toBe("Screen reader announcement for radio reveal content"); + const radioItemElement = + fixture.debugElement.nativeElement.querySelector("goa-radio-item"); + expect(radioItemElement.getAttribute("revealarialabel")).toBe( + "Screen reader announcement for radio reveal content", + ); }); }); diff --git a/libs/angular-components/src/experimental/radio-item/radio-item.ts b/libs/angular-components/src/experimental/radio-item/radio-item.ts index b288f3ed6a..87929d18af 100644 --- a/libs/angular-components/src/experimental/radio-item/radio-item.ts +++ b/libs/angular-components/src/experimental/radio-item/radio-item.ts @@ -7,42 +7,45 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goabx-radio-item", template: ` - - -
    - -
    -
    - -
    -
    + @if (isReady) { + + +
    + +
    +
    + @if (this.reveal) { + + } +
    +
    + } `, - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxRadioItem extends GoabBaseComponent { diff --git a/libs/angular-components/src/experimental/side-menu-group/side-menu-group.ts b/libs/angular-components/src/experimental/side-menu-group/side-menu-group.ts index 467d891ae8..25b86a6eae 100644 --- a/libs/angular-components/src/experimental/side-menu-group/side-menu-group.ts +++ b/libs/angular-components/src/experimental/side-menu-group/side-menu-group.ts @@ -1,5 +1,11 @@ -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; + import { GoabIconType } from "@abgov/ui-components-common"; import { GoabBaseComponent } from "../base.component"; @@ -7,21 +13,22 @@ import { GoabBaseComponent } from "../base.component"; standalone: true, selector: "goabx-side-menu-group", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxSideMenuGroup extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/experimental/side-menu-heading/side-menu-heading.spec.ts b/libs/angular-components/src/experimental/side-menu-heading/side-menu-heading.spec.ts index 080ccdc96e..c0c6ab976a 100644 --- a/libs/angular-components/src/experimental/side-menu-heading/side-menu-heading.spec.ts +++ b/libs/angular-components/src/experimental/side-menu-heading/side-menu-heading.spec.ts @@ -7,9 +7,12 @@ import { GoabxBadge } from "../badge/badge"; standalone: true, imports: [GoabxSideMenuHeading, GoabxBadge], template: ` - Heading - - + Heading + + `, }) class TestSideMenuHeadingComponent { @@ -21,7 +24,7 @@ describe("GoABSideMenuHeading", () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ imports: [GoabxSideMenuHeading, GoabxBadge, TestSideMenuHeadingComponent], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); fixture = TestBed.createComponent(TestSideMenuHeadingComponent); @@ -36,5 +39,5 @@ describe("GoABSideMenuHeading", () => { expect(el?.getAttribute("testid")).toBe("foo"); expect(el?.textContent).toContain("Heading"); expect(el?.querySelector("[slot='meta']")?.innerHTML).toContain("details"); - }) -}) + }); +}); diff --git a/libs/angular-components/src/experimental/side-menu-heading/side-menu-heading.ts b/libs/angular-components/src/experimental/side-menu-heading/side-menu-heading.ts index b7120d1303..55743d25e6 100644 --- a/libs/angular-components/src/experimental/side-menu-heading/side-menu-heading.ts +++ b/libs/angular-components/src/experimental/side-menu-heading/side-menu-heading.ts @@ -1,23 +1,31 @@ import { GoabIconType } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, TemplateRef, OnInit, ChangeDetectorRef } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + TemplateRef, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; +import { NgTemplateOutlet } from "@angular/common"; @Component({ standalone: true, selector: "goabx-side-menu-heading", - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - - - - - - + @if (isReady) { + + + + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/experimental/side-menu/side-menu.ts b/libs/angular-components/src/experimental/side-menu/side-menu.ts index 350f4f7908..76db78a7a6 100644 --- a/libs/angular-components/src/experimental/side-menu/side-menu.ts +++ b/libs/angular-components/src/experimental/side-menu/side-menu.ts @@ -1,20 +1,23 @@ -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; @Component({ standalone: true, selector: "goabx-side-menu", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxSideMenu implements OnInit { isReady = false; diff --git a/libs/angular-components/src/experimental/tab/tab.ts b/libs/angular-components/src/experimental/tab/tab.ts index 13cdb6740d..840a4e9da9 100644 --- a/libs/angular-components/src/experimental/tab/tab.ts +++ b/libs/angular-components/src/experimental/tab/tab.ts @@ -7,28 +7,29 @@ import { ChangeDetectorRef, booleanAttribute, } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; @Component({ standalone: true, selector: "goabx-tab", template: ` - - - @if (typeof heading !== "string") { -
    - -
    - } -
    + @if (isReady) { + + + @if (typeof heading !== "string") { +
    + +
    + } +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], }) export class GoabxTab implements OnInit { isReady = false; diff --git a/libs/angular-components/src/experimental/table-sort-header/table-sort-header.ts b/libs/angular-components/src/experimental/table-sort-header/table-sort-header.ts index 70b4a83a31..f9786d4166 100644 --- a/libs/angular-components/src/experimental/table-sort-header/table-sort-header.ts +++ b/libs/angular-components/src/experimental/table-sort-header/table-sort-header.ts @@ -6,21 +6,18 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goabx-table-sort-header", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxTableSortHeader implements OnInit { diff --git a/libs/angular-components/src/experimental/table/table.ts b/libs/angular-components/src/experimental/table/table.ts index e57e05cb10..1bd95932c3 100644 --- a/libs/angular-components/src/experimental/table/table.ts +++ b/libs/angular-components/src/experimental/table/table.ts @@ -9,32 +9,33 @@ import { ChangeDetectorRef, booleanAttribute, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goabx-table", template: ` - - - -
    -
    + @if (isReady) { + + + +
    +
    + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxTable extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/experimental/tabs/tabs.ts b/libs/angular-components/src/experimental/tabs/tabs.ts index ffbafc0b59..0195031eef 100644 --- a/libs/angular-components/src/experimental/tabs/tabs.ts +++ b/libs/angular-components/src/experimental/tabs/tabs.ts @@ -8,26 +8,30 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; -import { GoabTabsOnChangeDetail, GoabTabsOrientation, GoabTabsVariant } from "@abgov/ui-components-common"; +import { + GoabTabsOnChangeDetail, + GoabTabsOrientation, + GoabTabsVariant, +} from "@abgov/ui-components-common"; @Component({ standalone: true, selector: "goabx-tabs", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabxTabs implements OnInit { diff --git a/libs/angular-components/src/experimental/textarea/textarea.spec.ts b/libs/angular-components/src/experimental/textarea/textarea.spec.ts index f79f3c5f95..b4d7b4c768 100644 --- a/libs/angular-components/src/experimental/textarea/textarea.spec.ts +++ b/libs/angular-components/src/experimental/textarea/textarea.spec.ts @@ -111,7 +111,7 @@ describe("GoABTextArea", () => { }), ); - expect(onChange).toBeCalledTimes(1); + expect(onChange).toHaveBeenCalledTimes(1); }); it("should dispatch onBlur", () => { @@ -125,7 +125,7 @@ describe("GoABTextArea", () => { }), ); - expect(onBlur).toBeCalledTimes(1); + expect(onBlur).toHaveBeenCalledTimes(1); }); describe("writeValue", () => { diff --git a/libs/angular-components/src/experimental/textarea/textarea.ts b/libs/angular-components/src/experimental/textarea/textarea.ts index e274e94cbf..98a958fb92 100644 --- a/libs/angular-components/src/experimental/textarea/textarea.ts +++ b/libs/angular-components/src/experimental/textarea/textarea.ts @@ -19,42 +19,43 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { CommonModule } from "@angular/common"; + import { GoabControlValueAccessor } from "../base.component"; @Component({ standalone: true, selector: "goabx-textarea", - imports: [CommonModule], + template: ` - - + @if (isReady) { + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ @@ -109,7 +110,10 @@ export class GoabxTextArea extends GoabControlValueAccessor implements OnInit { } _onKeyPress(e: Event) { - const detail = { ...(e as CustomEvent).detail, event: e }; + const detail = { + ...(e as CustomEvent).detail, + event: e, + }; this.markAsTouched(); this.onKeyPress.emit(detail); } diff --git a/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.ts b/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.ts index e4880f8404..4cc1d83917 100644 --- a/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.ts +++ b/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.ts @@ -6,21 +6,21 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goabx-work-side-menu-group", // eslint-disable-line - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/experimental/work-side-menu-item/work-side-menu-item.ts b/libs/angular-components/src/experimental/work-side-menu-item/work-side-menu-item.ts index bc302ea885..8a0d8ea5d1 100644 --- a/libs/angular-components/src/experimental/work-side-menu-item/work-side-menu-item.ts +++ b/libs/angular-components/src/experimental/work-side-menu-item/work-side-menu-item.ts @@ -6,26 +6,26 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goabx-work-side-menu-item", // eslint-disable-line - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/experimental/work-side-menu/work-side-menu.ts b/libs/angular-components/src/experimental/work-side-menu/work-side-menu.ts index 1cacbedc59..1ae7ddf599 100644 --- a/libs/angular-components/src/experimental/work-side-menu/work-side-menu.ts +++ b/libs/angular-components/src/experimental/work-side-menu/work-side-menu.ts @@ -9,32 +9,33 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule, NgTemplateOutlet } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; @Component({ standalone: true, selector: "goabx-work-side-menu", // eslint-disable-line - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - -
    - -
    -
    - -
    -
    - -
    -
    + @if (isReady) { + +
    + +
    +
    + +
    +
    + +
    +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/angular-components.module.ts b/libs/angular-components/src/lib/angular-components.module.ts index 3de17f5719..0adde75025 100644 --- a/libs/angular-components/src/lib/angular-components.module.ts +++ b/libs/angular-components/src/lib/angular-components.module.ts @@ -1,10 +1,10 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { ValueDirective, ValueListDirective } from "./value-directive"; import { CheckedDirective } from "./checked-directive"; @NgModule({ - imports: [CommonModule, ValueDirective, ValueListDirective, CheckedDirective], + imports: [ValueDirective, ValueListDirective, CheckedDirective], exports: [ValueDirective, ValueListDirective, CheckedDirective], schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/angular-components/angular-components.component.html b/libs/angular-components/src/lib/angular-components/angular-components.component.html index ab41ab3bc4..5072787fac 100644 --- a/libs/angular-components/src/lib/angular-components/angular-components.component.html +++ b/libs/angular-components/src/lib/angular-components/angular-components.component.html @@ -1 +1 @@ -

    angular-components works!

    \ No newline at end of file +

    angular-components works!

    diff --git a/libs/angular-components/src/lib/angular-components/angular-components.component.ts b/libs/angular-components/src/lib/angular-components/angular-components.component.ts index f6dedcdac7..efdbae7cf5 100644 --- a/libs/angular-components/src/lib/angular-components/angular-components.component.ts +++ b/libs/angular-components/src/lib/angular-components/angular-components.component.ts @@ -1,11 +1,10 @@ import { Component } from "@angular/core"; - @Component({ selector: "goab-lib-angular-components", standalone: true, - imports: [], + templateUrl: "./angular-components.component.html", styleUrl: "./angular-components.component.css", }) -export class AngularComponentsComponent { } +export class AngularComponentsComponent {} diff --git a/libs/angular-components/src/lib/checked-directive.ts b/libs/angular-components/src/lib/checked-directive.ts index aab9de4604..a4cd415373 100644 --- a/libs/angular-components/src/lib/checked-directive.ts +++ b/libs/angular-components/src/lib/checked-directive.ts @@ -5,10 +5,7 @@ import { HostListener, Renderer2, } from "@angular/core"; -import { - CheckboxControlValueAccessor, - NG_VALUE_ACCESSOR, -} from "@angular/forms"; +import { CheckboxControlValueAccessor, NG_VALUE_ACCESSOR } from "@angular/forms"; // @deprecated: Use the new component @Directive({ @@ -26,10 +23,17 @@ export class CheckedDirective extends CheckboxControlValueAccessor { private _checked = false; /* eslint-disable @typescript-eslint/no-explicit-any */ - override onChange: any = () => {/** No implementation **/ }; - override onTouched: any = () => {/** No implementation **/ }; + override onChange: any = () => { + /** No implementation **/ + }; + override onTouched: any = () => { + /** No implementation **/ + }; - constructor(protected renderer: Renderer2, protected elementRef: ElementRef) { + constructor( + protected renderer: Renderer2, + protected elementRef: ElementRef, + ) { super(renderer, elementRef); } @@ -56,8 +60,9 @@ export class CheckedDirective extends CheckboxControlValueAccessor { this.onTouched = fn; } - @HostListener("_change", ["$event.detail.checked"]) - listenForValueChange(checked: any) { + @HostListener("_change", ["$event"]) + listenForValueChange(event: Event) { + const checked = (event as CustomEvent<{ checked: boolean }>).detail.checked; this.value = checked; } } diff --git a/libs/angular-components/src/lib/components/accordion/accordion.spec.ts b/libs/angular-components/src/lib/components/accordion/accordion.spec.ts index 8322b86e4a..d91a1205e1 100644 --- a/libs/angular-components/src/lib/components/accordion/accordion.spec.ts +++ b/libs/angular-components/src/lib/components/accordion/accordion.spec.ts @@ -2,13 +2,15 @@ import { GoabAccordion } from "./accordion"; import { ComponentFixture, TestBed, fakeAsync, tick } from "@angular/core/testing"; import { CUSTOM_ELEMENTS_SCHEMA, Component } from "@angular/core"; import { By } from "@angular/platform-browser"; -import { GoabAccordionHeadingSize, GoabAccordionIconPosition } from "@abgov/ui-components-common"; +import { + GoabAccordionHeadingSize, + GoabAccordionIconPosition, +} from "@abgov/ui-components-common"; @Component({ standalone: true, imports: [GoabAccordion], - template: ` - test content - This is the headingcontent + This is the headingcontent `, }) class TestAccordionComponent { diff --git a/libs/angular-components/src/lib/components/accordion/accordion.ts b/libs/angular-components/src/lib/components/accordion/accordion.ts index b17dc93459..da7f0027ec 100644 --- a/libs/angular-components/src/lib/components/accordion/accordion.ts +++ b/libs/angular-components/src/lib/components/accordion/accordion.ts @@ -13,34 +13,35 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-accordion", - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - -
    - -
    - -
    + @if (isReady) { + +
    + +
    + +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/badge/badge.ts b/libs/angular-components/src/lib/components/badge/badge.ts index b52bbb3e4a..84ecfb109f 100644 --- a/libs/angular-components/src/lib/components/badge/badge.ts +++ b/libs/angular-components/src/lib/components/badge/badge.ts @@ -7,30 +7,30 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-badge", template: ` - - + @if (isReady) { + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], + styles: [ ` :host { diff --git a/libs/angular-components/src/lib/components/block/block.ts b/libs/angular-components/src/lib/components/block/block.ts index 51823fd1b6..cd40672bb9 100644 --- a/libs/angular-components/src/lib/components/block/block.ts +++ b/libs/angular-components/src/lib/components/block/block.ts @@ -10,30 +10,31 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-block", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/button-group/button-group.spec.ts b/libs/angular-components/src/lib/components/button-group/button-group.spec.ts index ecb9d67345..322d5d4f15 100644 --- a/libs/angular-components/src/lib/components/button-group/button-group.spec.ts +++ b/libs/angular-components/src/lib/components/button-group/button-group.spec.ts @@ -3,7 +3,8 @@ import { GoabButtonGroup } from "./button-group"; import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; import { GoabButtonGroupAlignment, - GoabButtonGroupGap, Spacing, + GoabButtonGroupGap, + Spacing, } from "@abgov/ui-components-common"; import { By } from "@angular/platform-browser"; import { GoabButton } from "../button/button"; diff --git a/libs/angular-components/src/lib/components/button-group/button-group.ts b/libs/angular-components/src/lib/components/button-group/button-group.ts index 14a53cb911..b52d1cb426 100644 --- a/libs/angular-components/src/lib/components/button-group/button-group.ts +++ b/libs/angular-components/src/lib/components/button-group/button-group.ts @@ -9,26 +9,27 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-button-group", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/button/button.spec.ts b/libs/angular-components/src/lib/components/button/button.spec.ts index 234aff5056..d538c3ed0b 100644 --- a/libs/angular-components/src/lib/components/button/button.spec.ts +++ b/libs/angular-components/src/lib/components/button/button.spec.ts @@ -1,7 +1,13 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from "@angular/core/testing"; import { GoabButton } from "./button"; import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { GoabButtonSize, GoabButtonVariant, GoabIconType, Spacing, GoabButtonType } from "@abgov/ui-components-common"; +import { + GoabButtonSize, + GoabButtonVariant, + GoabIconType, + Spacing, + GoabButtonType, +} from "@abgov/ui-components-common"; import { By } from "@angular/platform-browser"; import { fireEvent } from "@testing-library/dom"; @@ -21,12 +27,13 @@ import { fireEvent } from "@testing-library/dom"; [mb]="mb" [ml]="ml" [mr]="mr" - (onClick)="onClick()"> - {{buttonText}} + (onClick)="onClick()" + > + {{ buttonText }} - ` + `, }) -class TestButtonComponent{ +class TestButtonComponent { type?: GoabButtonType; size?: GoabButtonSize; variant?: GoabButtonVariant; @@ -43,7 +50,6 @@ class TestButtonComponent{ onClick() { /* do nothing */ } - } describe("GoABButton", () => { @@ -94,5 +100,5 @@ describe("GoABButton", () => { fireEvent(buttonElement, new CustomEvent("_click")); expect(onClick).toHaveBeenCalled(); - })) -}) + })); +}); diff --git a/libs/angular-components/src/lib/components/button/button.ts b/libs/angular-components/src/lib/components/button/button.ts index 629aef7ad0..77ed157b1d 100644 --- a/libs/angular-components/src/lib/components/button/button.ts +++ b/libs/angular-components/src/lib/components/button/button.ts @@ -14,35 +14,35 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-button", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/calendar/calendar.ts b/libs/angular-components/src/lib/components/calendar/calendar.ts index b962fef660..b437d80e13 100644 --- a/libs/angular-components/src/lib/components/calendar/calendar.ts +++ b/libs/angular-components/src/lib/components/calendar/calendar.ts @@ -8,29 +8,30 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-calendar", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/callout/callout.ts b/libs/angular-components/src/lib/components/callout/callout.ts index 04b06f3d12..7c89fb4779 100644 --- a/libs/angular-components/src/lib/components/callout/callout.ts +++ b/libs/angular-components/src/lib/components/callout/callout.ts @@ -11,30 +11,30 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-callout", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/card-actions/card-actions.ts b/libs/angular-components/src/lib/components/card-actions/card-actions.ts index c3fa9048b4..6d31631295 100644 --- a/libs/angular-components/src/lib/components/card-actions/card-actions.ts +++ b/libs/angular-components/src/lib/components/card-actions/card-actions.ts @@ -4,18 +4,18 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goab-card-actions", template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabCardActions implements OnInit { isReady = false; diff --git a/libs/angular-components/src/lib/components/card-content/card-content.ts b/libs/angular-components/src/lib/components/card-content/card-content.ts index 10cf5e09f0..933b6ff23c 100644 --- a/libs/angular-components/src/lib/components/card-content/card-content.ts +++ b/libs/angular-components/src/lib/components/card-content/card-content.ts @@ -4,18 +4,18 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goab-card-content", template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabCardContent implements OnInit { isReady = false; diff --git a/libs/angular-components/src/lib/components/card-image/card-image.ts b/libs/angular-components/src/lib/components/card-image/card-image.ts index cea0ad32fc..482bcb211f 100644 --- a/libs/angular-components/src/lib/components/card-image/card-image.ts +++ b/libs/angular-components/src/lib/components/card-image/card-image.ts @@ -5,22 +5,18 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goab-card-image", template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabCardImage implements OnInit { @Input({ required: true }) src!: string; diff --git a/libs/angular-components/src/lib/components/card/card.ts b/libs/angular-components/src/lib/components/card/card.ts index 0245209a30..724ab09666 100644 --- a/libs/angular-components/src/lib/components/card/card.ts +++ b/libs/angular-components/src/lib/components/card/card.ts @@ -6,26 +6,27 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-card", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/checkbox-list/checkbox-list.spec.ts b/libs/angular-components/src/lib/components/checkbox-list/checkbox-list.spec.ts index dcc6d7c82d..af3c3712e2 100644 --- a/libs/angular-components/src/lib/components/checkbox-list/checkbox-list.spec.ts +++ b/libs/angular-components/src/lib/components/checkbox-list/checkbox-list.spec.ts @@ -56,7 +56,12 @@ describe("GoabCheckboxList", () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [TestCheckboxListHostComponent, GoabCheckboxList, GoabCheckbox, ReactiveFormsModule], + imports: [ + TestCheckboxListHostComponent, + GoabCheckboxList, + GoabCheckbox, + ReactiveFormsModule, + ], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); diff --git a/libs/angular-components/src/lib/components/checkbox-list/checkbox-list.ts b/libs/angular-components/src/lib/components/checkbox-list/checkbox-list.ts index b9b2dc1fad..4f2e579f25 100644 --- a/libs/angular-components/src/lib/components/checkbox-list/checkbox-list.ts +++ b/libs/angular-components/src/lib/components/checkbox-list/checkbox-list.ts @@ -11,31 +11,32 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { CommonModule } from "@angular/common"; + import { GoabControlValueAccessor } from "../base.component"; @Component({ standalone: true, selector: "goab-checkbox-list", - template: ` - - `, + template: ` @if (isReady) { + + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], + providers: [ { provide: NG_VALUE_ACCESSOR, @@ -70,7 +71,10 @@ export class GoabCheckboxList extends GoabControlValueAccessor implements OnInit _onChange(e: Event) { try { - const detail = { ...(e as CustomEvent).detail, event: e }; + const detail = { + ...(e as CustomEvent).detail, + event: e, + }; this.onChange.emit(detail); this.markAsTouched(); diff --git a/libs/angular-components/src/lib/components/checkbox/checkbox.spec.ts b/libs/angular-components/src/lib/components/checkbox/checkbox.spec.ts index 35e21f225c..6d8488e627 100644 --- a/libs/angular-components/src/lib/components/checkbox/checkbox.spec.ts +++ b/libs/angular-components/src/lib/components/checkbox/checkbox.spec.ts @@ -112,8 +112,12 @@ describe("GoabCheckbox", () => { describe("writeValue", () => { it("should set checked attribute to true when value is truthy", () => { - const checkboxComponent = fixture.debugElement.query(By.css("goab-checkbox")).componentInstance; - const checkboxElement = fixture.debugElement.query(By.css("goa-checkbox")).nativeElement; + const checkboxComponent = fixture.debugElement.query( + By.css("goab-checkbox"), + ).componentInstance; + const checkboxElement = fixture.debugElement.query( + By.css("goa-checkbox"), + ).nativeElement; checkboxComponent.writeValue(true); expect(checkboxElement.getAttribute("checked")).toBe("true"); @@ -126,8 +130,12 @@ describe("GoabCheckbox", () => { }); it("should set checked attribute to false when value is falsy", () => { - const checkboxComponent = fixture.debugElement.query(By.css("goab-checkbox")).componentInstance; - const checkboxElement = fixture.debugElement.query(By.css("goa-checkbox")).nativeElement; + const checkboxComponent = fixture.debugElement.query( + By.css("goab-checkbox"), + ).componentInstance; + const checkboxElement = fixture.debugElement.query( + By.css("goa-checkbox"), + ).nativeElement; checkboxComponent.writeValue(false); expect(checkboxElement.getAttribute("checked")).toBe("false"); @@ -143,7 +151,9 @@ describe("GoabCheckbox", () => { }); it("should update component value property", () => { - const checkboxComponent = fixture.debugElement.query(By.css("goab-checkbox")).componentInstance; + const checkboxComponent = fixture.debugElement.query( + By.css("goab-checkbox"), + ).componentInstance; checkboxComponent.writeValue(true); expect(checkboxComponent.value).toBe(true); @@ -179,7 +189,11 @@ describe("Checkbox with description slot", () => { it("should render with slot description", fakeAsync(() => { TestBed.configureTestingModule({ - imports: [TestCheckboxWithDescriptionSlotComponent, GoabCheckbox, ReactiveFormsModule], + imports: [ + TestCheckboxWithDescriptionSlotComponent, + GoabCheckbox, + ReactiveFormsModule, + ], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); @@ -242,6 +256,8 @@ describe("Checkbox with reveal slot", () => { const checkboxElement = fixture.debugElement.query( By.css("goa-checkbox"), ).nativeElement; - expect(checkboxElement.getAttribute("revealarialabel")).toBe("Screen reader announcement for reveal content"); + expect(checkboxElement.getAttribute("revealarialabel")).toBe( + "Screen reader announcement for reveal content", + ); }); }); diff --git a/libs/angular-components/src/lib/components/checkbox/checkbox.ts b/libs/angular-components/src/lib/components/checkbox/checkbox.ts index b7e42ca624..592f460e47 100644 --- a/libs/angular-components/src/lib/components/checkbox/checkbox.ts +++ b/libs/angular-components/src/lib/components/checkbox/checkbox.ts @@ -13,42 +13,45 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; import { GoabControlValueAccessor } from "../base.component"; @Component({ standalone: true, selector: "goab-checkbox", - template: ` - -
    - -
    -
    - -
    -
    `, + template: ` @if (isReady) { + + +
    + +
    +
    + @if (reveal) { + + } +
    +
    + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { @@ -57,7 +60,7 @@ import { GoabControlValueAccessor } from "../base.component"; useExisting: forwardRef(() => GoabCheckbox), }, ], - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], }) export class GoabCheckbox extends GoabControlValueAccessor implements OnInit { isReady = false; diff --git a/libs/angular-components/src/lib/components/chip/chip.spec.ts b/libs/angular-components/src/lib/components/chip/chip.spec.ts index d878fa94bb..78ea1e4ad9 100644 --- a/libs/angular-components/src/lib/components/chip/chip.spec.ts +++ b/libs/angular-components/src/lib/components/chip/chip.spec.ts @@ -1,7 +1,12 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from "@angular/core/testing"; import { GoabChip } from "./chip"; import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { GoabChipTheme, GoabChipVariant, GoabIconType, Spacing } from "@abgov/ui-components-common"; +import { + GoabChipTheme, + GoabChipVariant, + GoabIconType, + Spacing, +} from "@abgov/ui-components-common"; import { By } from "@angular/platform-browser"; import { fireEvent } from "@testing-library/dom"; diff --git a/libs/angular-components/src/lib/components/chip/chip.ts b/libs/angular-components/src/lib/components/chip/chip.ts index 3ea1c242b9..ce862647d7 100644 --- a/libs/angular-components/src/lib/components/chip/chip.ts +++ b/libs/angular-components/src/lib/components/chip/chip.ts @@ -13,30 +13,31 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-chip", - imports: [CommonModule], - template: ` - - `, + + template: `@if (isReady) { + + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabChip extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/lib/components/circular-progress/circular-progress.ts b/libs/angular-components/src/lib/components/circular-progress/circular-progress.ts index c0602cca75..f4abc5b1ee 100644 --- a/libs/angular-components/src/lib/components/circular-progress/circular-progress.ts +++ b/libs/angular-components/src/lib/components/circular-progress/circular-progress.ts @@ -7,7 +7,6 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; import { GoabCircularProgressSize, @@ -18,19 +17,19 @@ import { standalone: true, selector: "goab-circular-progress", template: ` - - + @if (isReady) { + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabCircularProgress implements OnInit { @Input() variant?: GoabCircularProgressVariant; diff --git a/libs/angular-components/src/lib/components/column-layout/column-layout.ts b/libs/angular-components/src/lib/components/column-layout/column-layout.ts index d654822299..ae6bbb8958 100644 --- a/libs/angular-components/src/lib/components/column-layout/column-layout.ts +++ b/libs/angular-components/src/lib/components/column-layout/column-layout.ts @@ -4,18 +4,18 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goab-column-layout", template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabColumnLayout implements OnInit { /** no props **/ diff --git a/libs/angular-components/src/lib/components/container/container.ts b/libs/angular-components/src/lib/components/container/container.ts index 214519f81e..e77173a1cb 100644 --- a/libs/angular-components/src/lib/components/container/container.ts +++ b/libs/angular-components/src/lib/components/container/container.ts @@ -12,40 +12,41 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-container", - imports: [NgTemplateOutlet, CommonModule], - template: ` - @if (title) { -
    - -
    - } - - @if (actions) { -
    - -
    - } -
    `, + imports: [NgTemplateOutlet], + template: `@if (isReady) { + + @if (title) { +
    + +
    + } + + @if (actions) { +
    + +
    + } +
    + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabContainer extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/lib/components/data-grid/data-grid.spec.ts b/libs/angular-components/src/lib/components/data-grid/data-grid.spec.ts index 8cad59b3e5..b709da6072 100644 --- a/libs/angular-components/src/lib/components/data-grid/data-grid.spec.ts +++ b/libs/angular-components/src/lib/components/data-grid/data-grid.spec.ts @@ -10,10 +10,11 @@ import { By } from "@angular/platform-browser"; + [keyboardNav]="keyboardNav" + >
    Test content
    - ` + `, }) class TestDataGridComponent { keyboardIconVisibility: "visible" | "hidden" = "visible"; @@ -42,7 +43,9 @@ describe("GoabDataGrid", () => { expect(component).toBeTruthy(); - const dataGridElement = fixture.debugElement.query(By.css("goa-data-grid"))?.nativeElement; + const dataGridElement = fixture.debugElement.query( + By.css("goa-data-grid"), + )?.nativeElement; expect(dataGridElement).toBeTruthy(); expect(dataGridElement.textContent).toContain("Test content"); expect(dataGridElement.getAttribute("keyboard-icon-visibility")).toBe("visible"); @@ -55,7 +58,9 @@ describe("GoabDataGrid", () => { tick(); fixture.detectChanges(); - const dataGridElement = fixture.debugElement.query(By.css("goa-data-grid"))?.nativeElement; + const dataGridElement = fixture.debugElement.query( + By.css("goa-data-grid"), + )?.nativeElement; expect(dataGridElement).toBeTruthy(); expect(dataGridElement.getAttribute("keyboard-icon-visibility")).toBe("hidden"); })); @@ -66,7 +71,9 @@ describe("GoabDataGrid", () => { tick(); fixture.detectChanges(); - const dataGridElement = fixture.debugElement.query(By.css("goa-data-grid"))?.nativeElement; + const dataGridElement = fixture.debugElement.query( + By.css("goa-data-grid"), + )?.nativeElement; expect(dataGridElement).toBeTruthy(); expect(dataGridElement.getAttribute("keyboard-icon-position")).toBe("right"); })); @@ -77,7 +84,9 @@ describe("GoabDataGrid", () => { tick(); fixture.detectChanges(); - const dataGridElement = fixture.debugElement.query(By.css("goa-data-grid"))?.nativeElement; + const dataGridElement = fixture.debugElement.query( + By.css("goa-data-grid"), + )?.nativeElement; expect(dataGridElement).toBeTruthy(); expect(dataGridElement.getAttribute("keyboard-nav")).toBe("table"); })); @@ -88,7 +97,9 @@ describe("GoabDataGrid", () => { tick(); fixture.detectChanges(); - const dataGridElement = fixture.debugElement.query(By.css("goa-data-grid"))?.nativeElement; + const dataGridElement = fixture.debugElement.query( + By.css("goa-data-grid"), + )?.nativeElement; expect(dataGridElement).toBeTruthy(); expect(dataGridElement.getAttribute("keyboard-nav")).toBe("layout"); })); diff --git a/libs/angular-components/src/lib/components/data-grid/data-grid.ts b/libs/angular-components/src/lib/components/data-grid/data-grid.ts index 00f391a133..0f1b8fd7a4 100644 --- a/libs/angular-components/src/lib/components/data-grid/data-grid.ts +++ b/libs/angular-components/src/lib/components/data-grid/data-grid.ts @@ -1,19 +1,25 @@ -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, ChangeDetectorRef, OnInit } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + ChangeDetectorRef, + OnInit, +} from "@angular/core"; @Component({ standalone: true, selector: "goab-data-grid", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/date-picker/date-picker.ts b/libs/angular-components/src/lib/components/date-picker/date-picker.ts index b31539ca5f..f7d428fa58 100644 --- a/libs/angular-components/src/lib/components/date-picker/date-picker.ts +++ b/libs/angular-components/src/lib/components/date-picker/date-picker.ts @@ -16,33 +16,34 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { CommonModule } from "@angular/common"; + import { GoabControlValueAccessor } from "../base.component"; @Component({ standalone: true, selector: "goab-date-picker", - imports: [CommonModule], - template: ` - `, + + template: ` @if (isReady) { + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { @@ -78,7 +79,10 @@ export class GoabDatePicker extends GoabControlValueAccessor implements OnInit { } _onChange(e: Event) { - const detail = { ...(e as CustomEvent).detail, event: e }; + const detail = { + ...(e as CustomEvent).detail, + event: e, + }; this.onChange.emit(detail); this.markAsTouched(); this.fcChange?.(detail.value); @@ -112,8 +116,9 @@ export class GoabDatePicker extends GoabControlValueAccessor implements OnInit { this.elementRef.nativeElement.disabled = isDisabled; } - @HostListener("disabledChange", ["$event.detail.disabled"]) - listenDisabledChange(isDisabled: boolean) { + @HostListener("disabledChange", ["$event"]) + listenDisabledChange(event: Event) { + const isDisabled = (event as CustomEvent<{ disabled: boolean }>).detail.disabled; this.setDisabledState(isDisabled); } diff --git a/libs/angular-components/src/lib/components/details/details.ts b/libs/angular-components/src/lib/components/details/details.ts index 337e898218..be9f68b5cd 100644 --- a/libs/angular-components/src/lib/components/details/details.ts +++ b/libs/angular-components/src/lib/components/details/details.ts @@ -6,27 +6,28 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-details", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/divider/divider.ts b/libs/angular-components/src/lib/components/divider/divider.ts index 46c3f7820e..3b0ad3df10 100644 --- a/libs/angular-components/src/lib/components/divider/divider.ts +++ b/libs/angular-components/src/lib/components/divider/divider.ts @@ -4,23 +4,24 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-divider", - imports: [CommonModule], + template: ` - - + @if (isReady) { + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/drawer/drawer.ts b/libs/angular-components/src/lib/components/drawer/drawer.ts index 7061bc0922..4d2cba89f7 100644 --- a/libs/angular-components/src/lib/components/drawer/drawer.ts +++ b/libs/angular-components/src/lib/components/drawer/drawer.ts @@ -1,4 +1,4 @@ -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; import { booleanAttribute, Component, @@ -15,25 +15,26 @@ import { GoabDrawerPosition, GoabDrawerSize } from "@abgov/ui-components-common" @Component({ standalone: true, selector: "goab-drawer", - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - - -
    - -
    -
    - -
    -
    + @if (isReady) { + + +
    + +
    +
    + +
    +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/dropdown-item/dropdown-item.ts b/libs/angular-components/src/lib/components/dropdown-item/dropdown-item.ts index 4fc60b46cb..56ac7f4266 100644 --- a/libs/angular-components/src/lib/components/dropdown-item/dropdown-item.ts +++ b/libs/angular-components/src/lib/components/dropdown-item/dropdown-item.ts @@ -5,25 +5,25 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabDropdownItemMountType } from "@abgov/ui-components-common"; @Component({ standalone: true, selector: "goab-dropdown-item", template: ` - - + @if (isReady) { + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabDropdownItem implements OnInit { @Input() value?: string; diff --git a/libs/angular-components/src/lib/components/dropdown/dropdown.spec.ts b/libs/angular-components/src/lib/components/dropdown/dropdown.spec.ts index c9e58d824c..f19b085a2e 100644 --- a/libs/angular-components/src/lib/components/dropdown/dropdown.spec.ts +++ b/libs/angular-components/src/lib/components/dropdown/dropdown.spec.ts @@ -78,7 +78,12 @@ describe("GoABDropdown", () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [TestDropdownComponent, GoabDropdown, GoabDropdownItem, ReactiveFormsModule], + imports: [ + TestDropdownComponent, + GoabDropdown, + GoabDropdownItem, + ReactiveFormsModule, + ], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); @@ -158,8 +163,12 @@ describe("GoABDropdown", () => { describe("writeValue", () => { it("should set value attribute when writeValue is called with a value", () => { - const dropdownComponent = fixture.debugElement.query(By.css("goab-dropdown")).componentInstance; - const dropdownElement = fixture.debugElement.query(By.css("goa-dropdown")).nativeElement; + const dropdownComponent = fixture.debugElement.query( + By.css("goab-dropdown"), + ).componentInstance; + const dropdownElement = fixture.debugElement.query( + By.css("goa-dropdown"), + ).nativeElement; dropdownComponent.writeValue("red"); expect(dropdownElement.getAttribute("value")).toBe("red"); @@ -169,8 +178,12 @@ describe("GoABDropdown", () => { }); it("should set value attribute to empty string when writeValue is called with null", () => { - const dropdownComponent = fixture.debugElement.query(By.css("goab-dropdown")).componentInstance; - const dropdownElement = fixture.debugElement.query(By.css("goa-dropdown")).nativeElement; + const dropdownComponent = fixture.debugElement.query( + By.css("goab-dropdown"), + ).componentInstance; + const dropdownElement = fixture.debugElement.query( + By.css("goa-dropdown"), + ).nativeElement; // First set a value dropdownComponent.writeValue("red"); @@ -182,7 +195,9 @@ describe("GoABDropdown", () => { }); it("should update component value property", () => { - const dropdownComponent = fixture.debugElement.query(By.css("goab-dropdown")).componentInstance; + const dropdownComponent = fixture.debugElement.query( + By.css("goab-dropdown"), + ).componentInstance; dropdownComponent.writeValue("yellow"); expect(dropdownComponent.value).toBe("yellow"); @@ -194,8 +209,12 @@ describe("GoABDropdown", () => { describe("_onChange", () => { it("should update component value when user selects an option", () => { - const dropdownComponent = fixture.debugElement.query(By.css("goab-dropdown")).componentInstance; - const dropdownElement = fixture.debugElement.query(By.css("goa-dropdown")).nativeElement; + const dropdownComponent = fixture.debugElement.query( + By.css("goab-dropdown"), + ).componentInstance; + const dropdownElement = fixture.debugElement.query( + By.css("goa-dropdown"), + ).nativeElement; fireEvent( dropdownElement, @@ -208,8 +227,12 @@ describe("GoABDropdown", () => { }); it("should update value to null when cleared", () => { - const dropdownComponent = fixture.debugElement.query(By.css("goab-dropdown")).componentInstance; - const dropdownElement = fixture.debugElement.query(By.css("goa-dropdown")).nativeElement; + const dropdownComponent = fixture.debugElement.query( + By.css("goab-dropdown"), + ).componentInstance; + const dropdownElement = fixture.debugElement.query( + By.css("goa-dropdown"), + ).nativeElement; // Set initial value fireEvent( @@ -230,4 +253,4 @@ describe("GoABDropdown", () => { expect(dropdownComponent.value).toBe(null); }); }); -}); \ No newline at end of file +}); diff --git a/libs/angular-components/src/lib/components/dropdown/dropdown.ts b/libs/angular-components/src/lib/components/dropdown/dropdown.ts index a2edf0c1de..fd405492dc 100644 --- a/libs/angular-components/src/lib/components/dropdown/dropdown.ts +++ b/libs/angular-components/src/lib/components/dropdown/dropdown.ts @@ -12,44 +12,45 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { CommonModule } from "@angular/common"; + import { GoabControlValueAccessor } from "../base.component"; // "disabled", "value", "id" is an exposed property of HTMLInputElement, no need to bind with attr @Component({ standalone: true, selector: "goab-dropdown", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ diff --git a/libs/angular-components/src/lib/components/file-upload-card/file-upload-card.ts b/libs/angular-components/src/lib/components/file-upload-card/file-upload-card.ts index 81f1e18443..af2cf0fa48 100644 --- a/libs/angular-components/src/lib/components/file-upload-card/file-upload-card.ts +++ b/libs/angular-components/src/lib/components/file-upload-card/file-upload-card.ts @@ -12,25 +12,24 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goab-file-upload-card", - template: ` - `, + template: ` @if (isReady) { + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabFileUploadCard implements OnInit { @Input({ required: true }) filename!: string; diff --git a/libs/angular-components/src/lib/components/file-upload-input/file-upload-input.ts b/libs/angular-components/src/lib/components/file-upload-input/file-upload-input.ts index a3af7b4d78..a20499de86 100644 --- a/libs/angular-components/src/lib/components/file-upload-input/file-upload-input.ts +++ b/libs/angular-components/src/lib/components/file-upload-input/file-upload-input.ts @@ -11,28 +11,28 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-file-upload-input", - template: ` - `, + template: `@if (isReady) { + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabFileUploadInput extends GoabBaseComponent implements OnInit { @Input() id?: string = ""; @@ -58,7 +58,10 @@ export class GoabFileUploadInput extends GoabBaseComponent implements OnInit { } _onSelectFile(e: Event) { - const detail = { ...(e as CustomEvent).detail, event: e }; + const detail = { + ...(e as CustomEvent).detail, + event: e, + }; this.onSelectFile.emit(detail); } } diff --git a/libs/angular-components/src/lib/components/filter-chip/filter-chip.spec.ts b/libs/angular-components/src/lib/components/filter-chip/filter-chip.spec.ts index 24f650f86a..a0dc09f1bc 100644 --- a/libs/angular-components/src/lib/components/filter-chip/filter-chip.spec.ts +++ b/libs/angular-components/src/lib/components/filter-chip/filter-chip.spec.ts @@ -64,7 +64,9 @@ describe("GoabFilterChip", () => { })); it("should render properties", () => { - const chipElement = fixture.debugElement.query(By.css("goa-filter-chip")).nativeElement; + const chipElement = fixture.debugElement.query( + By.css("goa-filter-chip"), + ).nativeElement; expect(chipElement.getAttribute("error")).toBe(`${component.error}`); expect(chipElement.getAttribute("content")).toBe(component.content); expect(chipElement.getAttribute("icontheme")).toBe(`${component.iconTheme}`); @@ -77,7 +79,9 @@ describe("GoabFilterChip", () => { it("should allow to handle delete event", fakeAsync(() => { const onClick = jest.spyOn(component, "onClick"); - const chipElement = fixture.debugElement.query(By.css("goa-filter-chip")).nativeElement; + const chipElement = fixture.debugElement.query( + By.css("goa-filter-chip"), + ).nativeElement; fireEvent(chipElement, new CustomEvent("_click")); expect(onClick).toHaveBeenCalled(); diff --git a/libs/angular-components/src/lib/components/filter-chip/filter-chip.ts b/libs/angular-components/src/lib/components/filter-chip/filter-chip.ts index f0b97cafbd..190bcfd8ed 100644 --- a/libs/angular-components/src/lib/components/filter-chip/filter-chip.ts +++ b/libs/angular-components/src/lib/components/filter-chip/filter-chip.ts @@ -9,28 +9,28 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-filter-chip", - template: ` - - `, + template: `@if (isReady) { + + + + }`, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabFilterChip extends GoabBaseComponent implements OnInit { @Input({ transform: booleanAttribute }) error?: boolean; diff --git a/libs/angular-components/src/lib/components/footer-meta-section/footer-meta-section.ts b/libs/angular-components/src/lib/components/footer-meta-section/footer-meta-section.ts index 4452d7f9de..88a3a5a4ba 100644 --- a/libs/angular-components/src/lib/components/footer-meta-section/footer-meta-section.ts +++ b/libs/angular-components/src/lib/components/footer-meta-section/footer-meta-section.ts @@ -5,19 +5,18 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; - @Component({ standalone: true, selector: "goab-app-footer-meta-section", template: ` - - - + @if (isReady) { + + + + } `, styles: [":host { width: 100%; }"], schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabAppFooterMetaSection implements OnInit { @Input() testId?: string; diff --git a/libs/angular-components/src/lib/components/footer-nav-section/footer-nav-section.ts b/libs/angular-components/src/lib/components/footer-nav-section/footer-nav-section.ts index a6874f399f..b34b9c84a3 100644 --- a/libs/angular-components/src/lib/components/footer-nav-section/footer-nav-section.ts +++ b/libs/angular-components/src/lib/components/footer-nav-section/footer-nav-section.ts @@ -5,24 +5,23 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goab-app-footer-nav-section", template: ` - - - + @if (isReady) { + + + + } `, styles: [":host { width: 100%; }"], schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabAppFooterNavSection implements OnInit { @Input() heading?: string; diff --git a/libs/angular-components/src/lib/components/footer/footer.ts b/libs/angular-components/src/lib/components/footer/footer.ts index 753e2f49da..06ebfdebcf 100644 --- a/libs/angular-components/src/lib/components/footer/footer.ts +++ b/libs/angular-components/src/lib/components/footer/footer.ts @@ -5,25 +5,23 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; - @Component({ standalone: true, selector: "goab-app-footer", template: ` - - - - - + @if (isReady) { + + + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabAppFooter implements OnInit { @Input() maxContentWidth?: string; diff --git a/libs/angular-components/src/lib/components/form-item/form-item.spec.ts b/libs/angular-components/src/lib/components/form-item/form-item.spec.ts index fe2dc283da..f9fcb02bb1 100644 --- a/libs/angular-components/src/lib/components/form-item/form-item.spec.ts +++ b/libs/angular-components/src/lib/components/form-item/form-item.spec.ts @@ -4,11 +4,10 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; import { GoabFormItemRequirement, Spacing } from "@abgov/ui-components-common"; import { By } from "@angular/platform-browser"; import { GoabFormItemSlot } from "./form-item-slot"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, - imports: [GoabFormItem, GoabFormItemSlot, CommonModule], + imports: [GoabFormItem, GoabFormItemSlot], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: ` - This is an error slot - This is a helpText slot + @if (errorSlot) { + This is an error slot + } + @if (helpTextSlot) { + This is a helpText slot + } `, }) diff --git a/libs/angular-components/src/lib/components/form-item/form-item.ts b/libs/angular-components/src/lib/components/form-item/form-item.ts index fbe0a3a1fe..826af42737 100644 --- a/libs/angular-components/src/lib/components/form-item/form-item.ts +++ b/libs/angular-components/src/lib/components/form-item/form-item.ts @@ -9,36 +9,36 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-form-item", template: ` - - - - + @if (isReady) { + + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabFormItem extends GoabBaseComponent implements OnInit { @Input() label?: string; diff --git a/libs/angular-components/src/lib/components/form-step/form-step.ts b/libs/angular-components/src/lib/components/form-step/form-step.ts index 4696442e83..4abf80e266 100644 --- a/libs/angular-components/src/lib/components/form-step/form-step.ts +++ b/libs/angular-components/src/lib/components/form-step/form-step.ts @@ -1,17 +1,21 @@ import { GoabFormStepStatus } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; @Component({ standalone: true, selector: "goab-form-step", template: ` - `, - imports: [CommonModule], + @if (isReady) { + + } + `, + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabFormStep implements OnInit { diff --git a/libs/angular-components/src/lib/components/form-stepper/form-stepper.spec.ts b/libs/angular-components/src/lib/components/form-stepper/form-stepper.spec.ts index f7fd35ad39..0ae51a7574 100644 --- a/libs/angular-components/src/lib/components/form-stepper/form-stepper.spec.ts +++ b/libs/angular-components/src/lib/components/form-stepper/form-stepper.spec.ts @@ -76,6 +76,6 @@ describe("GoABFormStepper", () => { fireEvent(el, new CustomEvent("_change")); - expect(onChange).toBeCalledTimes(1); + expect(onChange).toHaveBeenCalledTimes(1); }); }); diff --git a/libs/angular-components/src/lib/components/form-stepper/form-stepper.ts b/libs/angular-components/src/lib/components/form-stepper/form-stepper.ts index 0349fef45a..54dbcf9b30 100644 --- a/libs/angular-components/src/lib/components/form-stepper/form-stepper.ts +++ b/libs/angular-components/src/lib/components/form-stepper/form-stepper.ts @@ -8,27 +8,27 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-form-stepper", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabFormStepper extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/lib/components/form/fieldset.spec.ts b/libs/angular-components/src/lib/components/form/fieldset.spec.ts index fa23cf9605..8e329e2eb5 100644 --- a/libs/angular-components/src/lib/components/form/fieldset.spec.ts +++ b/libs/angular-components/src/lib/components/form/fieldset.spec.ts @@ -23,7 +23,9 @@ class TestFieldsetComponent { dispatchOn: "change" | "continue" = "continue"; id?: string; - handleContinue(event: GoabFieldsetOnContinueDetail): void {/** do nothing **/} + handleContinue(event: GoabFieldsetOnContinueDetail): void { + /** do nothing **/ + } } describe("GoabFieldSet", () => { diff --git a/libs/angular-components/src/lib/components/form/fieldset.ts b/libs/angular-components/src/lib/components/form/fieldset.ts index 5428e87c7d..aca147131e 100644 --- a/libs/angular-components/src/lib/components/form/fieldset.ts +++ b/libs/angular-components/src/lib/components/form/fieldset.ts @@ -1,17 +1,25 @@ -import { Component, CUSTOM_ELEMENTS_SCHEMA, Input, Output, EventEmitter } from "@angular/core"; -import { GoabFormDispatchOn, GoabFieldsetOnContinueDetail } from "@abgov/ui-components-common"; +import { + Component, + CUSTOM_ELEMENTS_SCHEMA, + Input, + Output, + EventEmitter, +} from "@angular/core"; +import { + GoabFormDispatchOn, + GoabFieldsetOnContinueDetail, +} from "@abgov/ui-components-common"; @Component({ - selector: 'goab-fieldset', - template: ` - - - `, + selector: "goab-fieldset", + template: ` + + `, standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/form/public-form-page.spec.ts b/libs/angular-components/src/lib/components/form/public-form-page.spec.ts index 805f87e8de..48a7c01761 100644 --- a/libs/angular-components/src/lib/components/form/public-form-page.spec.ts +++ b/libs/angular-components/src/lib/components/form/public-form-page.spec.ts @@ -47,7 +47,9 @@ class TestPublicFormPageComponent { mb = "l" as Spacing; ml = "xl" as Spacing; - handleContinue(event: Event): void {/** do nothing **/} + handleContinue(event: Event): void { + /** do nothing **/ + } } describe("GoabPublicFormPage", () => { @@ -94,14 +96,14 @@ describe("GoabPublicFormPage", () => { const detail = { el: document.createElement("form"), state: { - "field1": { + field1: { name: "field1", label: "Field 1", value: "test", - order: 1 - } + order: 1, + }, }, - cancelled: false + cancelled: false, }; el.dispatchEvent(new CustomEvent("_continue", { detail })); diff --git a/libs/angular-components/src/lib/components/form/public-form-page.ts b/libs/angular-components/src/lib/components/form/public-form-page.ts index bc3b6623f1..52c47c3ecb 100644 --- a/libs/angular-components/src/lib/components/form/public-form-page.ts +++ b/libs/angular-components/src/lib/components/form/public-form-page.ts @@ -12,29 +12,29 @@ import { } from "@abgov/ui-components-common"; @Component({ - selector: "goab-public-form-page", - standalone: true, - template: ` - - - - `, - schemas: [CUSTOM_ELEMENTS_SCHEMA] + selector: "goab-public-form-page", + standalone: true, + template: ` + + + + `, + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabPublicFormPage extends GoabBaseComponent { @Input() id = ""; @@ -45,7 +45,7 @@ export class GoabPublicFormPage extends GoabBaseComponent { @Input() backUrl = ""; @Input() type: GoabPublicFormPageStep = "step"; @Input() buttonText = ""; - @Input() buttonVisibility : GoabPublicFormPageButtonVisibility = "visible"; + @Input() buttonVisibility: GoabPublicFormPageButtonVisibility = "visible"; /** * triggers when the form page continues to the next step diff --git a/libs/angular-components/src/lib/components/form/public-form-summary.spec.ts b/libs/angular-components/src/lib/components/form/public-form-summary.spec.ts index 4518b473e0..553e32397d 100644 --- a/libs/angular-components/src/lib/components/form/public-form-summary.spec.ts +++ b/libs/angular-components/src/lib/components/form/public-form-summary.spec.ts @@ -7,9 +7,7 @@ import { By } from "@angular/platform-browser"; standalone: true, imports: [GoabPublicFormSummary], template: ` - +
    Test content
    `, @@ -35,7 +33,9 @@ describe("GoabPublicFormSummary", () => { it("should render with properties", () => { fixture.detectChanges(); - const el = fixture.debugElement.query(By.css("goa-public-form-summary")).nativeElement; + const el = fixture.debugElement.query( + By.css("goa-public-form-summary"), + ).nativeElement; expect(el?.getAttribute("heading")).toBe(component.heading); diff --git a/libs/angular-components/src/lib/components/form/public-form-summary.ts b/libs/angular-components/src/lib/components/form/public-form-summary.ts index dfc281b27d..be2aa640fa 100644 --- a/libs/angular-components/src/lib/components/form/public-form-summary.ts +++ b/libs/angular-components/src/lib/components/form/public-form-summary.ts @@ -4,13 +4,11 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from "@angular/core"; selector: "goab-public-form-summary", standalone: true, template: ` - - - + + + `, - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabPublicFormSummary { @Input() heading?: string; diff --git a/libs/angular-components/src/lib/components/form/public-form.spec.ts b/libs/angular-components/src/lib/components/form/public-form.spec.ts index ce4696f37c..00645040c4 100644 --- a/libs/angular-components/src/lib/components/form/public-form.spec.ts +++ b/libs/angular-components/src/lib/components/form/public-form.spec.ts @@ -23,9 +23,15 @@ class TestPublicFormComponent { status: GoabPublicFormStatus = "complete"; name = "test-form"; - handleInit(event: Event): void {/** do nothing **/} - handleComplete(event: GoabFormState): void {/** do nothing **/} - handleStateChange(event: GoabFormState): void {/** do nothing **/} + handleInit(event: Event): void { + /** do nothing **/ + } + handleComplete(event: GoabFormState): void { + /** do nothing **/ + } + handleStateChange(event: GoabFormState): void { + /** do nothing **/ + } } describe("GoabPublicForm", () => { @@ -60,7 +66,7 @@ describe("GoabPublicForm", () => { const el = fixture.debugElement.query(By.css("goa-public-form")).nativeElement; const detail = { - el: document.createElement("form") + el: document.createElement("form"), }; el.dispatchEvent(new CustomEvent("_init", { detail })); @@ -77,7 +83,7 @@ describe("GoabPublicForm", () => { form: {}, history: [], editting: "", - status: "complete" + status: "complete", }; el.dispatchEvent(new CustomEvent("_complete", { detail })); @@ -94,7 +100,7 @@ describe("GoabPublicForm", () => { form: {}, history: [], editting: "", - status: "complete" + status: "complete", }; const detail = { data: formState }; diff --git a/libs/angular-components/src/lib/components/form/public-form.ts b/libs/angular-components/src/lib/components/form/public-form.ts index f07e3127a9..7038516075 100644 --- a/libs/angular-components/src/lib/components/form/public-form.ts +++ b/libs/angular-components/src/lib/components/form/public-form.ts @@ -1,21 +1,27 @@ -import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, Output } from "@angular/core"; +import { + Component, + CUSTOM_ELEMENTS_SCHEMA, + EventEmitter, + Input, + Output, +} from "@angular/core"; import { GoabFormState, GoabPublicFormStatus } from "@abgov/ui-components-common"; @Component({ selector: "goab-public-form", standalone: true, template: ` - - - + + + `, - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabPublicForm { @Input() status?: GoabPublicFormStatus = "complete"; @@ -25,7 +31,6 @@ export class GoabPublicForm { @Output() onComplete = new EventEmitter(); @Output() onStateChange = new EventEmitter(); - _onInit(e: Event) { this.onInit.emit(e); } diff --git a/libs/angular-components/src/lib/components/form/public-subform-index.spec.ts b/libs/angular-components/src/lib/components/form/public-subform-index.spec.ts index 7f6a995a5b..4a21df103a 100644 --- a/libs/angular-components/src/lib/components/form/public-subform-index.spec.ts +++ b/libs/angular-components/src/lib/components/form/public-subform-index.spec.ts @@ -50,7 +50,9 @@ describe("GoabPublicSubformIndex", () => { it("should render with properties", () => { fixture.detectChanges(); - const el = fixture.debugElement.query(By.css("goa-public-subform-index")).nativeElement; + const el = fixture.debugElement.query( + By.css("goa-public-subform-index"), + ).nativeElement; expect(el?.getAttribute("heading")).toBe(component.heading); expect(el?.getAttribute("section-title")).toBe(component.sectionTitle); @@ -76,7 +78,9 @@ describe("GoabPublicSubformIndex", () => { it("should have the correct slot attribute on host element", () => { fixture.detectChanges(); - const hostElement = fixture.debugElement.query(By.css("goab-public-subform-index")).nativeElement; + const hostElement = fixture.debugElement.query( + By.css("goab-public-subform-index"), + ).nativeElement; expect(hostElement.getAttribute("slot")).toBe("subform-index"); }); @@ -92,7 +96,9 @@ describe("GoabPublicSubformIndex", () => { fixture.detectChanges(); - const el = fixture.debugElement.query(By.css("goa-public-subform-index")).nativeElement; + const el = fixture.debugElement.query( + By.css("goa-public-subform-index"), + ).nativeElement; expect(el?.getAttribute("heading")).toBe("Updated Heading"); expect(el?.getAttribute("section-title")).toBe("Updated Section"); diff --git a/libs/angular-components/src/lib/components/form/public-subform-index.ts b/libs/angular-components/src/lib/components/form/public-subform-index.ts index fc973427ef..fb8ac421ff 100644 --- a/libs/angular-components/src/lib/components/form/public-subform-index.ts +++ b/libs/angular-components/src/lib/components/form/public-subform-index.ts @@ -5,21 +5,21 @@ import { GoabBaseComponent } from "../base.component"; selector: "goab-public-subform-index", standalone: true, host: { - 'slot': 'subform-index' + slot: "subform-index", }, template: ` - - - + + + `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/form/public-subform.ts b/libs/angular-components/src/lib/components/form/public-subform.ts index db51ceaba2..e5ae600534 100644 --- a/libs/angular-components/src/lib/components/form/public-subform.ts +++ b/libs/angular-components/src/lib/components/form/public-subform.ts @@ -1,25 +1,31 @@ -import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, Output } from "@angular/core"; +import { + Component, + CUSTOM_ELEMENTS_SCHEMA, + EventEmitter, + Input, + Output, +} from "@angular/core"; import { GoabBaseComponent } from "../base.component"; @Component({ selector: "goab-public-subform", standalone: true, template: ` - - - + + + `, - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabPublicSubform extends GoabBaseComponent { @Input() id?: string = ""; diff --git a/libs/angular-components/src/lib/components/form/task-list.spec.ts b/libs/angular-components/src/lib/components/form/task-list.spec.ts index d2737519ef..a780678e8e 100644 --- a/libs/angular-components/src/lib/components/form/task-list.spec.ts +++ b/libs/angular-components/src/lib/components/form/task-list.spec.ts @@ -7,9 +7,7 @@ import { By } from "@angular/platform-browser"; standalone: true, imports: [GoabPublicFormTaskList], template: ` - +
    Task 1
    Task 2
    @@ -36,7 +34,9 @@ describe("GoabPublicFormTaskList", () => { it("should render with heading property", () => { fixture.detectChanges(); - const el = fixture.debugElement.query(By.css("goa-public-form-task-list")).nativeElement; + const el = fixture.debugElement.query( + By.css("goa-public-form-task-list"), + ).nativeElement; expect(el?.getAttribute("heading")).toBe(component.heading); @@ -54,7 +54,9 @@ describe("GoabPublicFormTaskList", () => { // Initial heading fixture.detectChanges(); - let el = fixture.debugElement.query(By.css("goa-public-form-task-list")).nativeElement; + let el = fixture.debugElement.query( + By.css("goa-public-form-task-list"), + ).nativeElement; expect(el?.getAttribute("heading")).toBe("Required Tasks"); // Change heading @@ -76,14 +78,18 @@ describe("GoabPublicFormTaskList", () => { component.heading = undefined as any; fixture.detectChanges(); - const el = fixture.debugElement.query(By.css("goa-public-form-task-list")).nativeElement; + const el = fixture.debugElement.query( + By.css("goa-public-form-task-list"), + ).nativeElement; expect(el?.hasAttribute("heading")).toBeFalsy(); }); it("should handle multiple nested elements", () => { fixture.detectChanges(); - const el = fixture.debugElement.query(By.css("goa-public-form-task-list")).nativeElement; + const el = fixture.debugElement.query( + By.css("goa-public-form-task-list"), + ).nativeElement; const taskItems = el?.querySelectorAll("[data-testid^='task-item']"); expect(taskItems?.length).toBe(2); @@ -96,15 +102,17 @@ describe("GoabPublicFormTaskList", () => { "Tasks & Requirements", "Tasks > 5", "Tasks < 10", - "Tasks with \"quotes\"", + 'Tasks with "quotes"', "Tasks with 'apostrophes'", ]; - specialHeadings.forEach(heading => { + specialHeadings.forEach((heading) => { component.heading = heading; fixture.detectChanges(); - const el = fixture.debugElement.query(By.css("goa-public-form-task-list")).nativeElement; + const el = fixture.debugElement.query( + By.css("goa-public-form-task-list"), + ).nativeElement; expect(el?.getAttribute("heading")).toBe(heading); }); }); diff --git a/libs/angular-components/src/lib/components/form/task-list.ts b/libs/angular-components/src/lib/components/form/task-list.ts index e57402ac5d..9cd79cdd8e 100644 --- a/libs/angular-components/src/lib/components/form/task-list.ts +++ b/libs/angular-components/src/lib/components/form/task-list.ts @@ -5,18 +5,18 @@ import { GoabBaseComponent } from "../base.component"; selector: "goab-public-form-task-list", standalone: true, template: ` - - - + + + `, - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabPublicFormTaskList extends GoabBaseComponent { @Input() heading?: string; -} \ No newline at end of file +} diff --git a/libs/angular-components/src/lib/components/form/task.spec.ts b/libs/angular-components/src/lib/components/form/task.spec.ts index 45541fec83..979458ce34 100644 --- a/libs/angular-components/src/lib/components/form/task.spec.ts +++ b/libs/angular-components/src/lib/components/form/task.spec.ts @@ -8,9 +8,7 @@ import { GoabPublicFormTaskStatus } from "@abgov/ui-components-common"; standalone: true, imports: [GoabPublicFormTask], template: ` - +
    Task content
    `, @@ -50,9 +48,13 @@ describe("GoabPublicFormTask", () => { }); it("should handle all valid status values", () => { - const statuses: GoabPublicFormTaskStatus[] = ["completed", "not-started", "cannot-start"]; + const statuses: GoabPublicFormTaskStatus[] = [ + "completed", + "not-started", + "cannot-start", + ]; - statuses.forEach(status => { + statuses.forEach((status) => { component.status = status; fixture.detectChanges(); diff --git a/libs/angular-components/src/lib/components/form/task.ts b/libs/angular-components/src/lib/components/form/task.ts index 7f610db363..d1140559b8 100644 --- a/libs/angular-components/src/lib/components/form/task.ts +++ b/libs/angular-components/src/lib/components/form/task.ts @@ -5,14 +5,12 @@ import { GoabPublicFormTaskStatus } from "@abgov/ui-components-common"; selector: "goab-public-form-task", standalone: true, template: ` - - - + + + `, - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabPublicFormTask { @Input() status?: GoabPublicFormTaskStatus; -} \ No newline at end of file +} diff --git a/libs/angular-components/src/lib/components/grid/grid.ts b/libs/angular-components/src/lib/components/grid/grid.ts index 5f5c6e03bf..19c20bdeb1 100644 --- a/libs/angular-components/src/lib/components/grid/grid.ts +++ b/libs/angular-components/src/lib/components/grid/grid.ts @@ -1,26 +1,33 @@ import { Spacing } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-grid", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabGrid extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/lib/components/header-menu/header-menu.ts b/libs/angular-components/src/lib/components/header-menu/header-menu.ts index 661bb76dfe..7c152c081a 100644 --- a/libs/angular-components/src/lib/components/header-menu/header-menu.ts +++ b/libs/angular-components/src/lib/components/header-menu/header-menu.ts @@ -1,22 +1,29 @@ -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; + import { GoabIconType } from "@abgov/ui-components-common"; @Component({ standalone: true, selector: "goab-app-header-menu", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabAppHeaderMenu implements OnInit { isReady = false; diff --git a/libs/angular-components/src/lib/components/header/header.ts b/libs/angular-components/src/lib/components/header/header.ts index 8d8302d521..d21d5eb44f 100644 --- a/libs/angular-components/src/lib/components/header/header.ts +++ b/libs/angular-components/src/lib/components/header/header.ts @@ -8,26 +8,25 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; - @Component({ standalone: true, selector: "goab-app-header", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabAppHeader implements OnInit { diff --git a/libs/angular-components/src/lib/components/hero-banner/hero-banner.ts b/libs/angular-components/src/lib/components/hero-banner/hero-banner.ts index 1080844e06..3db5dd32e3 100644 --- a/libs/angular-components/src/lib/components/hero-banner/hero-banner.ts +++ b/libs/angular-components/src/lib/components/hero-banner/hero-banner.ts @@ -1,26 +1,34 @@ -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, TemplateRef, OnInit, ChangeDetectorRef } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + TemplateRef, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; +import { NgTemplateOutlet } from "@angular/common"; @Component({ standalone: true, selector: "goab-hero-banner", - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - - -
    - -
    -
    + @if (isReady) { + + +
    + +
    +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/icon-button/icon-button.spec.ts b/libs/angular-components/src/lib/components/icon-button/icon-button.spec.ts index 12f493b036..7347368e06 100644 --- a/libs/angular-components/src/lib/components/icon-button/icon-button.spec.ts +++ b/libs/angular-components/src/lib/components/icon-button/icon-button.spec.ts @@ -99,6 +99,6 @@ describe("GoABIconButton", () => { fireEvent(el, new CustomEvent("_click")); - expect(onClick).toBeCalledTimes(1); + expect(onClick).toHaveBeenCalledTimes(1); }); }); diff --git a/libs/angular-components/src/lib/components/icon-button/icon-button.ts b/libs/angular-components/src/lib/components/icon-button/icon-button.ts index fc16dd9236..c74d3c2221 100644 --- a/libs/angular-components/src/lib/components/icon-button/icon-button.ts +++ b/libs/angular-components/src/lib/components/icon-button/icon-button.ts @@ -13,35 +13,35 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-icon-button", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabIconButton extends GoabBaseComponent implements OnInit { @@ -72,6 +72,4 @@ export class GoabIconButton extends GoabBaseComponent implements OnInit { _onClick() { this.onClick.emit(); } - - } diff --git a/libs/angular-components/src/lib/components/icon/icon.ts b/libs/angular-components/src/lib/components/icon/icon.ts index 310fc3d0da..526d7b4a38 100644 --- a/libs/angular-components/src/lib/components/icon/icon.ts +++ b/libs/angular-components/src/lib/components/icon/icon.ts @@ -1,4 +1,9 @@ -import { GoabIconOverridesType, GoabIconSize, GoabIconTheme, GoabIconType } from "@abgov/ui-components-common"; +import { + GoabIconOverridesType, + GoabIconSize, + GoabIconTheme, + GoabIconType, +} from "@abgov/ui-components-common"; import { CUSTOM_ELEMENTS_SCHEMA, Component, @@ -8,34 +13,34 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-icon", template: ` - - + @if (isReady) { + + + } `, styles: [":host { display: inline-flex; align-items: center; }"], schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabIcon extends GoabBaseComponent implements OnInit { @Input({ required: true }) type!: GoabIconType | GoabIconOverridesType; diff --git a/libs/angular-components/src/lib/components/input-number/input-number.ts b/libs/angular-components/src/lib/components/input-number/input-number.ts index 0487939a1b..fc81120d51 100644 --- a/libs/angular-components/src/lib/components/input-number/input-number.ts +++ b/libs/angular-components/src/lib/components/input-number/input-number.ts @@ -8,7 +8,7 @@ import { GoabInputType, Spacing, } from "@abgov/ui-components-common"; -import { NgIf, NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; import { CUSTOM_ELEMENTS_SCHEMA, Component, @@ -27,71 +27,74 @@ import { ControlValueAccessor, NG_VALUE_ACCESSOR } from "@angular/forms"; @Component({ standalone: true, selector: "goab-input-number", - imports: [NgIf, NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - -
    - - - - - {{ getLeadingContentAsString() }} - -
    - - - -
    - - - - - {{ getTrailingContentAsString() }} - -
    -
    + @if (isReady) { + +
    + @if (leadingContent) { + @if (getLeadingContentAsTemplate()) { + + } @else { + {{ getLeadingContentAsString() }} + } + } +
    + + + +
    + @if (trailingContent) { + @if (getTrailingContentAsTemplate()) { + + } @else { + {{ getTrailingContentAsString() }} + } + } +
    +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ diff --git a/libs/angular-components/src/lib/components/input/input.spec.ts b/libs/angular-components/src/lib/components/input/input.spec.ts index 477d71a04c..4f7fddfd72 100644 --- a/libs/angular-components/src/lib/components/input/input.spec.ts +++ b/libs/angular-components/src/lib/components/input/input.spec.ts @@ -222,8 +222,12 @@ describe("GoABInput", () => { new CustomEvent("_change", { detail: { name: "foo", value: "new value" } }), ); - expect(validateOnChange).toBeCalledWith( - expect.objectContaining({ name: "foo", value: "new value", event: expect.any(Event) }), + expect(validateOnChange).toHaveBeenCalledWith( + expect.objectContaining({ + name: "foo", + value: "new value", + event: expect.any(Event), + }), ); }); @@ -234,7 +238,7 @@ describe("GoABInput", () => { fireEvent(input, new CustomEvent("_focus")); - expect(validateOnFocus).toBeCalled(); + expect(validateOnFocus).toHaveBeenCalled(); }); it("should handle onBlur event", () => { @@ -244,7 +248,7 @@ describe("GoABInput", () => { fireEvent(input, new CustomEvent("_blur")); - expect(validateOnBlur).toBeCalled(); + expect(validateOnBlur).toHaveBeenCalled(); }); it("should handle onKeyPress event", () => { @@ -254,7 +258,7 @@ describe("GoABInput", () => { fireEvent(input, new CustomEvent("_keyPress")); - expect(validateOnKeyPress).toBeCalled(); + expect(validateOnKeyPress).toHaveBeenCalled(); }); it("should render leading and trailing content", () => { @@ -271,7 +275,9 @@ describe("GoABInput", () => { describe("writeValue", () => { it("should set value attribute when writeValue is called", () => { - const inputComponent = fixture.debugElement.query(By.css("goab-input")).componentInstance; + const inputComponent = fixture.debugElement.query( + By.css("goab-input"), + ).componentInstance; const inputElement = fixture.debugElement.query(By.css("goa-input")).nativeElement; inputComponent.writeValue("new value"); @@ -282,7 +288,9 @@ describe("GoABInput", () => { }); it("should set value attribute to empty string when writeValue is called with null or empty", () => { - const inputComponent = fixture.debugElement.query(By.css("goab-input")).componentInstance; + const inputComponent = fixture.debugElement.query( + By.css("goab-input"), + ).componentInstance; const inputElement = fixture.debugElement.query(By.css("goa-input")).nativeElement; // First set a value @@ -305,7 +313,9 @@ describe("GoABInput", () => { }); it("should update component value property", () => { - const inputComponent = fixture.debugElement.query(By.css("goab-input")).componentInstance; + const inputComponent = fixture.debugElement.query( + By.css("goab-input"), + ).componentInstance; inputComponent.writeValue("updated"); expect(inputComponent.value).toBe("updated"); diff --git a/libs/angular-components/src/lib/components/input/input.ts b/libs/angular-components/src/lib/components/input/input.ts index 50bcfc6d57..83b49b38f9 100644 --- a/libs/angular-components/src/lib/components/input/input.ts +++ b/libs/angular-components/src/lib/components/input/input.ts @@ -23,7 +23,7 @@ import { } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; import { GoabControlValueAccessor } from "../base.component"; -import { NgIf, NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; export interface IgnoreMe { ignore: string; @@ -32,73 +32,76 @@ export interface IgnoreMe { @Component({ standalone: true, selector: "goab-input", - imports: [NgIf, NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - -
    - - - - - {{ getLeadingContentAsString() }} - -
    - - - -
    - - - - - {{ getTrailingContentAsString() }} - -
    -
    + @if (isReady) { + +
    + @if (leadingContent) { + @if (getLeadingContentAsTemplate()) { + + } @else { + {{ getLeadingContentAsString() }} + } + } +
    + + + +
    + @if (trailingContent) { + @if (getTrailingContentAsTemplate()) { + + } @else { + {{ getTrailingContentAsString() }} + } + } +
    +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ diff --git a/libs/angular-components/src/lib/components/linear-progress/linear-progress.ts b/libs/angular-components/src/lib/components/linear-progress/linear-progress.ts index f5d1d5fe85..70cc9de4e4 100644 --- a/libs/angular-components/src/lib/components/linear-progress/linear-progress.ts +++ b/libs/angular-components/src/lib/components/linear-progress/linear-progress.ts @@ -5,24 +5,22 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; - @Component({ standalone: true, selector: "goab-linear-progress", template: ` - - + @if (isReady) { + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [CommonModule], }) export class GoabLinearProgress implements OnInit { @Input() progress?: number | null | undefined; diff --git a/libs/angular-components/src/lib/components/link/link.ts b/libs/angular-components/src/lib/components/link/link.ts index 0f367662c1..ef5d8fb321 100644 --- a/libs/angular-components/src/lib/components/link/link.ts +++ b/libs/angular-components/src/lib/components/link/link.ts @@ -1,28 +1,34 @@ import { GoabIconType, Spacing } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; @Component({ standalone: true, selector: "goab-link", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabLink implements OnInit { diff --git a/libs/angular-components/src/lib/components/menu-button/menu-action.ts b/libs/angular-components/src/lib/components/menu-button/menu-action.ts index d8978c5f5d..1ef9174b6c 100644 --- a/libs/angular-components/src/lib/components/menu-button/menu-action.ts +++ b/libs/angular-components/src/lib/components/menu-button/menu-action.ts @@ -18,8 +18,8 @@ import { CUSTOM_ELEMENTS_SCHEMA, Component, Input } from "@angular/core"; schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabMenuAction { - @Input({required: true}) text!: string; - @Input({required: true}) action!: string; + @Input({ required: true }) text!: string; + @Input({ required: true }) action!: string; @Input() icon?: GoabIconType; @Input() testId?: string; } diff --git a/libs/angular-components/src/lib/components/microsite-header/microsite-header.ts b/libs/angular-components/src/lib/components/microsite-header/microsite-header.ts index d218e77b9d..7eb6e477e6 100644 --- a/libs/angular-components/src/lib/components/microsite-header/microsite-header.ts +++ b/libs/angular-components/src/lib/components/microsite-header/microsite-header.ts @@ -9,30 +9,31 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; @Component({ standalone: true, selector: "goab-microsite-header", template: ` - -
    - -
    -
    + @if (isReady) { + +
    + +
    +
    + } `, - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabMicrositeHeader implements OnInit { diff --git a/libs/angular-components/src/lib/components/modal/modal.ts b/libs/angular-components/src/lib/components/modal/modal.ts index b53d55ce79..c6527e9987 100644 --- a/libs/angular-components/src/lib/components/modal/modal.ts +++ b/libs/angular-components/src/lib/components/modal/modal.ts @@ -13,36 +13,41 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; @Component({ standalone: true, selector: "goab-modal", - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - -
    - -
    +
    + @if (this.heading !== "" && getHeadingAsTemplate() !== null) { + + } +
    - + -
    - -
    -
    - `, +
    + @if (this.actions) { + + } +
    + + } + `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabModal implements OnInit { diff --git a/libs/angular-components/src/lib/components/notification/notification.ts b/libs/angular-components/src/lib/components/notification/notification.ts index 0d1773a363..334807c9be 100644 --- a/libs/angular-components/src/lib/components/notification/notification.ts +++ b/libs/angular-components/src/lib/components/notification/notification.ts @@ -1,23 +1,30 @@ import { GoabAriaLiveType, GoabNotificationType } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, EventEmitter, Input, Output, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; - +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + EventEmitter, + Input, + Output, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; @Component({ standalone: true, selector: "goab-notification", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabNotification implements OnInit { diff --git a/libs/angular-components/src/lib/components/page-block/page-block.ts b/libs/angular-components/src/lib/components/page-block/page-block.ts index ef7ffb0b18..9fc4b7094a 100644 --- a/libs/angular-components/src/lib/components/page-block/page-block.ts +++ b/libs/angular-components/src/lib/components/page-block/page-block.ts @@ -1,20 +1,23 @@ import { GoabPageBlockSize } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; @Component({ standalone: true, selector: "goab-page-block", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabPageBlock implements OnInit { diff --git a/libs/angular-components/src/lib/components/pages/pages.ts b/libs/angular-components/src/lib/components/pages/pages.ts index d90ab0d85f..bba2db0816 100644 --- a/libs/angular-components/src/lib/components/pages/pages.ts +++ b/libs/angular-components/src/lib/components/pages/pages.ts @@ -1,24 +1,32 @@ import { Spacing } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, numberAttribute, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + numberAttribute, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-pages", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabPages extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/lib/components/pagination/pagination.spec.ts b/libs/angular-components/src/lib/components/pagination/pagination.spec.ts index 9890357c1b..9ad9f0e9b3 100644 --- a/libs/angular-components/src/lib/components/pagination/pagination.spec.ts +++ b/libs/angular-components/src/lib/components/pagination/pagination.spec.ts @@ -1,23 +1,29 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from "@angular/core/testing"; import { GoabPagination } from "./pagination"; import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { GoabPaginationOnChangeDetail, GoabPaginationVariant, Spacing } from "@abgov/ui-components-common"; +import { + GoabPaginationOnChangeDetail, + GoabPaginationVariant, + Spacing, +} from "@abgov/ui-components-common"; @Component({ standalone: true, imports: [GoabPagination], template: ` - - - ` + + + `, }) class TestPaginationComponent { itemCount = 100; @@ -25,11 +31,13 @@ class TestPaginationComponent { perPageCount = 20; variant = "all" as GoabPaginationVariant; mt = "s" as Spacing; - mb = "m" as Spacing; - ml = "l" as Spacing; - mr = "xl" as Spacing; + mb = "m" as Spacing; + ml = "l" as Spacing; + mr = "xl" as Spacing; - onChange = (event: GoabPaginationOnChangeDetail) => {/** do nothing **/}; + onChange = (event: GoabPaginationOnChangeDetail) => { + /** do nothing **/ + }; } describe("GoABPagination", () => { @@ -39,7 +47,7 @@ describe("GoABPagination", () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ imports: [GoabPagination, TestPaginationComponent], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); fixture = TestBed.createComponent(TestPaginationComponent); @@ -59,7 +67,7 @@ describe("GoABPagination", () => { expect(el.getAttribute("mt")).toBe(component.mt); expect(el.getAttribute("mb")).toBe(component.mb); expect(el.getAttribute("ml")).toBe(component.ml); - expect(el.getAttribute("mr")).toBe( component.mr); + expect(el.getAttribute("mr")).toBe(component.mr); }); it("should handle the onChange event", () => { diff --git a/libs/angular-components/src/lib/components/pagination/pagination.ts b/libs/angular-components/src/lib/components/pagination/pagination.ts index a964b51a3e..49259523c4 100644 --- a/libs/angular-components/src/lib/components/pagination/pagination.ts +++ b/libs/angular-components/src/lib/components/pagination/pagination.ts @@ -12,29 +12,30 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-pagination", template: ` - - + @if (isReady) { + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabPagination extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/lib/components/popover/popover.ts b/libs/angular-components/src/lib/components/popover/popover.ts index 66a7fcf73f..9efec38475 100644 --- a/libs/angular-components/src/lib/components/popover/popover.ts +++ b/libs/angular-components/src/lib/components/popover/popover.ts @@ -1,31 +1,39 @@ import { GoabPopoverPosition } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, TemplateRef, OnInit, ChangeDetectorRef } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + TemplateRef, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; +import { NgTemplateOutlet } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-popover", - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - - -
    - -
    -
    + @if (isReady) { + + +
    + +
    +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts b/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts index 81ab781a2b..fbb725f652 100644 --- a/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts +++ b/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts @@ -1,4 +1,4 @@ -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; import { booleanAttribute, Component, @@ -14,28 +14,29 @@ import { @Component({ standalone: true, selector: "goab-push-drawer", - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - - - @if (getHeadingAsTemplate()) { -
    - -
    - } - @if (actions) { -
    - -
    - } -
    + @if (isReady) { + + + @if (getHeadingAsTemplate()) { +
    + +
    + } + @if (actions) { +
    + +
    + } +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/radio-group/radio-group.spec.ts b/libs/angular-components/src/lib/components/radio-group/radio-group.spec.ts index c5de076d1f..b7e30afcde 100644 --- a/libs/angular-components/src/lib/components/radio-group/radio-group.spec.ts +++ b/libs/angular-components/src/lib/components/radio-group/radio-group.spec.ts @@ -9,7 +9,6 @@ import { import { GoabRadioItem } from "../radio-item/radio-item"; import { fireEvent } from "@testing-library/dom"; import { By } from "@angular/platform-browser"; -import { CommonModule } from "@angular/common"; interface RadioOption { text: string; @@ -20,7 +19,7 @@ interface RadioOption { @Component({ standalone: true, - imports: [GoabRadioGroup, GoabRadioItem, CommonModule], + imports: [GoabRadioGroup, GoabRadioItem], template: ` - - {{ option.text }} -
    - {{ option.description }} -
    -
    + @for (option of options; track option.value) { + + {{ option.text }} + @if (option.isDescriptionSlot) { +
    + {{ option.description }} +
    + } +
    + }
    `, }) @@ -139,7 +141,8 @@ describe("GoABRadioGroup", () => { it("should render description", () => { component.options.forEach((option, index) => { - component.options[index].description = `Description for ${component.options[index].text}`; + component.options[index].description = + `Description for ${component.options[index].text}`; }); component.options[0].isDescriptionSlot = true; fixture.detectChanges(); @@ -150,12 +153,17 @@ describe("GoABRadioGroup", () => { expect(radioItems.length).toBe(component.options.length); // Slot description - expect(radioItems[0].querySelector("div[slot='description']")?.innerHTML, - ).toContain(`Description for ${component.options[0].text}`); + expect(radioItems[0].querySelector("div[slot='description']")?.innerHTML).toContain( + `Description for ${component.options[0].text}`, + ); // attribute description - expect(radioItems[1].getAttribute("description")).toBe(`Description for ${component.options[1].text}`); - expect(radioItems[2].getAttribute("description")).toBe(`Description for ${component.options[2].text}`); + expect(radioItems[1].getAttribute("description")).toBe( + `Description for ${component.options[1].text}`, + ); + expect(radioItems[2].getAttribute("description")).toBe( + `Description for ${component.options[2].text}`, + ); }); it("should dispatch onChange", () => { @@ -163,18 +171,31 @@ describe("GoABRadioGroup", () => { const changeEvent = new Event("change"); const radioGroup = fixture.nativeElement.querySelector("goa-radio-group"); - fireEvent(radioGroup, new CustomEvent("_change", { - detail: { name: component.name, value: component.options[0].value, event: changeEvent } - })); + fireEvent( + radioGroup, + new CustomEvent("_change", { + detail: { + name: component.name, + value: component.options[0].value, + event: changeEvent, + }, + }), + ); - expect(onChange).toBeCalledWith( - expect.objectContaining({ name: component.name, value: component.options[0].value, event: expect.any(Event) }), + expect(onChange).toHaveBeenCalledWith( + expect.objectContaining({ + name: component.name, + value: component.options[0].value, + event: expect.any(Event), + }), ); }); describe("writeValue", () => { it("should set value attribute when writeValue is called", () => { - const radioGroupComponent = fixture.debugElement.query(By.css("goab-radio-group")).componentInstance; + const radioGroupComponent = fixture.debugElement.query( + By.css("goab-radio-group"), + ).componentInstance; const radioGroupElement = fixture.nativeElement.querySelector("goa-radio-group"); radioGroupComponent.writeValue("apples"); @@ -185,7 +206,9 @@ describe("GoABRadioGroup", () => { }); it("should set value attribute to empty string when writeValue is called with null or empty", () => { - const radioGroupComponent = fixture.debugElement.query(By.css("goab-radio-group")).componentInstance; + const radioGroupComponent = fixture.debugElement.query( + By.css("goab-radio-group"), + ).componentInstance; const radioGroupElement = fixture.nativeElement.querySelector("goa-radio-group"); // First set a value @@ -208,7 +231,9 @@ describe("GoABRadioGroup", () => { }); it("should update component value property", () => { - const radioGroupComponent = fixture.debugElement.query(By.css("goab-radio-group")).componentInstance; + const radioGroupComponent = fixture.debugElement.query( + By.css("goab-radio-group"), + ).componentInstance; radioGroupComponent.writeValue("apples"); expect(radioGroupComponent.value).toBe("apples"); diff --git a/libs/angular-components/src/lib/components/radio-group/radio-group.ts b/libs/angular-components/src/lib/components/radio-group/radio-group.ts index 9216b0434c..0db7a4b548 100644 --- a/libs/angular-components/src/lib/components/radio-group/radio-group.ts +++ b/libs/angular-components/src/lib/components/radio-group/radio-group.ts @@ -14,34 +14,35 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { CommonModule } from "@angular/common"; + import { GoabControlValueAccessor } from "../base.component"; @Component({ standalone: true, selector: "goab-radio-group", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { @@ -74,7 +75,10 @@ export class GoabRadioGroup extends GoabControlValueAccessor implements OnInit { @Output() onChange = new EventEmitter(); _onChange(e: Event) { - const detail = { ...(e as CustomEvent).detail, event: e }; + const detail = { + ...(e as CustomEvent).detail, + event: e, + }; this.markAsTouched(); this.onChange.emit(detail); diff --git a/libs/angular-components/src/lib/components/radio-item/radio-item.spec.ts b/libs/angular-components/src/lib/components/radio-item/radio-item.spec.ts index 6e41c397c1..a3d23ec911 100644 --- a/libs/angular-components/src/lib/components/radio-item/radio-item.spec.ts +++ b/libs/angular-components/src/lib/components/radio-item/radio-item.spec.ts @@ -19,7 +19,7 @@ import { GoabRadioItem } from "./radio-item"; `, }) -class TestRadioItemWithRevealSlotComponent { } +class TestRadioItemWithRevealSlotComponent {} describe("Radio item with reveal slot", () => { let fixture: ComponentFixture; @@ -37,13 +37,17 @@ describe("Radio item with reveal slot", () => { })); it("should render with slot reveal", () => { - const radioItemElement = fixture.debugElement.nativeElement.querySelector("goa-radio-item"); + const radioItemElement = + fixture.debugElement.nativeElement.querySelector("goa-radio-item"); const slotReveal = radioItemElement.querySelector("[slot='reveal']"); expect(slotReveal.textContent).toContain("A reveal slot"); }); it("should pass the revealAriaLabel property to the web component", () => { - const radioItemElement = fixture.debugElement.nativeElement.querySelector("goa-radio-item"); - expect(radioItemElement.getAttribute("revealarialabel")).toBe("Screen reader announcement for radio reveal content"); + const radioItemElement = + fixture.debugElement.nativeElement.querySelector("goa-radio-item"); + expect(radioItemElement.getAttribute("revealarialabel")).toBe( + "Screen reader announcement for radio reveal content", + ); }); }); diff --git a/libs/angular-components/src/lib/components/radio-item/radio-item.ts b/libs/angular-components/src/lib/components/radio-item/radio-item.ts index c626a30910..de2c5d4b5d 100644 --- a/libs/angular-components/src/lib/components/radio-item/radio-item.ts +++ b/libs/angular-components/src/lib/components/radio-item/radio-item.ts @@ -7,43 +7,43 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-radio-item", template: ` - - -
    - -
    -
    - -
    -
    - `, - imports: [NgTemplateOutlet, CommonModule], + @if (isReady) { + + +
    + +
    +
    + @if (this.reveal) { + + } +
    +
    + } + `, + imports: [NgTemplateOutlet], schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabRadioItem extends GoabBaseComponent { diff --git a/libs/angular-components/src/lib/components/side-menu-group/side-menu-group.ts b/libs/angular-components/src/lib/components/side-menu-group/side-menu-group.ts index 5cd14e2c73..5bc03fef47 100644 --- a/libs/angular-components/src/lib/components/side-menu-group/side-menu-group.ts +++ b/libs/angular-components/src/lib/components/side-menu-group/side-menu-group.ts @@ -1,5 +1,10 @@ -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; import { GoabIconType } from "@abgov/ui-components-common"; import { GoabBaseComponent } from "../base.component"; @@ -7,20 +12,21 @@ import { GoabBaseComponent } from "../base.component"; standalone: true, selector: "goab-side-menu-group", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabSideMenuGroup extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/lib/components/side-menu-heading/side-menu-heading.spec.ts b/libs/angular-components/src/lib/components/side-menu-heading/side-menu-heading.spec.ts index a8f5819498..15b2a38690 100644 --- a/libs/angular-components/src/lib/components/side-menu-heading/side-menu-heading.spec.ts +++ b/libs/angular-components/src/lib/components/side-menu-heading/side-menu-heading.spec.ts @@ -7,9 +7,12 @@ import { GoabBadge } from "../badge/badge"; standalone: true, imports: [GoabSideMenuHeading, GoabBadge], template: ` - Heading - - + Heading + + `, }) class TestSideMenuHeadingComponent { @@ -21,7 +24,7 @@ describe("GoABSideMenuHeading", () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ imports: [GoabSideMenuHeading, GoabBadge, TestSideMenuHeadingComponent], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); fixture = TestBed.createComponent(TestSideMenuHeadingComponent); @@ -36,5 +39,5 @@ describe("GoABSideMenuHeading", () => { expect(el?.getAttribute("testid")).toBe("foo"); expect(el?.textContent).toContain("Heading"); expect(el?.querySelector("[slot='meta']")?.innerHTML).toContain("details"); - }) -}) + }); +}); diff --git a/libs/angular-components/src/lib/components/side-menu-heading/side-menu-heading.ts b/libs/angular-components/src/lib/components/side-menu-heading/side-menu-heading.ts index f909bfceb5..e064c4595b 100644 --- a/libs/angular-components/src/lib/components/side-menu-heading/side-menu-heading.ts +++ b/libs/angular-components/src/lib/components/side-menu-heading/side-menu-heading.ts @@ -1,18 +1,27 @@ import { GoabIconType } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, TemplateRef, OnInit, ChangeDetectorRef } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + TemplateRef, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; +import { NgTemplateOutlet } from "@angular/common"; @Component({ standalone: true, selector: "goab-side-menu-heading", - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], template: ` - - - - - - + @if (isReady) { + + + + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/side-menu/side-menu.ts b/libs/angular-components/src/lib/components/side-menu/side-menu.ts index 397646f8a7..3bcac7c2b6 100644 --- a/libs/angular-components/src/lib/components/side-menu/side-menu.ts +++ b/libs/angular-components/src/lib/components/side-menu/side-menu.ts @@ -1,16 +1,22 @@ -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; - +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; @Component({ standalone: true, selector: "goab-side-menu", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabSideMenu implements OnInit { isReady = false; diff --git a/libs/angular-components/src/lib/components/skeleton/skeleton.spec.ts b/libs/angular-components/src/lib/components/skeleton/skeleton.spec.ts index 1cbb3635af..2e77fc6e91 100644 --- a/libs/angular-components/src/lib/components/skeleton/skeleton.spec.ts +++ b/libs/angular-components/src/lib/components/skeleton/skeleton.spec.ts @@ -7,16 +7,18 @@ import { GoabSkeletonType, Spacing } from "@abgov/ui-components-common"; standalone: true, imports: [GoabSkeleton], template: ` - - ` + + `, }) class TestSkeletonComponent { type = "image" as GoabSkeletonType; @@ -37,7 +39,7 @@ describe("GoABSkeleton", () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ imports: [GoabSkeleton, TestSkeletonComponent], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); fixture = TestBed.createComponent(TestSkeletonComponent); @@ -45,7 +47,7 @@ describe("GoABSkeleton", () => { fixture.detectChanges(); tick(); fixture.detectChanges(); - })) + })); it("should render successfully", () => { const el = fixture.nativeElement.querySelector("goa-skeleton"); @@ -57,5 +59,5 @@ describe("GoABSkeleton", () => { expect(el?.getAttribute("mb")).toBe(component.mb); expect(el?.getAttribute("ml")).toBe(component.ml); expect(el?.getAttribute("mr")).toBe(component.mr); - }) -}) + }); +}); diff --git a/libs/angular-components/src/lib/components/skeleton/skeleton.ts b/libs/angular-components/src/lib/components/skeleton/skeleton.ts index b3523d1048..69b20fcd6d 100644 --- a/libs/angular-components/src/lib/components/skeleton/skeleton.ts +++ b/libs/angular-components/src/lib/components/skeleton/skeleton.ts @@ -1,27 +1,35 @@ import { GoabSkeletonSize, GoabSkeletonType, Spacing } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, numberAttribute, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + numberAttribute, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; + import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-skeleton", template: ` - - + @if (isReady) { + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabSkeleton extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/lib/components/spacer/spacer.spec.ts b/libs/angular-components/src/lib/components/spacer/spacer.spec.ts index 30b88b0111..0bffc8abc4 100644 --- a/libs/angular-components/src/lib/components/spacer/spacer.spec.ts +++ b/libs/angular-components/src/lib/components/spacer/spacer.spec.ts @@ -5,11 +5,11 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; @Component({ standalone: true, imports: [GoabSpacer], - template: ` - - ` + template: ` `, }) -class TestSpacerComponent {/** do nothing **/} +class TestSpacerComponent { + /** do nothing **/ +} describe("GoASpacer", () => { let fixture: ComponentFixture; @@ -17,7 +17,7 @@ describe("GoASpacer", () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ imports: [GoabSpacer, TestSpacerComponent], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); fixture = TestBed.createComponent(TestSpacerComponent); diff --git a/libs/angular-components/src/lib/components/spacer/spacer.ts b/libs/angular-components/src/lib/components/spacer/spacer.ts index af1bb5321b..76a4aa8f84 100644 --- a/libs/angular-components/src/lib/components/spacer/spacer.ts +++ b/libs/angular-components/src/lib/components/spacer/spacer.ts @@ -1,20 +1,29 @@ -import { GoabSpacerHorizontalSpacing, GoabSpacerVerticalSpacing } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + GoabSpacerHorizontalSpacing, + GoabSpacerVerticalSpacing, +} from "@abgov/ui-components-common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; @Component({ standalone: true, selector: "goab-spacer", template: ` - - + @if (isReady) { + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabSpacer implements OnInit { diff --git a/libs/angular-components/src/lib/components/spinner/spinner.ts b/libs/angular-components/src/lib/components/spinner/spinner.ts index 123d1ced37..821066ce11 100644 --- a/libs/angular-components/src/lib/components/spinner/spinner.ts +++ b/libs/angular-components/src/lib/components/spinner/spinner.ts @@ -8,23 +8,23 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; @Component({ standalone: true, selector: "goab-spinner", template: ` - - + @if (isReady) { + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabSpinner implements OnInit { diff --git a/libs/angular-components/src/lib/components/tab/tab.ts b/libs/angular-components/src/lib/components/tab/tab.ts index 1221035211..ddc2dffd01 100644 --- a/libs/angular-components/src/lib/components/tab/tab.ts +++ b/libs/angular-components/src/lib/components/tab/tab.ts @@ -7,28 +7,29 @@ import { ChangeDetectorRef, booleanAttribute, } from "@angular/core"; -import { NgTemplateOutlet, CommonModule } from "@angular/common"; +import { NgTemplateOutlet } from "@angular/common"; @Component({ standalone: true, selector: "goab-tab", template: ` - - - @if (typeof heading !== "string") { -
    - -
    - } -
    + @if (isReady) { + + + @if (isHeadingTemplate()) { +
    + +
    + } +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [NgTemplateOutlet, CommonModule], + imports: [NgTemplateOutlet], }) export class GoabTab implements OnInit { isReady = false; @@ -45,6 +46,10 @@ export class GoabTab implements OnInit { }); } + isHeadingTemplate(): boolean { + return typeof this.heading !== "string"; + } + getHeadingAsString(): string { return this.heading instanceof TemplateRef ? "" : this.heading; } diff --git a/libs/angular-components/src/lib/components/table-sort-header/table-sort-header.ts b/libs/angular-components/src/lib/components/table-sort-header/table-sort-header.ts index 3d59b53476..e5e1306ed7 100644 --- a/libs/angular-components/src/lib/components/table-sort-header/table-sort-header.ts +++ b/libs/angular-components/src/lib/components/table-sort-header/table-sort-header.ts @@ -1,21 +1,24 @@ import { GoabTableSortDirection } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; @Component({ standalone: true, selector: "goab-table-sort-header", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabTableSortHeader implements OnInit { isReady = false; diff --git a/libs/angular-components/src/lib/components/table/table.ts b/libs/angular-components/src/lib/components/table/table.ts index a3a1bc077f..932d24d88b 100644 --- a/libs/angular-components/src/lib/components/table/table.ts +++ b/libs/angular-components/src/lib/components/table/table.ts @@ -8,30 +8,30 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-table", template: ` - - - -
    -
    + @if (isReady) { + + + +
    +
    + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabTable extends GoabBaseComponent implements OnInit { diff --git a/libs/angular-components/src/lib/components/tabs/tabs.spec.ts b/libs/angular-components/src/lib/components/tabs/tabs.spec.ts index fd4dc2c428..5fbca68a99 100644 --- a/libs/angular-components/src/lib/components/tabs/tabs.spec.ts +++ b/libs/angular-components/src/lib/components/tabs/tabs.spec.ts @@ -68,8 +68,8 @@ describe("GoABTabs", () => { fireEvent( el, new CustomEvent("_change", { - detail: { tab: 2 } - }) + detail: { tab: 2 }, + }), ); expect(onChange).toHaveBeenCalledWith({ tab: 2 }); diff --git a/libs/angular-components/src/lib/components/tabs/tabs.ts b/libs/angular-components/src/lib/components/tabs/tabs.ts index 075e74bb16..3b2a6cad62 100644 --- a/libs/angular-components/src/lib/components/tabs/tabs.ts +++ b/libs/angular-components/src/lib/components/tabs/tabs.ts @@ -8,24 +8,25 @@ import { OnInit, ChangeDetectorRef, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabTabsOnChangeDetail, GoabTabsVariant } from "@abgov/ui-components-common"; @Component({ standalone: true, selector: "goab-tabs", template: ` - - - + @if (isReady) { + + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabTabs implements OnInit { diff --git a/libs/angular-components/src/lib/components/temporary-notification-ctrl/temporary-notification-ctrl.ts b/libs/angular-components/src/lib/components/temporary-notification-ctrl/temporary-notification-ctrl.ts index 017a2f34cf..af3eb49121 100644 --- a/libs/angular-components/src/lib/components/temporary-notification-ctrl/temporary-notification-ctrl.ts +++ b/libs/angular-components/src/lib/components/temporary-notification-ctrl/temporary-notification-ctrl.ts @@ -1,5 +1,10 @@ -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, OnInit, ChangeDetectorRef } from "@angular/core"; -import { CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; type SnackbarVerticalPosition = "top" | "bottom"; type SnackbarHorizontalPosition = "left" | "center" | "right"; @@ -8,15 +13,16 @@ type SnackbarHorizontalPosition = "left" | "center" | "right"; standalone: true, selector: "goab-temporary-notification-ctrl", template: ` - - + @if (isReady) { + + + } `, - imports: [CommonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }) export class GoabTemporaryNotificationCtrl implements OnInit { diff --git a/libs/angular-components/src/lib/components/text/text.ts b/libs/angular-components/src/lib/components/text/text.ts index 0ee46c4eeb..5cb43aa421 100644 --- a/libs/angular-components/src/lib/components/text/text.ts +++ b/libs/angular-components/src/lib/components/text/text.ts @@ -6,7 +6,7 @@ import { ChangeDetectorRef, HostBinding, } from "@angular/core"; -import { CommonModule } from "@angular/common"; + import { GoabTextColor, GoabTextHeadingElement, @@ -19,21 +19,22 @@ import { @Component({ standalone: true, selector: "goab-text", - imports: [CommonModule], + template: ` - - - + @if (isReady) { + + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], }) diff --git a/libs/angular-components/src/lib/components/textarea/textarea.spec.ts b/libs/angular-components/src/lib/components/textarea/textarea.spec.ts index d3c3cfae34..443b69b20a 100644 --- a/libs/angular-components/src/lib/components/textarea/textarea.spec.ts +++ b/libs/angular-components/src/lib/components/textarea/textarea.spec.ts @@ -111,7 +111,7 @@ describe("GoABTextArea", () => { }), ); - expect(onChange).toBeCalledTimes(1); + expect(onChange).toHaveBeenCalledTimes(1); }); it("should dispatch onBlur", () => { @@ -125,12 +125,14 @@ describe("GoABTextArea", () => { }), ); - expect(onBlur).toBeCalledTimes(1); + expect(onBlur).toHaveBeenCalledTimes(1); }); describe("writeValue", () => { it("should set value attribute when writeValue is called", () => { - const textareaComponent = fixture.debugElement.query(By.css("goab-textarea")).componentInstance; + const textareaComponent = fixture.debugElement.query( + By.css("goab-textarea"), + ).componentInstance; const textareaElement = fixture.nativeElement.querySelector("goa-textarea"); textareaComponent.writeValue("new content"); @@ -141,7 +143,9 @@ describe("GoABTextArea", () => { }); it("should set value attribute to empty string when writeValue is called with null or empty", () => { - const textareaComponent = fixture.debugElement.query(By.css("goab-textarea")).componentInstance; + const textareaComponent = fixture.debugElement.query( + By.css("goab-textarea"), + ).componentInstance; const textareaElement = fixture.nativeElement.querySelector("goa-textarea"); // First set a value @@ -164,7 +168,9 @@ describe("GoABTextArea", () => { }); it("should update component value property", () => { - const textareaComponent = fixture.debugElement.query(By.css("goab-textarea")).componentInstance; + const textareaComponent = fixture.debugElement.query( + By.css("goab-textarea"), + ).componentInstance; textareaComponent.writeValue("updated value"); expect(textareaComponent.value).toBe("updated value"); diff --git a/libs/angular-components/src/lib/components/textarea/textarea.ts b/libs/angular-components/src/lib/components/textarea/textarea.ts index e63ac3b530..8403dfafc7 100644 --- a/libs/angular-components/src/lib/components/textarea/textarea.ts +++ b/libs/angular-components/src/lib/components/textarea/textarea.ts @@ -18,40 +18,41 @@ import { Renderer2, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; -import { CommonModule } from "@angular/common"; + import { GoabControlValueAccessor } from "../base.component"; @Component({ standalone: true, selector: "goab-textarea", - imports: [CommonModule], + template: ` - - + @if (isReady) { + + + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ @@ -104,7 +105,10 @@ export class GoabTextArea extends GoabControlValueAccessor implements OnInit { } _onKeyPress(e: Event) { - const detail = { ...(e as CustomEvent).detail, event: e }; + const detail = { + ...(e as CustomEvent).detail, + event: e, + }; this.markAsTouched(); this.onKeyPress.emit(detail); } diff --git a/libs/angular-components/src/lib/components/tooltip/tooltip.spec.ts b/libs/angular-components/src/lib/components/tooltip/tooltip.spec.ts index 6c497f6549..7e9c8ee03f 100644 --- a/libs/angular-components/src/lib/components/tooltip/tooltip.spec.ts +++ b/libs/angular-components/src/lib/components/tooltip/tooltip.spec.ts @@ -49,4 +49,4 @@ describe("GoABTooltip", () => { expect(el?.getAttribute("maxwidth")).toBe("300px"); expect(el?.getAttribute("testid")).toBe("foo-maxwidth"); }); -}); \ No newline at end of file +}); diff --git a/libs/angular-components/src/lib/components/tooltip/tooltip.ts b/libs/angular-components/src/lib/components/tooltip/tooltip.ts index aa9652bf62..5f8d2dd11c 100644 --- a/libs/angular-components/src/lib/components/tooltip/tooltip.ts +++ b/libs/angular-components/src/lib/components/tooltip/tooltip.ts @@ -2,38 +2,45 @@ import { GoabTooltipHorizontalAlignment, GoabTooltipPosition, } from "@abgov/ui-components-common"; -import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, TemplateRef, OnInit, ChangeDetectorRef } from "@angular/core"; -import { NgTemplateOutlet, NgIf, CommonModule } from "@angular/common"; +import { + CUSTOM_ELEMENTS_SCHEMA, + Component, + Input, + TemplateRef, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; +import { NgTemplateOutlet } from "@angular/common"; import { GoabBaseComponent } from "../base.component"; @Component({ standalone: true, selector: "goab-tooltip", template: ` - -
    - - {{ getContentAsString() }} -
    - -
    + @if (isReady) { + +
    + @if (getContentAsTemplate()) { + + } + {{ getContentAsString() }} +
    + +
    + } `, schemas: [CUSTOM_ELEMENTS_SCHEMA], - imports: [NgTemplateOutlet, NgIf, CommonModule], + imports: [NgTemplateOutlet], }) export class GoabTooltip extends GoabBaseComponent implements OnInit { isReady = false; @@ -61,4 +68,4 @@ export class GoabTooltip extends GoabBaseComponent implements OnInit { if (!this.content) return null; return this.content instanceof TemplateRef ? this.content : null; } -} \ No newline at end of file +} diff --git a/libs/angular-components/src/lib/value-directive.ts b/libs/angular-components/src/lib/value-directive.ts index 59f97ff696..38ccf21017 100644 --- a/libs/angular-components/src/lib/value-directive.ts +++ b/libs/angular-components/src/lib/value-directive.ts @@ -4,20 +4,26 @@ import { ControlValueAccessor, NG_VALUE_ACCESSOR } from "@angular/forms"; // @deprecated: Use the new component @Directive({ standalone: true, - selector: "[goaValue]", - providers: [{ - provide: NG_VALUE_ACCESSOR, - useExisting: forwardRef(() => ValueDirective), - multi: true, - }], + selector: "[goaValue]", + providers: [ + { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => ValueDirective), + multi: true, + }, + ], }) export class ValueDirective implements ControlValueAccessor { private _value = ""; private _disabled = false; /* eslint-disable @typescript-eslint/no-explicit-any */ - onChange: any = () => { /* default implementation */ }; - onTouched: any = () => { /* default implementation */ }; + onChange: any = () => { + /* default implementation */ + }; + onTouched: any = () => { + /* default implementation */ + }; get value(): string { return this._value; @@ -47,14 +53,16 @@ export class ValueDirective implements ControlValueAccessor { this.elementRef.nativeElement.disabled = isDisabled; } - constructor(protected elementRef: ElementRef) { } + constructor(protected elementRef: ElementRef) {} - @HostListener("_change", ["$event.detail.value"]) - listenForValueChange(value: string) { + @HostListener("_change", ["$event"]) + listenForValueChange(event: Event) { + const value = (event as CustomEvent<{ value: string }>).detail.value; this.value = value; } - @HostListener("disabledChange", ["$event.detail.disabled"]) - listenForDisabledChange(isDisabled: boolean) { + @HostListener("disabledChange", ["$event"]) + listenForDisabledChange(event: Event) { + const isDisabled = (event as CustomEvent<{ disabled: boolean }>).detail.disabled; this.setDisabledState(isDisabled); } } @@ -62,17 +70,19 @@ export class ValueDirective implements ControlValueAccessor { @Directive({ standalone: true, selector: "[goaValueList]", - providers: [{ - provide: NG_VALUE_ACCESSOR, - useExisting: forwardRef(() => ValueListDirective), - multi: true, - }], + providers: [ + { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => ValueListDirective), + multi: true, + }, + ], }) export class ValueListDirective implements ControlValueAccessor { private _value?: string[] = []; - onChange: any = () => { }; - onTouched: any = () => { }; + onChange: any = () => {}; + onTouched: any = () => {}; get value(): string[] | undefined { return this._value; @@ -99,10 +109,11 @@ export class ValueListDirective implements ControlValueAccessor { this.onTouched = fn; } - constructor(protected elementRef: ElementRef) { } + constructor(protected elementRef: ElementRef) {} - @HostListener("_change", ["$event.detail.value"]) - listenForValueChange(value: string) { + @HostListener("_change", ["$event"]) + listenForValueChange(event: Event) { + const value = (event as CustomEvent<{ value: string }>).detail.value; if (!value) { this._setValue(undefined); return; diff --git a/libs/angular-components/src/test-setup.ts b/libs/angular-components/src/test-setup.ts index cd15a42ec6..f1b434f22a 100644 --- a/libs/angular-components/src/test-setup.ts +++ b/libs/angular-components/src/test-setup.ts @@ -1,10 +1,3 @@ -// @ts-expect-error https://thymikee.github.io/jest-preset-angular/docs/getting-started/test-environment -globalThis.ngJest = { - testEnvironmentOptions: { - errorOnUnknownElements: true, - errorOnUnknownProperties: true, - }, -}; -import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; +import { setupZoneTestEnv } from "jest-preset-angular/setup-env/zone"; setupZoneTestEnv(); diff --git a/libs/angular-components/tsconfig.spec.json b/libs/angular-components/tsconfig.spec.json index 7870b7c011..bcd255aa34 100644 --- a/libs/angular-components/tsconfig.spec.json +++ b/libs/angular-components/tsconfig.spec.json @@ -4,7 +4,12 @@ "outDir": "../../dist/out-tsc", "module": "commonjs", "target": "es2016", - "types": ["jest", "node"] + "types": ["jest", "node"], + // Required after the Angular v21 upgrade: https://github.com/nrwl/nx/issues/33777#issuecomment-3674675041 + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "isolatedModules": true, + "emitDecoratorMetadata": false // prevents warnings after isolatedModules:true }, "files": ["src/test-setup.ts"], "include": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"] diff --git a/package-lock.json b/package-lock.json index 50ad8a6a81..ea1fab8ba8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,17 +9,16 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "@angular/animations": "20.1.6", - "@angular/common": "20.3.14", - "@angular/compiler": "^20.3.16", - "@angular/core": "^20.3.17", - "@angular/forms": "20.1.6", - "@angular/platform-browser": "20.1.6", - "@angular/platform-browser-dynamic": "20.1.6", - "@angular/router": "20.1.6", + "@angular/animations": "21.1.4", + "@angular/common": "21.1.4", + "@angular/compiler": "21.1.4", + "@angular/core": "21.1.4", + "@angular/forms": "21.1.4", + "@angular/platform-browser": "21.1.4", + "@angular/platform-browser-dynamic": "21.1.4", + "@angular/router": "21.1.4", "@astrojs/mdx": "^4.3.13", "@astrojs/react": "^4.4.2", - "@nrwl/jest": "19.5.4", "@swc/helpers": "0.5.19", "astro": "^5.16.6", "date-fns": "^3.0.6", @@ -39,15 +38,15 @@ "@abgov/design-tokens": "^1.10.0", "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", "@abgov/nx-release": "^12.0.0", - "@angular-devkit/build-angular": "^20.3.17", - "@angular-devkit/core": "20.1.5", - "@angular-devkit/schematics": "20.1.5", + "@angular-devkit/build-angular": "21.1.4", + "@angular-devkit/core": "21.1.4", + "@angular-devkit/schematics": "21.1.4", "@angular-eslint/eslint-plugin": "18.0.1", "@angular-eslint/eslint-plugin-template": "18.0.1", "@angular-eslint/template-parser": "18.0.1", - "@angular/cli": "^21.1.5", - "@angular/compiler-cli": "20.1.6", - "@angular/language-service": "20.1.6", + "@angular/cli": "21.1.4", + "@angular/compiler-cli": "21.1.4", + "@angular/language-service": "21.1.4", "@astrojs/check": "^0.9.6", "@babel/core": "^7.14.5", "@babel/preset-react": "^7.14.5", @@ -62,7 +61,7 @@ "@nx/vitest": "22.5.3", "@nx/web": "22.5.3", "@nx/workspace": "22.5.3", - "@schematics/angular": "20.1.5", + "@schematics/angular": "21.1.4", "@sveltejs/vite-plugin-svelte": "^3.0.1", "@swc-node/register": "1.11.1", "@swc/cli": "0.7.10", @@ -99,7 +98,7 @@ "jiti": "2.4.2", "jsdom": "^26.1.0", "jsonc-eslint-parser": "^2.1.0", - "ng-packagr": "20.1.0", + "ng-packagr": "21.2.0", "nx": "22.5.3", "playwright": "^1.50.1", "postcss": "^8.4.5", @@ -116,7 +115,7 @@ "swc-loader": "0.1.15", "ts-jest": "29.4.6", "ts-node": "10.9.1", - "typescript": "5.8.3", + "typescript": "5.9.3", "vite": "~5.4.20", "vite-plugin-dts": "4.5.4", "vitest": "^4.0.13", @@ -132,9 +131,9 @@ }, "node_modules/@abgov/design-tokens-v2": { "name": "@abgov/design-tokens", - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@abgov/design-tokens/-/design-tokens-2.0.0.tgz", - "integrity": "sha512-vmkM3AWHqlvBav1iPYhI9Y8ZTL2c3qTc3whaNdPTFlOpoC4LJR/oMQUgSeafLygSuAHrAr4iuTdK/CUbgVKHtA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@abgov/design-tokens/-/design-tokens-2.1.1.tgz", + "integrity": "sha512-JpNFdkgFIkrIQTmQ8h/A91EF4qoaXDK9sL/gN5QE54xCr8LxUCpEtdHpUVDwVhk8cugLrp6klhQMw8yqWLrBoA==", "dev": true }, "node_modules/@abgov/nx-release": { @@ -212,57 +211,57 @@ "license": "MIT" }, "node_modules/@algolia/abtesting": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.14.1.tgz", - "integrity": "sha512-Dkj0BgPiLAaim9sbQ97UKDFHJE/880wgStAM18U++NaJ/2Cws34J5731ovJifr6E3Pv4T2CqvMXf8qLCC417Ew==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.12.2.tgz", + "integrity": "sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-abtesting": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.48.1.tgz", - "integrity": "sha512-LV5qCJdj+/m9I+Aj91o+glYszrzd7CX6NgKaYdTOj4+tUYfbS62pwYgUfZprYNayhkQpVFcrW8x8ZlIHpS23Vw==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.46.2.tgz", + "integrity": "sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.48.1.tgz", - "integrity": "sha512-/AVoMqHhPm14CcHq7mwB+bUJbfCv+jrxlNvRjXAuO+TQa+V37N8k1b0ijaRBPdmSjULMd8KtJbQyUyabXOu6Kg==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.46.2.tgz", + "integrity": "sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.48.1.tgz", - "integrity": "sha512-VXO+qu2Ep6ota28ktvBm3sG53wUHS2n7bgLWmce5jTskdlCD0/JrV4tnBm1l7qpla1CeoQb8D7ShFhad+UoSOw==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.46.2.tgz", + "integrity": "sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==", "dev": true, "license": "MIT", "engines": { @@ -270,151 +269,151 @@ } }, "node_modules/@algolia/client-insights": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.48.1.tgz", - "integrity": "sha512-zl+Qyb0nLg+Y5YvKp1Ij+u9OaPaKg2/EPzTwKNiVyOHnQJlFxmXyUZL1EInczAZsEY8hVpPCLtNfhMhfxluXKQ==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.46.2.tgz", + "integrity": "sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.48.1.tgz", - "integrity": "sha512-r89Qf9Oo9mKWQXumRu/1LtvVJAmEDpn8mHZMc485pRfQUMAwSSrsnaw1tQ3sszqzEgAr1c7rw6fjBI+zrAXTOw==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.46.2.tgz", + "integrity": "sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.48.1.tgz", - "integrity": "sha512-TPKNPKfghKG/bMSc7mQYD9HxHRUkBZA4q1PEmHgICaSeHQscGqL4wBrKkhfPlDV1uYBKW02pbFMUhsOt7p4ZpA==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.46.2.tgz", + "integrity": "sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.48.1.tgz", - "integrity": "sha512-4Fu7dnzQyQmMFknYwTiN/HxPbH4DyxvQ1m+IxpPp5oslOgz8m6PG5qhiGbqJzH4HiT1I58ecDiCAC716UyVA8Q==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.46.2.tgz", + "integrity": "sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/ingestion": { - "version": "1.48.1", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.48.1.tgz", - "integrity": "sha512-/RFq3TqtXDUUawwic/A9xylA2P3LDMO8dNhphHAUOU51b1ZLHrmZ6YYJm3df1APz7xLY1aht6okCQf+/vmrV9w==", + "version": "1.46.2", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.46.2.tgz", + "integrity": "sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.48.1", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.48.1.tgz", - "integrity": "sha512-Of0jTeAZRyRhC7XzDSjJef0aBkgRcvRAaw0ooYRlOw57APii7lZdq+layuNdeL72BRq1snaJhoMMwkmLIpJScw==", + "version": "1.46.2", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.46.2.tgz", + "integrity": "sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.48.1.tgz", - "integrity": "sha512-bE7JcpFXzxF5zHwj/vkl2eiCBvyR1zQ7aoUdO+GDXxGp0DGw7nI0p8Xj6u8VmRQ+RDuPcICFQcCwRIJT5tDJFw==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.46.2.tgz", + "integrity": "sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.48.1.tgz", - "integrity": "sha512-MK3wZ2koLDnvH/AmqIF1EKbJlhRS5j74OZGkLpxI4rYvNi9Jn/C7vb5DytBnQ4KUWts7QsmbdwHkxY5txQHXVw==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.46.2.tgz", + "integrity": "sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1" + "@algolia/client-common": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.48.1.tgz", - "integrity": "sha512-2oDT43Y5HWRSIQMPQI4tA/W+TN/N2tjggZCUsqQV440kxzzoPGsvv9QP1GhQ4CoDa+yn6ygUsGp6Dr+a9sPPSg==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.46.2.tgz", + "integrity": "sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1" + "@algolia/client-common": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.48.1.tgz", - "integrity": "sha512-xcaCqbhupVWhuBP1nwbk1XNvwrGljozutEiLx06mvqDf3o8cHyEgQSHS4fKJM+UAggaWVnnFW+Nne5aQ8SUJXg==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.46.2.tgz", + "integrity": "sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.48.1" + "@algolia/client-common": "5.46.2" }, "engines": { "node": ">= 14.0.0" @@ -435,134 +434,82 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.2003.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.18.tgz", - "integrity": "sha512-pPEDby3wQb40YSpH+UrjodJ78Z7q0Qvy3DTkS7mP2EIM4r0WVz8OlxLGS2uAc6tXSbIZe0bPp0B56P6uet3tUw==", + "version": "0.2101.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2101.4.tgz", + "integrity": "sha512-3yyebORk+ovtO+LfDjIGbGCZhCMDAsyn9vkCljARj3sSshS4blOQBar0g+V3kYAweLT5Gf+rTKbN5jneOkBAFQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "20.3.18", + "@angular-devkit/core": "21.1.4", "rxjs": "7.8.2" }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { - "version": "20.3.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.18.tgz", - "integrity": "sha512-zGWMjMqE8qXYr8baYCs43k9HlKz9J4Gh3Yx+7XE0uS0Y1LXzzALevSoUw7GIPdSvOriQJAEgtWE6QKssqSGltQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.3", - "rxjs": "7.8.2", - "source-map": "0.7.6" + "bin": { + "architect": "bin/cli.js" }, "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/architect/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@angular-devkit/architect/node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" } }, "node_modules/@angular-devkit/build-angular": { - "version": "20.3.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.3.18.tgz", - "integrity": "sha512-ERjoEHnWDi9FFf7HBvJuWoDVHHEBvUL43vPp7vUAf3+0u/qOzXmuxFccdzT72BM1wU3y70MAXB76TUkr/KrxBA==", + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.1.4.tgz", + "integrity": "sha512-2HPCo6vEu5EIwxxFYhnmdfbktRBoOVQD3q7lG9PMQPf/jRCnyIZ70qSbXbAV96IMDLFl8mLRfY4scoaFMIYGMw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2003.18", - "@angular-devkit/build-webpack": "0.2003.18", - "@angular-devkit/core": "20.3.18", - "@angular/build": "20.3.18", - "@babel/core": "7.28.3", - "@babel/generator": "7.28.3", + "@angular-devkit/architect": "0.2101.4", + "@angular-devkit/build-webpack": "0.2101.4", + "@angular-devkit/core": "21.1.4", + "@angular/build": "21.1.4", + "@babel/core": "7.28.5", + "@babel/generator": "7.28.5", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", "@babel/plugin-transform-async-generator-functions": "7.28.0", "@babel/plugin-transform-async-to-generator": "7.27.1", - "@babel/plugin-transform-runtime": "7.28.3", - "@babel/preset-env": "7.28.3", - "@babel/runtime": "7.28.3", + "@babel/plugin-transform-runtime": "7.28.5", + "@babel/preset-env": "7.28.5", + "@babel/runtime": "7.28.4", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "20.3.18", + "@ngtools/webpack": "21.1.4", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.21", + "autoprefixer": "10.4.23", "babel-loader": "10.0.0", - "browserslist": "^4.21.5", + "browserslist": "^4.26.0", "copy-webpack-plugin": "13.0.1", "css-loader": "7.1.2", - "esbuild-wasm": "0.25.9", - "fast-glob": "3.3.3", + "esbuild-wasm": "0.27.2", "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", - "less": "4.4.0", + "less": "4.4.2", "less-loader": "12.3.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", "mini-css-extract-plugin": "2.9.4", - "open": "10.2.0", - "ora": "8.2.0", + "open": "11.0.0", + "ora": "9.0.0", "picomatch": "4.0.3", - "piscina": "5.1.3", + "piscina": "5.1.4", "postcss": "8.5.6", - "postcss-loader": "8.1.1", + "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.90.0", - "sass-loader": "16.0.5", - "semver": "7.7.2", + "sass": "1.97.1", + "sass-loader": "16.0.6", + "semver": "7.7.3", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.43.1", + "terser": "5.44.1", + "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", "webpack": "5.105.0", - "webpack-dev-middleware": "7.4.2", + "webpack-dev-middleware": "7.4.5", "webpack-dev-server": "5.2.2", "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" @@ -573,25 +520,25 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.25.9" + "esbuild": "0.27.2" }, "peerDependencies": { - "@angular/compiler-cli": "^20.0.0", - "@angular/core": "^20.0.0", - "@angular/localize": "^20.0.0", - "@angular/platform-browser": "^20.0.0", - "@angular/platform-server": "^20.0.0", - "@angular/service-worker": "^20.0.0", - "@angular/ssr": "^20.3.18", + "@angular/compiler-cli": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/localize": "^21.0.0", + "@angular/platform-browser": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "@angular/service-worker": "^21.0.0", + "@angular/ssr": "^21.1.4", "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", - "jest": "^29.5.0 || ^30.2.0", - "jest-environment-jsdom": "^29.5.0 || ^30.2.0", + "jest": "^30.2.0", + "jest-environment-jsdom": "^30.2.0", "karma": "^6.3.0", - "ng-packagr": "^20.0.0", + "ng-packagr": "^21.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "typescript": ">=5.8 <6.0" + "typescript": ">=5.9 <6.0" }, "peerDependenciesMeta": { "@angular/core": { @@ -638,51 +585,23 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { - "version": "20.3.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.18.tgz", - "integrity": "sha512-zGWMjMqE8qXYr8baYCs43k9HlKz9J4Gh3Yx+7XE0uS0Y1LXzzALevSoUw7GIPdSvOriQJAEgtWE6QKssqSGltQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.3", - "rxjs": "7.8.2", - "source-map": "0.7.6" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", - "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", + "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.3", - "@babel/parser": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.3", - "@babel/types": "^7.28.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -707,1431 +626,1448 @@ "semver": "bin/semver.js" } }, - "node_modules/@angular-devkit/build-angular/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "node_modules/@angular-devkit/build-angular/node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "node_modules/@angular-devkit/build-angular/node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular-devkit/build-webpack": { - "version": "0.2003.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2003.18.tgz", - "integrity": "sha512-E70aiRrmnzk+nMQnEpg7KemqhjyI2X53zCC+1SGAVIISmtKyHQNoJDXa48im+bhrcjHpY2LOo0bFgb/vcWHc8A==", + "node_modules/@angular-devkit/build-angular/node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2003.18", - "rxjs": "7.8.2" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=6.9.0" }, "peerDependencies": { - "webpack": "^5.30.0", - "webpack-dev-server": "^5.0.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular-devkit/core": { - "version": "20.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.1.5.tgz", - "integrity": "sha512-458Q/pNoXIyUWVbnXktMyc7Ly3MxsYwgQcEIFzzxJu+zDLAt1PwyDe4o+rd8XHwbceW9r0XIlQa78dEjew6MPQ==", + "node_modules/@angular-devkit/build-angular/node_modules/@babel/plugin-transform-runtime": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz", + "integrity": "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "8.17.1", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.2", - "source-map": "0.7.4" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=6.9.0" }, "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular-devkit/core/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "node_modules/@angular-devkit/build-angular/node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@angular-devkit/schematics": { - "version": "20.1.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.1.5.tgz", - "integrity": "sha512-fAxBFNIlete9FiqaqpQuXgjpoXwQRwKjv9MEW7DuciPYd/FFWr0858U2bzuJEk0mFNY3f9Q4vlY/RgDk9HWF2A==", + "node_modules/@angular-devkit/build-angular/node_modules/@babel/preset-env": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz", + "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "20.1.5", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "8.2.0", - "rxjs": "7.8.2" + "@babel/compat-data": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.5", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.4", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.28.5", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.5", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.28.5", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.4", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.4", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.0.1.tgz", - "integrity": "sha512-lr4Ysoo28FBOKcJFQUGTMpbWDcak+gyuYvyggp37ERvazE6EDomPFxzEHNqVT9EI9sZ+GDBOoPR+EdFh0ALGNw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular-eslint/eslint-plugin": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.0.1.tgz", - "integrity": "sha512-pS3SYLa9DA+ENklGxEUlcw6/xCxgDk9fgjyaheuSjDxL3TIh1pTa4V2TptODdcPh7XCYXiVmy+e/w79mXlGzOw==", + "node_modules/@angular-devkit/build-angular/node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.0.1", - "@angular-eslint/utils": "18.0.1" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.0.1.tgz", - "integrity": "sha512-u/eov/CFBb8l35D8dW78Dx5fBLd8FZFibKN9XQknhzXnDMpISuUOMny5g5/wvYYjqLgqEySXMiHKEAxEup7xtA==", + "node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "dev": true, "license": "MIT", - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.0.1", - "@angular-eslint/utils": "18.0.1", - "aria-query": "5.3.0", - "axobject-query": "4.0.0" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@angular-eslint/template-parser": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.0.1.tgz", - "integrity": "sha512-22fKzkWo9Ts8aY/WHL1A6seS2tpltgRRXVfnZnnqvQRyRiuPnx1FC0ly7+QPZkThh8vdLwxU+BvtLq9Uiqh9OQ==", + "node_modules/@angular-devkit/build-angular/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.0.1", - "eslint-scope": "^8.0.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "engines": { + "node": ">= 0.6" } }, - "node_modules/@angular-eslint/utils": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.0.1.tgz", - "integrity": "sha512-Q9lCySqg+9h2cz08+SoWj48cY1i04tL1k3bsQJmF2TsylAw2mSsNGX2X3h9WkdxY7sUoY0mP7MVW1iU54Gobcg==", + "node_modules/@angular-devkit/build-angular/node_modules/autoprefixer": { + "version": "10.4.23", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", + "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.0.1" + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001760", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" }, "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "postcss": "^8.1.0" } }, - "node_modules/@angular/animations": { - "version": "20.1.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.1.6.tgz", - "integrity": "sha512-vSU0BP0BzX20HoCE81MKcr9cd6H9zB1qbCNk2J1ulH1C9rXs5ZpeORy+riIJTOZDYLtE0jCsXT3pvVb+nPmADQ==", + "node_modules/@angular-devkit/build-angular/node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - }, - "peerDependencies": { - "@angular/common": "20.1.6", - "@angular/core": "20.1.6" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@angular/build": { - "version": "20.3.18", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.18.tgz", - "integrity": "sha512-t+Bg0uxnyrbm5ADa8Ka5rz4bSdf8ScCnY8Hua3bLnIPITzeuuunV7a14zMSOcPL6eLu0760CvszHsGX1k6aN7A==", + "node_modules/@angular-devkit/build-angular/node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2003.18", - "@babel/core": "7.28.3", - "@babel/helper-annotate-as-pure": "7.27.3", - "@babel/helper-split-export-declaration": "7.24.7", - "@inquirer/confirm": "5.1.14", - "@vitejs/plugin-basic-ssl": "2.1.0", - "beasties": "0.3.5", - "browserslist": "^4.23.0", - "esbuild": "0.25.9", - "https-proxy-agent": "7.0.6", - "istanbul-lib-instrument": "6.0.3", - "jsonc-parser": "3.3.1", - "listr2": "9.0.1", - "magic-string": "0.30.17", - "mrmime": "2.0.1", - "parse5-html-rewriting-stream": "8.0.0", - "picomatch": "4.0.3", - "piscina": "5.1.3", - "rollup": "4.59.0", - "sass": "1.90.0", - "semver": "7.7.2", - "source-map-support": "0.5.21", - "tinyglobby": "0.2.14", - "vite": "7.1.11", - "watchpack": "2.4.4" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "optionalDependencies": { - "lmdb": "3.4.2" - }, - "peerDependencies": { - "@angular/compiler": "^20.0.0", - "@angular/compiler-cli": "^20.0.0", - "@angular/core": "^20.0.0", - "@angular/localize": "^20.0.0", - "@angular/platform-browser": "^20.0.0", - "@angular/platform-server": "^20.0.0", - "@angular/service-worker": "^20.0.0", - "@angular/ssr": "^20.3.18", - "karma": "^6.4.0", - "less": "^4.2.0", - "ng-packagr": "^20.0.0", - "postcss": "^8.4.0", - "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "tslib": "^2.3.0", - "typescript": ">=5.8 <6.0", - "vitest": "^3.1.1" - }, - "peerDependenciesMeta": { - "@angular/core": { - "optional": true - }, - "@angular/localize": { - "optional": true - }, - "@angular/platform-browser": { - "optional": true - }, - "@angular/platform-server": { - "optional": true - }, - "@angular/service-worker": { - "optional": true - }, - "@angular/ssr": { - "optional": true - }, - "karma": { - "optional": true - }, - "less": { - "optional": true - }, - "ng-packagr": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tailwindcss": { - "optional": true - }, - "vitest": { - "optional": true - } + "ms": "2.0.0" } }, - "node_modules/@angular/build/node_modules/@babel/core": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", - "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", + "node_modules/@angular-devkit/build-angular/node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/build-angular/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.3", - "@babel/parser": "^7.28.3", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.3", - "@babel/types": "^7.28.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">= 14.16.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@angular/build/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@angular-devkit/build-angular/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } + "license": "MIT" }, - "node_modules/@angular/build/node_modules/convert-source-map": { + "node_modules/@angular-devkit/build-angular/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, - "node_modules/@angular/build/node_modules/vite": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz", - "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", + "node_modules/@angular-devkit/build-angular/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/@angular/build/node_modules/vite/node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "node_modules/@angular-devkit/build-angular/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/build-angular/node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/build-angular/node_modules/esbuild-wasm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.27.2.tgz", + "integrity": "sha512-eUTnl8eh+v8UZIZh4MrMOKDAc8Lm7+NqP3pyuTORGFY1s/o9WoiJgKnwXy+te2J3hX7iRbFSHEyig7GsPeeJyw==", "dev": true, "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" + "node": ">=18" } }, - "node_modules/@angular/cli": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.0.tgz", - "integrity": "sha512-yaGEpckqgOemcHkoWeH92i9eNrcbr9iE/dnxL+Du6s9spTAXJ2jjtYfszhmowuQZkCK5rjecMb8ctNtHlaGCjg==", + "node_modules/@angular-devkit/build-angular/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@angular-devkit/architect": "0.2102.0", - "@angular-devkit/core": "21.2.0", - "@angular-devkit/schematics": "21.2.0", - "@inquirer/prompts": "7.10.1", - "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.26.0", - "@schematics/angular": "21.2.0", - "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.48.1", - "ini": "6.0.0", - "jsonc-parser": "3.3.1", - "listr2": "9.0.5", - "npm-package-arg": "13.0.2", - "pacote": "21.3.1", - "parse5-html-rewriting-stream": "8.0.0", - "semver": "7.7.4", - "yargs": "18.0.0", - "zod": "4.3.6" - }, - "bin": { - "ng": "bin/ng.js" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=8.0.0" } }, - "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { - "version": "0.2102.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.0.tgz", - "integrity": "sha512-kYFwTNzToG2SJMxj2f41w3QRtdqlrFuF+bpZrtIaHOP078Ktld8EPIp9KqB0Y46Vvs69ifby5Q1/wPD9wA3iaw==", + "node_modules/@angular-devkit/build-angular/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "21.2.0", - "rxjs": "7.8.2" - }, - "bin": { - "architect": "bin/cli.js" - }, + "license": "BSD-2-Clause", "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=4.0" } }, - "node_modules/@angular/cli/node_modules/@angular-devkit/core": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.0.tgz", - "integrity": "sha512-HZdTn46Ca6qbb9Zef8R/+TWsk6mNKRm4rJyL3PxHP6HnVCwSPNZ0LNN9BjVREBs+UlRdXqBGFBZh5D1nBgu5GQ==", + "node_modules/@angular-devkit/build-angular/node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.3", - "rxjs": "7.8.2", - "source-map": "0.7.6" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^5.0.0" + "node": ">= 0.10.0" }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@angular/cli/node_modules/@angular-devkit/schematics": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.0.tgz", - "integrity": "sha512-3kn3FI5v7BQ7Zct6raek+WgvyDwOJ8wElbyC903GxMQCDBRGGcevhHvTAIHhknihEsrgplzPhTlWeMbk1JfdFg==", + "node_modules/@angular-devkit/build-angular/node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.0", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.21", - "ora": "9.3.0", - "rxjs": "7.8.2" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "ms": "2.0.0" } }, - "node_modules/@angular/cli/node_modules/@schematics/angular": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.0.tgz", - "integrity": "sha512-GQUIeGzZwCT9/W5MAkKnkwETROPbA1eRmy3JF56jLmvr95tJnypGOG8jGYy0d+tcEVujIouh48r4J3bJQg5mrw==", + "node_modules/@angular-devkit/build-angular/node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/build-angular/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.0", - "@angular-devkit/schematics": "21.2.0", - "jsonc-parser": "3.3.1" + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">= 0.8" } }, - "node_modules/@angular/cli/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "node_modules/@angular-devkit/build-angular/node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "ms": "2.0.0" } }, - "node_modules/@angular/cli/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "node_modules/@angular-devkit/build-angular/node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } + "license": "MIT" }, - "node_modules/@angular/cli/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "node_modules/@angular-devkit/build-angular/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.6" } }, - "node_modules/@angular/cli/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/@angular-devkit/build-angular/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">= 6" } }, - "node_modules/@angular/cli/node_modules/cli-spinners": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz", - "integrity": "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==", + "node_modules/@angular-devkit/build-angular/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18.20" + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@angular/cli/node_modules/cli-truncate": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz", - "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==", + "node_modules/@angular-devkit/build-angular/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, "license": "MIT", - "dependencies": { - "slice-ansi": "^7.1.0", - "string-width": "^8.0.0" - }, "engines": { - "node": ">=20" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular/cli/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "node_modules/@angular-devkit/build-angular/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, - "node_modules/@angular/cli/node_modules/eventemitter3": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", - "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "node_modules/@angular-devkit/build-angular/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/@angular/cli/node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "node_modules/@angular-devkit/build-angular/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.1" - }, - "engines": { - "node": ">=18" - }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular/cli/node_modules/listr2": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", - "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", + "node_modules/@angular-devkit/build-angular/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", - "dependencies": { - "cli-truncate": "^5.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - }, "engines": { - "node": ">=20.0.0" + "node": ">= 0.6" } }, - "node_modules/@angular/cli/node_modules/log-symbols": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", - "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", + "node_modules/@angular-devkit/build-angular/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { - "is-unicode-supported": "^2.0.0", - "yoctocolors": "^2.1.1" + "mime-db": "1.52.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular/cli/node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "node": ">= 0.6" } }, - "node_modules/@angular/cli/node_modules/ora": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-9.3.0.tgz", - "integrity": "sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==", + "node_modules/@angular-devkit/build-angular/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^5.6.2", - "cli-cursor": "^5.0.0", - "cli-spinners": "^3.2.0", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.1.0", - "log-symbols": "^7.0.1", - "stdin-discarder": "^0.3.1", - "string-width": "^8.1.0" - }, "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/@angular/cli/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/@angular-devkit/build-angular/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/@angular/cli/node_modules/slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "node_modules/@angular-devkit/build-angular/node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": "^10 || ^12 || >=14" } }, - "node_modules/@angular/cli/node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "node_modules/@angular-devkit/build-angular/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dev": true, "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, "engines": { - "node": ">= 12" - } - }, - "node_modules/@angular/cli/node_modules/stdin-discarder": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.1.tgz", - "integrity": "sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@angular/cli/node_modules/string-width": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.1.tgz", - "integrity": "sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==", + "node_modules/@angular-devkit/build-angular/node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.3.0", - "strip-ansi": "^7.1.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/@angular/cli/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/@angular-devkit/build-angular/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" + "node": ">= 14.18.0" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@angular/cli/node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "node_modules/@angular-devkit/build-angular/node_modules/sass": { + "version": "1.97.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.1.tgz", + "integrity": "sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" }, "engines": { - "node": ">=18" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, - "node_modules/@angular/cli/node_modules/wrap-ansi/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/@angular-devkit/build-angular/node_modules/sass-loader": { + "version": "16.0.6", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.6.tgz", + "integrity": "sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "neo-async": "^2.6.2" }, "engines": { - "node": ">=18" + "node": ">= 18.12.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular/common": { - "version": "20.3.14", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.14.tgz", - "integrity": "sha512-OOUvjTtnpktJLsNupA+GFT2q5zNocPdpOENA8aSrXvAheNybLjgi+otO3U3sQsvB1VwaoEZ9GT5O3lZlstnA/A==", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@angular/core": "20.3.14", - "rxjs": "^6.5.3 || ^7.4.0" + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@angular/compiler": { - "version": "20.3.16", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.16.tgz", - "integrity": "sha512-Pt9Ms9GwTThgzdxWBwMfN8cH1JEtQ2DK5dc2yxYtPSaD+WKmG9AVL1PrzIYQEbaKcWk2jxASUHpEWSlNiwo8uw==", + "node_modules/@angular-devkit/build-angular/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": ">= 0.8.0" } }, - "node_modules/@angular/compiler-cli": { - "version": "20.1.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.1.6.tgz", - "integrity": "sha512-wskAeqRH46XfYRjaNSE3waeaBrogKghUM82WDDEw0U+CMP/j3BBS0RqILRYJCmuTjQ7RwXaPQBV2m2jAYaHlNg==", + "node_modules/@angular-devkit/build-angular/node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "7.28.0", - "@jridgewell/sourcemap-codec": "^1.4.14", - "chokidar": "^4.0.0", - "convert-source-map": "^1.5.1", - "reflect-metadata": "^0.2.0", - "semver": "^7.0.0", - "tslib": "^2.3.0", - "yargs": "^18.0.0" + "ms": "2.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/build-angular/node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/terser": { + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" }, "bin": { - "ng-xi18n": "bundles/src/bin/ng_xi18n.js", - "ngc": "bundles/src/bin/ngc.js" + "terser": "bin/terser" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - }, - "peerDependencies": { - "@angular/compiler": "20.1.6", - "typescript": ">=5.8 <5.9" + "node": ">=10" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">= 0.6" } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", - "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "node_modules/@angular-devkit/build-angular/node_modules/webpack": { + "version": "5.105.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz", + "integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.6", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.0", - "@babel/types": "^7.28.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.19.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/babel" + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", + "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular/core": { - "version": "20.3.17", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.17.tgz", - "integrity": "sha512-YlQqxMeHI9XJw7I7oM3hYFQd4lQbK37IdlD9ztROIw5FjX6i6lmLU7+X1MQGSRi2r+X9l3IZtl33hRTNvkoUBw==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.21.2", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@angular/compiler": "20.3.17", - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.15.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "@angular/compiler": { + "webpack": { "optional": true }, - "zone.js": { + "webpack-cli": { "optional": true } } }, - "node_modules/@angular/forms": { - "version": "20.1.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.1.6.tgz", - "integrity": "sha512-9gLaiX8c2qOCu4jVukATCnSAANJuLKWGLZpZyLdJGHpZWM7ECf6hpsDKOq+AytqqYKWqZvjcI8AujUroU6aUtg==", + "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": ">= 8.10.0" }, - "peerDependencies": { - "@angular/common": "20.1.6", - "@angular/core": "20.1.6", - "@angular/platform-browser": "20.1.6", - "rxjs": "^6.5.3 || ^7.4.0" + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@angular/language-service": { - "version": "20.1.6", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-20.1.6.tgz", - "integrity": "sha512-ItcxUjVkEJCo4QoR2nORjaFEPInJ4z61DE9AaCMVcmENNeXBt+hpqI+mal2ktZvVsV3ah3kskWy4hQUNZIRAdA==", + "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, "license": "MIT", - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - } - }, - "node_modules/@angular/platform-browser": { - "version": "20.1.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.1.6.tgz", - "integrity": "sha512-0FmqP1+JdzrT74JZLbf5IpC8nn0AeJ3Mk1IlXRVcK5olyh3SiEZIGBw89mYwmgP3gQqnjoakooTMA3wwy4Evxw==", - "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": ">=12.0.0" }, "peerDependencies": { - "@angular/animations": "20.1.6", - "@angular/common": "20.1.6", - "@angular/core": "20.1.6" + "@types/express": "^4.17.13" }, "peerDependenciesMeta": { - "@angular/animations": { + "@types/express": { "optional": true } } }, - "node_modules/@angular/platform-browser-dynamic": { - "version": "20.1.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.1.6.tgz", - "integrity": "sha512-vAzgQUGppZ6lBpT++hFzCw6K77MfeYwtL/2BxHPWZMsJVrHF2WtbATn0Icgx6vyKixz7eJzDPKhooFSn5o32RQ==", + "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": ">=18" }, - "peerDependencies": { - "@angular/common": "20.1.6", - "@angular/compiler": "20.1.6", - "@angular/core": "20.1.6", - "@angular/platform-browser": "20.1.6" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular/router": { - "version": "20.1.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.1.6.tgz", - "integrity": "sha512-42eB6UB/uZt5LqBK7sIGV+fnWPWgwlhZDCl7aujv0Tlwx1HgdLW7EbqMYs+2SIrezn4uj0hg+74oy1PL46V7MA==", + "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": ">=8.6" }, - "peerDependencies": { - "@angular/common": "20.1.6", - "@angular/core": "20.1.6", - "@angular/platform-browser": "20.1.6", - "rxjs": "^6.5.3 || ^7.4.0" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@astrojs/check": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.6.tgz", - "integrity": "sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA==", + "node_modules/@angular-devkit/build-angular/node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", "dev": true, "license": "MIT", "dependencies": { - "@astrojs/language-server": "^2.16.1", - "chokidar": "^4.0.1", - "kleur": "^4.1.5", - "yargs": "^17.7.2" + "is-wsl": "^3.1.0" }, - "bin": { - "astro-check": "bin/astro-check.js" + "engines": { + "node": ">=18" }, - "peerDependencies": { - "typescript": "^5.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@astrojs/check/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@astrojs/check/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/@angular-devkit/build-webpack": { + "version": "0.2101.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2101.4.tgz", + "integrity": "sha512-lPjPxeEzUha4bnlGzD3KFFf3yxcQjOfV9wwZIa4XLsqjCZsUk95TzHQH7i64OCTw9uKTEQkJBAuO6v2WXHxopw==", "dev": true, "license": "MIT", + "dependencies": { + "@angular-devkit/architect": "0.2101.4", + "rxjs": "7.8.2" + }, "engines": { - "node": ">=8" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^5.0.2" } }, - "node_modules/@astrojs/check/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@angular-devkit/core": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.4.tgz", + "integrity": "sha512-ObPTI5gYCB1jGxTRhcqZ6oQVUBFVJ8GH4LksVuAiz0nFX7xxpzARWvlhq943EtnlovVlUd9I8fM3RQqjfGVVAQ==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.3", + "rxjs": "7.8.2", + "source-map": "0.7.6" }, "engines": { - "node": ">=8" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^5.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/@astrojs/check/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/@angular-devkit/schematics": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.1.4.tgz", + "integrity": "sha512-Nqq0ioCUxrbEX+L4KOarETcZZJNnJ1mAJ0ubO4VM91qnn8RBBM9SnQ91590TfC34Szk/wh+3+Uj6KUvTJNuegQ==", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "@angular-devkit/core": "21.1.4", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.21", + "ora": "9.0.0", + "rxjs": "7.8.2" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@astrojs/compiler": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.0.tgz", - "integrity": "sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==", - "license": "MIT" - }, - "node_modules/@astrojs/internal-helpers": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", - "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", + "node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.0.1.tgz", + "integrity": "sha512-lr4Ysoo28FBOKcJFQUGTMpbWDcak+gyuYvyggp37ERvazE6EDomPFxzEHNqVT9EI9sZ+GDBOoPR+EdFh0ALGNw==", + "dev": true, "license": "MIT" }, - "node_modules/@astrojs/language-server": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.16.3.tgz", - "integrity": "sha512-yO5K7RYCMXUfeDlnU6UnmtnoXzpuQc0yhlaCNZ67k1C/MiwwwvMZz+LGa+H35c49w5QBfvtr4w4Zcf5PcH8uYA==", + "node_modules/@angular-eslint/eslint-plugin": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.0.1.tgz", + "integrity": "sha512-pS3SYLa9DA+ENklGxEUlcw6/xCxgDk9fgjyaheuSjDxL3TIh1pTa4V2TptODdcPh7XCYXiVmy+e/w79mXlGzOw==", "dev": true, "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.13.0", - "@astrojs/yaml2ts": "^0.2.2", - "@jridgewell/sourcemap-codec": "^1.5.5", - "@volar/kit": "~2.4.27", - "@volar/language-core": "~2.4.27", - "@volar/language-server": "~2.4.27", - "@volar/language-service": "~2.4.27", - "muggle-string": "^0.4.1", - "tinyglobby": "^0.2.15", - "volar-service-css": "0.0.68", - "volar-service-emmet": "0.0.68", - "volar-service-html": "0.0.68", - "volar-service-prettier": "0.0.68", - "volar-service-typescript": "0.0.68", - "volar-service-typescript-twoslash-queries": "0.0.68", - "volar-service-yaml": "0.0.68", - "vscode-html-languageservice": "^5.6.1", - "vscode-uri": "^3.1.0" - }, - "bin": { - "astro-ls": "bin/nodeServer.js" + "@angular-eslint/bundled-angular-compiler": "18.0.1", + "@angular-eslint/utils": "18.0.1" }, "peerDependencies": { - "prettier": "^3.0.0", - "prettier-plugin-astro": ">=0.11.0" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - }, - "prettier-plugin-astro": { - "optional": true - } + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" } }, - "node_modules/@astrojs/language-server/node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "node_modules/@angular-eslint/eslint-plugin-template": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.0.1.tgz", + "integrity": "sha512-u/eov/CFBb8l35D8dW78Dx5fBLd8FZFibKN9XQknhzXnDMpISuUOMny5g5/wvYYjqLgqEySXMiHKEAxEup7xtA==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" + "@angular-eslint/bundled-angular-compiler": "18.0.1", + "@angular-eslint/utils": "18.0.1", + "aria-query": "5.3.0", + "axobject-query": "4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" } }, - "node_modules/@astrojs/markdown-remark": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.10.tgz", - "integrity": "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==", + "node_modules/@angular-eslint/template-parser": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.0.1.tgz", + "integrity": "sha512-22fKzkWo9Ts8aY/WHL1A6seS2tpltgRRXVfnZnnqvQRyRiuPnx1FC0ly7+QPZkThh8vdLwxU+BvtLq9Uiqh9OQ==", + "dev": true, "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.7.5", - "@astrojs/prism": "3.3.0", - "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-to-text": "^4.0.2", - "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.1", - "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.2", - "remark-smartypants": "^3.0.2", - "shiki": "^3.19.0", - "smol-toml": "^1.5.2", - "unified": "^11.0.5", - "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.2", - "vfile": "^6.0.3" + "@angular-eslint/bundled-angular-compiler": "18.0.1", + "eslint-scope": "^8.0.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" } }, - "node_modules/@astrojs/markdown-remark/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "node_modules/@angular-eslint/utils": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.0.1.tgz", + "integrity": "sha512-Q9lCySqg+9h2cz08+SoWj48cY1i04tL1k3bsQJmF2TsylAw2mSsNGX2X3h9WkdxY7sUoY0mP7MVW1iU54Gobcg==", + "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "@angular-eslint/bundled-angular-compiler": "18.0.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" } }, - "node_modules/@astrojs/mdx": { - "version": "4.3.13", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.13.tgz", - "integrity": "sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q==", + "node_modules/@angular/animations": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.1.4.tgz", + "integrity": "sha512-8xQ0Ylw7qqVyw4ZJ/Tyw/z5Mtqtp8AMj+R+Z1sCWcyxBgDU4+qfxteVYdiipWC3tX77A0FTsXqwvNP9WVY2/WA==", "license": "MIT", "dependencies": { - "@astrojs/markdown-remark": "6.3.10", - "@mdx-js/mdx": "^3.1.1", - "acorn": "^8.15.0", - "es-module-lexer": "^1.7.0", - "estree-util-visit": "^2.0.0", - "hast-util-to-html": "^9.0.5", - "piccolore": "^0.1.3", - "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.1", - "remark-smartypants": "^3.0.2", - "source-map": "^0.7.6", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.3" + "tslib": "^2.3.0" }, "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "astro": "^5.0.0" + "@angular/core": "21.1.4" } }, - "node_modules/@astrojs/mdx/node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "license": "BSD-3-Clause", + "node_modules/@angular/build": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.1.4.tgz", + "integrity": "sha512-7CAAQPWFMMqod40ox5MOVB/CnoBXFDehyQhs0hls6lu7bOy/M0EDy0v6bERkyNGRz1mihWWBiCV8XzEinrlq1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.2101.4", + "@babel/core": "7.28.5", + "@babel/helper-annotate-as-pure": "7.27.3", + "@babel/helper-split-export-declaration": "7.24.7", + "@inquirer/confirm": "5.1.21", + "@vitejs/plugin-basic-ssl": "2.1.0", + "beasties": "0.3.5", + "browserslist": "^4.26.0", + "esbuild": "0.27.2", + "https-proxy-agent": "7.0.6", + "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", + "listr2": "9.0.5", + "magic-string": "0.30.21", + "mrmime": "2.0.1", + "parse5-html-rewriting-stream": "8.0.0", + "picomatch": "4.0.3", + "piscina": "5.1.4", + "rolldown": "1.0.0-beta.58", + "sass": "1.97.1", + "semver": "7.7.3", + "source-map-support": "0.5.21", + "tinyglobby": "0.2.15", + "undici": "7.20.0", + "vite": "7.3.0", + "watchpack": "2.5.0" + }, "engines": { - "node": ">= 12" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "lmdb": "3.4.4" + }, + "peerDependencies": { + "@angular/compiler": "^21.0.0", + "@angular/compiler-cli": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/localize": "^21.0.0", + "@angular/platform-browser": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "@angular/service-worker": "^21.0.0", + "@angular/ssr": "^21.1.4", + "karma": "^6.4.0", + "less": "^4.2.0", + "ng-packagr": "^21.0.0", + "postcss": "^8.4.0", + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "tslib": "^2.3.0", + "typescript": ">=5.9 <6.0", + "vitest": "^4.0.8" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, + "@angular/localize": { + "optional": true + }, + "@angular/platform-browser": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@angular/ssr": { + "optional": true + }, + "karma": { + "optional": true + }, + "less": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tailwindcss": { + "optional": true + }, + "vitest": { + "optional": true + } } }, - "node_modules/@astrojs/prism": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", - "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", + "node_modules/@angular/build/node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, "license": "MIT", "dependencies": { - "prismjs": "^1.30.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@astrojs/react": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-4.4.2.tgz", - "integrity": "sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ==", + "node_modules/@angular/build/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/build/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, "license": "MIT", "dependencies": { - "@vitejs/plugin-react": "^4.7.0", - "ultrahtml": "^1.6.0", - "vite": "^6.4.1" + "readdirp": "^4.0.1" }, "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" + "node": ">= 14.16.0" }, - "peerDependencies": { - "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", - "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", - "react": "^17.0.2 || ^18.0.0 || ^19.0.0", - "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@astrojs/react/node_modules/vite": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "node_modules/@angular/build/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular/build/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular/build/node_modules/sass": { + "version": "1.97.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.1.tgz", + "integrity": "sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A==", + "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/@angular/build/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/build/node_modules/undici": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", + "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/@angular/build/node_modules/vite": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", + "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -2140,14 +2076,14 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", - "less": "*", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" @@ -2188,76 +2124,135 @@ } } }, - "node_modules/@astrojs/telemetry": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", - "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", + "node_modules/@angular/build/node_modules/watchpack": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.0.tgz", + "integrity": "sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==", + "dev": true, "license": "MIT", "dependencies": { - "ci-info": "^4.2.0", - "debug": "^4.4.0", - "dlv": "^1.1.3", - "dset": "^3.1.4", - "is-docker": "^3.0.0", - "is-wsl": "^3.1.0", - "which-pm-runs": "^1.1.0" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" }, "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" + "node": ">=10.13.0" } }, - "node_modules/@astrojs/telemetry/node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/@angular/cli": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.1.4.tgz", + "integrity": "sha512-XsMHgxTvHGiXXrhYZz3zMZYhYU0gHdpoHKGiEKXwcx+S1KoYbIssyg6oF2Kq49ZaE0OYCTKjnvgDce6ZqdkJ/A==", + "dev": true, "license": "MIT", + "dependencies": { + "@angular-devkit/architect": "0.2101.4", + "@angular-devkit/core": "21.1.4", + "@angular-devkit/schematics": "21.1.4", + "@inquirer/prompts": "7.10.1", + "@listr2/prompt-adapter-inquirer": "3.0.5", + "@modelcontextprotocol/sdk": "1.26.0", + "@schematics/angular": "21.1.4", + "@yarnpkg/lockfile": "1.1.0", + "algoliasearch": "5.46.2", + "ini": "6.0.0", + "jsonc-parser": "3.3.1", + "listr2": "9.0.5", + "npm-package-arg": "13.0.2", + "pacote": "21.0.4", + "parse5-html-rewriting-stream": "8.0.0", + "resolve": "1.22.11", + "semver": "7.7.3", + "yargs": "18.0.0", + "zod": "4.3.5" + }, + "bin": { + "ng": "bin/ng.js" + }, "engines": { - "node": ">=8" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@astrojs/yaml2ts": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.2.tgz", - "integrity": "sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==", + "node_modules/@angular/cli/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/common": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.1.4.tgz", + "integrity": "sha512-1uOxPrHO9PFZBU/JavzYzjxAm+5x7vD2z6AeUndqdT4LjqOBIePswxFDRqM9dlfF8FIwnnfmNFipiC/yQjJSnA==", "license": "MIT", "dependencies": { - "yaml": "^2.5.0" + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/core": "21.1.4", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "node_modules/@angular/compiler": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.1.4.tgz", + "integrity": "sha512-H0qtASeqOTaS44ioF4DYE/yNqwzUmEJpMYrcNEUFEwA20/DkLzyoaEx4y1CjIxtXxuhtge95PNymDBOLWSjIdg==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", - "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "node_modules/@angular/compiler-cli": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.1.4.tgz", + "integrity": "sha512-Uw8KmpVCo58/f5wf6pY8ZS5fodv65hn5jxms8Nv/K7/LVe3i1nNFrHyneBx5+a7qkz93nSV4rdwBVnMvjIyr+g==", + "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "7.28.5", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^5.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^18.0.0" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js" + }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/compiler": "21.1.4", + "typescript": ">=5.9 <6.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/core": { + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -2284,372 +2279,636 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, "license": "MIT" }, - "node_modules/@babel/core/node_modules/semver": { + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" } }, - "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "node_modules/@angular/core": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.1.4.tgz", + "integrity": "sha512-QBDO5SaVYTVQ0fIN9Qd7US9cUCgs2vM9x6K18PTUKmygIkHVHTFdzwm4MO5gpCOFzJseGbS+dNzqn+v0PaKf9g==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/compiler": "21.1.4", + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.15.0 || ~0.16.0" + }, + "peerDependenciesMeta": { + "@angular/compiler": { + "optional": true + }, + "zone.js": { + "optional": true + } } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "node_modules/@angular/forms": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.1.4.tgz", + "integrity": "sha512-duVT/eOncmFNBYRlK/F7WDg6GD1vL1mxUrDdnp7M9J8JvNrKH0PvdfzuOAmjbB8/bsvUNTLFXCV4+43Mc2Hqsw==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@standard-schema/spec": "^1.0.0", + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/common": "21.1.4", + "@angular/core": "21.1.4", + "@angular/platform-browser": "21.1.4", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "node_modules/@angular/language-service": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-21.1.4.tgz", + "integrity": "sha512-E0OKcbYMJPaWlDsz4clPoFJRCgpWBSmMZtgzd4Py3C6yxTyPCZYgA43UyzUDiQI7rHHjD5V6d5EvocgSq6uBfQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", - "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", + "node_modules/@angular/platform-browser": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.1.4.tgz", + "integrity": "sha512-S6Iw5CkORih5omh+MQY35w0bUBxdSFAPLDg386S6/9fEUjDClo61hvXNKxaNh9g7tnh1LD7zmTmKrqufnhnFDQ==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.5", - "semver": "^6.3.1" + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@angular/animations": "21.1.4", + "@angular/common": "21.1.4", + "@angular/core": "21.1.4" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@angular/platform-browser-dynamic": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.1.4.tgz", + "integrity": "sha512-lThgNDFHPQyrx0liNX3x8wHcgp1sd/Dym19zm1PSQ67k6J4snwxZFhNlwFHVr1K86XvX/vilyeR2edPLe9lF3Q==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/common": "21.1.4", + "@angular/compiler": "21.1.4", + "@angular/core": "21.1.4", + "@angular/platform-browser": "21.1.4" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", - "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "node_modules/@angular/router": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.1.4.tgz", + "integrity": "sha512-nPYuRJ8ub/X8GK55U2KqYy/ducVRn6HSoDmZz0yiXtI6haFsZlv9R1j5zi0EDIqrrN0HGARMs6jNDXZC1Ded3w==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "regexpu-core": "^6.3.1", - "semver": "^6.3.1" + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@angular/common": "21.1.4", + "@angular/core": "21.1.4", + "@angular/platform-browser": "21.1.4", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" } }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", - "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@astrojs/check": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.6.tgz", + "integrity": "sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "debug": "^4.4.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.22.10" + "@astrojs/language-server": "^2.16.1", + "chokidar": "^4.0.1", + "kleur": "^4.1.5", + "yargs": "^17.7.2" + }, + "bin": { + "astro-check": "bin/astro-check.js" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "typescript": "^5.0.0" } }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "node_modules/@astrojs/check/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, "engines": { - "node": ">=6.9.0" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", - "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "node_modules/@astrojs/check/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@astrojs/check/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@astrojs/check/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@astrojs/check/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "node_modules/@astrojs/check/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "node_modules/@astrojs/compiler": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.1.tgz", + "integrity": "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==", + "license": "MIT" + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", + "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", + "license": "MIT" + }, + "node_modules/@astrojs/language-server": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.16.3.tgz", + "integrity": "sha512-yO5K7RYCMXUfeDlnU6UnmtnoXzpuQc0yhlaCNZ67k1C/MiwwwvMZz+LGa+H35c49w5QBfvtr4w4Zcf5PcH8uYA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@astrojs/compiler": "^2.13.0", + "@astrojs/yaml2ts": "^0.2.2", + "@jridgewell/sourcemap-codec": "^1.5.5", + "@volar/kit": "~2.4.27", + "@volar/language-core": "~2.4.27", + "@volar/language-server": "~2.4.27", + "@volar/language-service": "~2.4.27", + "muggle-string": "^0.4.1", + "tinyglobby": "^0.2.15", + "volar-service-css": "0.0.68", + "volar-service-emmet": "0.0.68", + "volar-service-html": "0.0.68", + "volar-service-prettier": "0.0.68", + "volar-service-typescript": "0.0.68", + "volar-service-typescript-twoslash-queries": "0.0.68", + "volar-service-yaml": "0.0.68", + "vscode-html-languageservice": "^5.6.1", + "vscode-uri": "^3.1.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "astro-ls": "bin/nodeServer.js" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "prettier": "^3.0.0", + "prettier-plugin-astro": ">=0.11.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + } } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "node_modules/@astrojs/markdown-remark": { + "version": "6.3.10", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.10.tgz", + "integrity": "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" + "@astrojs/internal-helpers": "0.7.5", + "@astrojs/prism": "3.3.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.1", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "shiki": "^3.19.0", + "smol-toml": "^1.5.2", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + }, + "node_modules/@astrojs/mdx": { + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.13.tgz", + "integrity": "sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q==", + "license": "MIT", + "dependencies": { + "@astrojs/markdown-remark": "6.3.10", + "@mdx-js/mdx": "^3.1.1", + "acorn": "^8.15.0", + "es-module-lexer": "^1.7.0", + "estree-util-visit": "^2.0.0", + "hast-util-to-html": "^9.0.5", + "piccolore": "^0.1.3", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.1", + "remark-smartypants": "^3.0.2", + "source-map": "^0.7.6", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.3" }, "engines": { - "node": ">=6.9.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + }, + "peerDependencies": { + "astro": "^5.0.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "node_modules/@astrojs/prism": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", + "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", "license": "MIT", + "dependencies": { + "prismjs": "^1.30.0" + }, "engines": { - "node": ">=6.9.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", - "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "node_modules/@astrojs/react": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-4.4.2.tgz", + "integrity": "sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-wrap-function": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@vitejs/plugin-react": "^4.7.0", + "ultrahtml": "^1.6.0", + "vite": "^6.4.1" }, "engines": { - "node": ">=6.9.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", + "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", + "react": "^17.0.2 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "node_modules/@astrojs/react/node_modules/vite": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" }, "engines": { - "node": ">=6.9.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "node_modules/@astrojs/telemetry": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", + "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "ci-info": "^4.2.0", + "debug": "^4.4.0", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "is-docker": "^3.0.0", + "is-wsl": "^3.1.0", + "which-pm-runs": "^1.1.0" }, "engines": { - "node": ">=6.9.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "node_modules/@astrojs/yaml2ts": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.2.tgz", + "integrity": "sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" + "yaml": "^2.5.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "license": "MIT", + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, "engines": { "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", - "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.3", - "@babel/types": "^7.28.2" + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.5" - }, - "bin": { - "parser": "bin/babel-parser.js" + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", - "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.5" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -2658,13 +2917,26 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", - "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -2673,25 +2945,295 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", - "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", + "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -2706,13 +3248,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", - "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2722,14 +3265,15 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz", - "integrity": "sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz", + "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-decorators": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-decorators": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2742,6 +3286,7 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -2754,6 +3299,7 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -2766,6 +3312,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -2778,6 +3325,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" @@ -2790,6 +3338,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -2802,12 +3351,13 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", - "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", + "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2817,12 +3367,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", - "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2832,12 +3383,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2850,6 +3402,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -2862,6 +3415,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -2871,12 +3425,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2889,6 +3444,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -2901,6 +3457,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -2913,6 +3470,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -2925,6 +3483,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -2937,6 +3496,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -2949,6 +3509,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -2961,6 +3522,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -2976,6 +3538,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -2988,12 +3551,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3006,6 +3570,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -3022,6 +3587,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3034,14 +3600,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", - "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -3051,13 +3618,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", - "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { @@ -3071,6 +3639,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3083,12 +3652,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", - "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3098,13 +3668,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", - "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3114,13 +3685,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", - "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.3", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3130,17 +3702,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", - "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.28.4" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3150,13 +3723,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", - "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/template": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3169,6 +3743,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -3182,13 +3757,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", - "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3201,6 +3777,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3213,13 +3790,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3232,6 +3810,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3244,13 +3823,14 @@ } }, "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", - "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -3260,12 +3840,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", - "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3278,6 +3859,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3293,6 +3875,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -3309,6 +3892,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", @@ -3323,12 +3907,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", - "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3341,6 +3926,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3353,12 +3939,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", - "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3371,6 +3958,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3386,6 +3974,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.27.1", @@ -3399,13 +3988,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", - "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3415,15 +4005,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", - "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.5" + "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -3436,6 +4027,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.27.1", @@ -3449,13 +4041,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3468,6 +4061,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3480,12 +4074,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", - "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3495,12 +4090,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", - "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3510,16 +4106,17 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", - "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.4" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3532,6 +4129,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -3545,12 +4143,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", - "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3560,12 +4159,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", - "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -3579,6 +4179,7 @@ "version": "7.27.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3591,13 +4192,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", - "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3607,14 +4209,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", - "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3627,6 +4230,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3671,17 +4275,17 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", - "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3754,12 +4358,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", - "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3769,13 +4374,14 @@ } }, "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", - "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3788,6 +4394,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3800,13 +4407,14 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz", - "integrity": "sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "babel-plugin-polyfill-corejs2": "^0.4.14", "babel-plugin-polyfill-corejs3": "^0.13.0", "babel-plugin-polyfill-regenerator": "^0.6.5", @@ -3823,6 +4431,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3832,6 +4441,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3844,12 +4454,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", - "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -3863,6 +4474,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3878,6 +4490,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3893,6 +4506,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3905,16 +4519,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz", - "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" + "@babel/plugin-syntax-typescript": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3927,6 +4542,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3939,13 +4555,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", - "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3958,6 +4575,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", @@ -3971,13 +4589,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", - "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3987,80 +4606,81 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz", - "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", + "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.27.1", - "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.28.0", - "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.0", - "@babel/plugin-transform-class-properties": "^7.27.1", - "@babel/plugin-transform-class-static-block": "^7.28.3", - "@babel/plugin-transform-classes": "^7.28.3", - "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", - "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.0", - "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", - "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.27.1", - "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.3", - "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "core-js-compat": "^3.43.0", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", "semver": "^6.3.1" }, "engines": { @@ -4070,10 +4690,25 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz", + "integrity": "sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4083,6 +4718,7 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -4118,6 +4754,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -4134,66 +4771,51 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", - "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", - "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -4207,12 +4829,13 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, "license": "MIT" }, "node_modules/@borewit/text-codec": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz", - "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", + "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", "dev": true, "license": "MIT", "funding": { @@ -4237,18 +4860,18 @@ } }, "node_modules/@bundled-es-modules/glob": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/glob/-/glob-11.0.3.tgz", - "integrity": "sha512-rt+1650YhlwRkkj67YMZQj5LXWZiavpHQg8K6jDcZBPbrBIooHbKOQvvxKJsKM80H1oHengEbIymfw3mn4FkUw==", - "license": "ISC", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-x9nR2e1pt8LF0yLPC6yz/aUoiN7qJJwZ1znLxIXCxGyH+8BI+yO/sklBdn1+QbUyWXQBM+CjfZz3IhqtgIoDVg==", + "license": "MIT", "dependencies": { "buffer": "^6.0.3", "events": "^3.3.0", - "glob": "^11.0.3", + "glob": "^13.0.6", "path": "^0.12.7", "stream": "^0.0.3", "string_decoder": "^1.3.0", - "url": "^0.11.3" + "url": "^0.11.4" } }, "node_modules/@bundled-es-modules/glob/node_modules/string_decoder": { @@ -4276,11 +4899,19 @@ } }, "node_modules/@bundled-es-modules/memfs/node_modules/memfs": { - "version": "4.51.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.0.tgz", - "integrity": "sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==", + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.11.tgz", + "integrity": "sha512-/GodtwVeKVIHZKLUSr2ZdOxKBC5hHki4JNCU22DoCGPEHr5o2PD5U721zvESKyWwCfTfavFl9WZYgA13OAYK0g==", "license": "Apache-2.0", "dependencies": { + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-to-fsa": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", @@ -4291,6 +4922,9 @@ "funding": { "type": "github", "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/@capsizecss/unpack": { @@ -4320,6 +4954,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -4332,6 +4967,7 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -4740,9 +5376,10 @@ "license": "MIT" }, "node_modules/@emnapi/core": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", - "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "dev": true, "license": "MIT", "dependencies": { "@emnapi/wasi-threads": "1.1.0", @@ -4750,9 +5387,10 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", - "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "devOptional": true, "license": "MIT", "dependencies": { "tslib": "^2.4.0" @@ -4762,6 +5400,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.4.0" @@ -5184,9 +5823,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5253,6 +5892,13 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -5280,19 +5926,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -5395,6 +6028,13 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -5442,9 +6082,9 @@ "license": "BSD-3-Clause" }, "node_modules/@img/colour": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", - "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", "license": "MIT", "optional": true, "engines": { @@ -5943,14 +6583,14 @@ } }, "node_modules/@inquirer/confirm": { - "version": "5.1.14", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.14.tgz", - "integrity": "sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==", + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.15", - "@inquirer/type": "^3.0.8" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { "node": ">=18" @@ -6167,28 +6807,6 @@ } } }, - "node_modules/@inquirer/prompts/node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, "node_modules/@inquirer/rawlist": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", @@ -6280,76 +6898,12 @@ } }, "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=18" } }, "node_modules/@isaacs/fs-minipass": { @@ -6369,6 +6923,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, "license": "ISC", "dependencies": { "camelcase": "^5.3.1", @@ -6381,10 +6936,21 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -6394,6 +6960,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -6403,10 +6970,25 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -6419,6 +7001,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -6434,6 +7017,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -6446,26 +7030,28 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/core": { @@ -6516,55 +7102,29 @@ } } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/pretty-format": { + "node_modules/@jest/core/node_modules/@jest/console": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment": { + "node_modules/@jest/core/node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -6576,226 +7136,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment-jsdom-abstract": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.2.0.tgz", - "integrity": "sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/jsdom": "^21.1.7", - "@types/node": "*", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "canvas": "^3.0.0", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/environment": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", - "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/fake-timers": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", - "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-message-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/expect": { + "node_modules/@jest/core/node_modules/@jest/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -6805,22 +7150,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { + "node_modules/@jest/core/node_modules/@jest/fake-timers": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -6834,20 +7168,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/globals": { + "node_modules/@jest/core/node_modules/@jest/globals": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -6859,34 +7184,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters": { + "node_modules/@jest/core/node_modules/@jest/reporters": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -6926,10 +7228,11 @@ } } }, - "node_modules/@jest/schemas": { + "node_modules/@jest/core/node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -6938,65 +7241,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/snapshot-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", - "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/@sinclair/typebox": { - "version": "0.34.47", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", - "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/source-map": { + "node_modules/@jest/core/node_modules/@jest/source-map": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -7007,10 +7256,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/test-result": { + "node_modules/@jest/core/node_modules/@jest/test-result": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -7022,10 +7272,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/test-sequencer": { + "node_modules/@jest/core/node_modules/@jest/test-sequencer": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -7037,10 +7288,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/transform": { + "node_modules/@jest/core/node_modules/@jest/transform": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -7063,16 +7315,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, - "node_modules/@jest/types": { + "node_modules/@jest/core/node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -7086,1537 +7333,1625 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "node_modules/@jest/core/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "license": "MIT", + "node_modules/@jest/core/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", - "license": "Apache-2.0", + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10.0" + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jsonjoy.com/buffers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", - "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node_modules/@jest/core/node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/codegen": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", - "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", - "license": "Apache-2.0", "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "tslib": "2" + "@babel/core": "^7.8.0" } }, - "node_modules/@jsonjoy.com/fs-core": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.10.tgz", - "integrity": "sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==", + "node_modules/@jest/core/node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "license": "Apache-2.0", + "license": "BSD-3-Clause", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "thingies": "^2.5.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=8" } }, - "node_modules/@jsonjoy.com/fs-fsa": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.10.tgz", - "integrity": "sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==", + "node_modules/@jest/core/node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, - "license": "Apache-2.0", + "license": "BSD-3-Clause", "dependencies": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "thingies": "^2.5.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=8" } }, - "node_modules/@jsonjoy.com/fs-node": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.10.tgz", - "integrity": "sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==", + "node_modules/@jest/core/node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/fs-print": "4.56.10", - "@jsonjoy.com/fs-snapshot": "4.56.10", - "glob-to-regex.js": "^1.0.0", - "thingies": "^2.5.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@jsonjoy.com/fs-node-builtins": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.10.tgz", - "integrity": "sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==", + "node_modules/@jest/core/node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jsonjoy.com/fs-node-to-fsa": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.10.tgz", - "integrity": "sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==", + "node_modules/@jest/core/node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@jsonjoy.com/fs-fsa": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "tslib": "2" + "@babel/core": "^7.0.0" } }, - "node_modules/@jsonjoy.com/fs-node-utils": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.10.tgz", - "integrity": "sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==", + "node_modules/@jest/core/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.56.10" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=8" } }, - "node_modules/@jsonjoy.com/fs-print": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.10.tgz", - "integrity": "sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==", + "node_modules/@jest/core/node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true, - "license": "Apache-2.0", + "license": "MIT" + }, + "node_modules/@jest/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/core/node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@jsonjoy.com/fs-node-utils": "4.56.10", - "tree-dump": "^1.1.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=10" } }, - "node_modules/@jsonjoy.com/fs-snapshot": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.10.tgz", - "integrity": "sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==", + "node_modules/@jest/core/node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@jsonjoy.com/buffers": "^17.65.0", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/json-pack": "^17.65.0", - "@jsonjoy.com/util": "^17.65.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", - "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", + "node_modules/@jest/core/node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/buffers": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", - "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", - "dev": true, - "license": "Apache-2.0", "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "tslib": "2" + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", - "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "node_modules/@jest/core/node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", - "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", + "node_modules/@jest/core/node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@jsonjoy.com/base64": "17.67.0", - "@jsonjoy.com/buffers": "17.67.0", - "@jsonjoy.com/codegen": "17.67.0", - "@jsonjoy.com/json-pointer": "17.67.0", - "@jsonjoy.com/util": "17.67.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0", - "tree-dump": "^1.1.0" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", - "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "node_modules/@jest/core/node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@jsonjoy.com/util": "17.67.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", - "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "node_modules/@jest/core/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@jsonjoy.com/buffers": "17.67.0", - "@jsonjoy.com/codegen": "17.67.0" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "peerDependencies": { - "tslib": "2" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", - "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", - "license": "Apache-2.0", + "node_modules/@jest/core/node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", "dependencies": { - "@jsonjoy.com/base64": "^1.1.2", - "@jsonjoy.com/buffers": "^1.2.0", - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/json-pointer": "^1.0.2", - "@jsonjoy.com/util": "^1.9.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0", - "tree-dump": "^1.1.0" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jsonjoy.com/json-pointer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", - "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", - "license": "Apache-2.0", + "node_modules/@jest/core/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", "dependencies": { - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/util": "^1.9.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jsonjoy.com/util": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", - "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", - "license": "Apache-2.0", + "node_modules/@jest/core/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", "dependencies": { - "@jsonjoy.com/buffers": "^1.0.0", - "@jsonjoy.com/codegen": "^1.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "node_modules/@jest/core/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@listr2/prompt-adapter-inquirer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-3.0.5.tgz", - "integrity": "sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==", + "node_modules/@jest/core/node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/type": "^3.0.8" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@inquirer/prompts": ">= 3 < 8", - "listr2": "9.0.5" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.2.tgz", - "integrity": "sha512-NK80WwDoODyPaSazKbzd3NEJ3ygePrkERilZshxBViBARNz21rmediktGHExoj9n5t9+ChlgLlxecdFKLCuCKg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.2.tgz", - "integrity": "sha512-zevaowQNmrp3U7Fz1s9pls5aIgpKRsKb3dZWDINtLiozh3jZI9fBrI19lYYBxqdyiIyNdlyiidPnwPShj4aK+w==", - "cpu": [ - "x64" - ], + "node_modules/@jest/core/node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@lmdb/lmdb-linux-arm": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.2.tgz", - "integrity": "sha512-OmHCULY17rkx/RoCoXlzU7LyR8xqrksgdYWwtYa14l/sseezZ8seKWXcogHcjulBddER5NnEFV4L/Jtr2nyxeg==", - "cpu": [ - "arm" - ], + "node_modules/@jest/core/node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.2.tgz", - "integrity": "sha512-ZBEfbNZdkneebvZs98Lq30jMY8V9IJzckVeigGivV7nTHJc+89Ctomp1kAIWKlwIG0ovCDrFI448GzFPORANYg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@lmdb/lmdb-linux-x64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.2.tgz", - "integrity": "sha512-vL9nM17C77lohPYE4YaAQvfZCSVJSryE4fXdi8M7uWPBnU+9DJabgKVAeyDb84ZM2vcFseoBE4/AagVtJeRE7g==", - "cpu": [ - "x64" - ], + "node_modules/@jest/core/node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@lmdb/lmdb-win32-arm64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.2.tgz", - "integrity": "sha512-SXWjdBfNDze4ZPeLtYIzsIeDJDJ/SdsA0pEXcUBayUIMO0FQBHfVZZyHXQjjHr4cvOAzANBgIiqaXRwfMhzmLw==", - "cpu": [ - "arm64" - ], + "node_modules/@jest/core/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@lmdb/lmdb-win32-x64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.2.tgz", - "integrity": "sha512-IY+r3bxKW6Q6sIPiMC0L533DEfRJSXibjSI3Ft/w9Q8KQBNqEIvUFXt+09wV8S5BRk0a8uSF19YWxuRwEfI90g==", - "cpu": [ - "x64" - ], + "node_modules/@jest/core/node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@mdx-js/mdx": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", - "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", - "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdx": "^2.0.0", - "acorn": "^8.0.0", - "collapse-white-space": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-util-scope": "^1.0.0", - "estree-walker": "^3.0.0", - "hast-util-to-jsx-runtime": "^2.0.0", - "markdown-extensions": "^2.0.0", - "recma-build-jsx": "^1.0.0", - "recma-jsx": "^1.0.0", - "recma-stringify": "^1.0.0", - "rehype-recma": "^1.0.0", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "source-map": "^0.7.0", - "unified": "^11.0.0", - "unist-util-position-from-estree": "^2.0.0", - "unist-util-stringify-position": "^4.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@mdx-js/mdx/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "node_modules/@jest/core/node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@microsoft/api-extractor": { - "version": "7.57.6", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.6.tgz", - "integrity": "sha512-0rFv/D8Grzw1Mjs2+8NGUR+o4h9LVm5zKRtMeWnpdB5IMJF4TeHCL1zR5LMCIudkOvyvjbhMG5Wjs0B5nqsrRQ==", + "node_modules/@jest/core/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/api-extractor-model": "7.33.4", - "@microsoft/tsdoc": "~0.16.0", - "@microsoft/tsdoc-config": "~0.18.1", - "@rushstack/node-core-library": "5.20.3", - "@rushstack/rig-package": "0.7.2", - "@rushstack/terminal": "0.22.3", - "@rushstack/ts-command-line": "5.3.3", - "diff": "~8.0.2", - "lodash": "~4.17.23", - "minimatch": "10.2.1", - "resolve": "~1.22.1", - "semver": "~7.5.4", - "source-map": "~0.6.1", - "typescript": "5.8.2" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, - "bin": { - "api-extractor": "bin/api-extractor" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@microsoft/api-extractor-model": { - "version": "7.33.4", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.4.tgz", - "integrity": "sha512-u1LTaNTikZAQ9uK6KG1Ms7nvNedsnODnspq/gH2dcyETWvH4hVNGNDvRAEutH66kAmxA4/necElqGNs1FggC8w==", + "node_modules/@jest/core/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/tsdoc": "~0.16.0", - "@microsoft/tsdoc-config": "~0.18.1", - "@rushstack/node-core-library": "5.20.3" + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@microsoft/api-extractor/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "node_modules/@jest/core/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { - "node": "18 || 20 || >=22" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@microsoft/api-extractor/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@microsoft/api-extractor/node_modules/diff": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", - "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", + "node_modules/@jest/core/node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/core/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@jest/core/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { - "node": ">=0.3.1" + "node": ">=0.10.0" } }, - "node_modules/@microsoft/api-extractor/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@jest/core/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/@microsoft/api-extractor/node_modules/minimatch": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", - "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", + "node_modules/@jest/core/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@microsoft/api-extractor/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@jest/core/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@microsoft/api-extractor/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@jest/core/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@microsoft/api-extractor/node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "node": ">=10" }, - "engines": { - "node": ">=14.17" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@microsoft/api-extractor/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/@microsoft/tsdoc": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", - "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@microsoft/tsdoc-config": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.1.tgz", - "integrity": "sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==", + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", "dev": true, "license": "MIT", - "dependencies": { - "@microsoft/tsdoc": "0.16.0", - "ajv": "~8.18.0", - "jju": "~1.4.0", - "resolve": "~1.22.2" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", - "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", + "node_modules/@jest/environment-jsdom-abstract": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.2.0.tgz", + "integrity": "sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==", "dev": true, "license": "MIT", "dependencies": { - "@hono/node-server": "^1.19.9", - "ajv": "^8.17.1", - "ajv-formats": "^3.0.1", - "content-type": "^1.0.5", - "cors": "^2.8.5", - "cross-spawn": "^7.0.5", - "eventsource": "^3.0.2", - "eventsource-parser": "^3.0.0", - "express": "^5.2.1", - "express-rate-limit": "^8.2.1", - "hono": "^4.11.4", - "jose": "^6.1.3", - "json-schema-typed": "^8.0.2", - "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.1" + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/jsdom": "^21.1.7", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">=18" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@cfworker/json-schema": "^4.1.1", - "zod": "^3.25 || ^4.0" + "canvas": "^3.0.0", + "jsdom": "*" }, "peerDependenciesMeta": { - "@cfworker/json-schema": { + "canvas": { "optional": true - }, - "zod": { - "optional": false } } }, - "node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.21.6.tgz", - "integrity": "sha512-lJMmdhD4VKVkeg8RHb+Jwe6Ou9zKVgjtb1inEURDG/sSS2ksdZA8pVKLYbRPRbdmjr193Y8gJfqFbI2dqoyc/g==", + "node_modules/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.21.6", - "@types/semver": "7.5.8", - "semver": "7.6.3" - } - }, - "node_modules/@module-federation/bridge-react-webpack-plugin/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "expect": "30.2.0", + "jest-snapshot": "30.2.0" }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/cli": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-0.21.6.tgz", - "integrity": "sha512-qNojnlc8pTyKtK7ww3i/ujLrgWwgXqnD5DcDPsjADVIpu7STaoaVQ0G5GJ7WWS/ajXw6EyIAAGW/AMFh4XUxsQ==", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "0.21.6", - "@module-federation/sdk": "0.21.6", - "chalk": "3.0.0", - "commander": "11.1.0", - "jiti": "2.4.2" - }, - "bin": { - "mf": "bin/mf.js" + "jest-get-type": "^29.6.3" }, "engines": { - "node": ">=16.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@module-federation/cli/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "node_modules/@jest/expect/node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/get-type": "30.1.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/data-prefetch": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.21.6.tgz", - "integrity": "sha512-8HD7ZhtWZ9vl6i3wA7M8cEeCRdtvxt09SbMTfqIPm+5eb/V4ijb8zGTYSRhNDb5RCB+BAixaPiZOWKXJ63/rVw==", + "node_modules/@jest/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "@module-federation/runtime": "0.21.6", - "@module-federation/sdk": "0.21.6", - "fs-extra": "9.1.0" + "engines": { + "node": ">=10" }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@module-federation/dts-plugin": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.21.6.tgz", - "integrity": "sha512-YIsDk8/7QZIWn0I1TAYULniMsbyi2LgKTi9OInzVmZkwMC6644x/ratTWBOUDbdY1Co+feNkoYeot1qIWv2L7w==", + "node_modules/@jest/expect/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.21.6", - "@module-federation/managers": "0.21.6", - "@module-federation/sdk": "0.21.6", - "@module-federation/third-party-dts-extractor": "0.21.6", - "adm-zip": "^0.5.10", - "ansi-colors": "^4.1.3", - "axios": "^1.12.0", - "chalk": "3.0.0", - "fs-extra": "9.1.0", - "isomorphic-ws": "5.0.0", - "koa": "3.0.3", - "lodash.clonedeepwith": "4.5.0", - "log4js": "6.9.1", - "node-schedule": "2.1.1", - "rambda": "^9.1.0", - "ws": "8.18.0" - }, - "peerDependencies": { - "typescript": "^4.9.0 || ^5.0.0", - "vue-tsc": ">=1.0.24" + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, - "peerDependenciesMeta": { - "vue-tsc": { - "optional": true - } + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/dts-plugin/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "node_modules/@jest/expect/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/enhanced": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.21.6.tgz", - "integrity": "sha512-8PFQxtmXc6ukBC4CqGIoc96M2Ly9WVwCPu4Ffvt+K/SB6rGbeFeZoYAwREV1zGNMJ5v5ly6+AHIEOBxNuSnzSg==", + "node_modules/@jest/expect/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.21.6", - "@module-federation/cli": "0.21.6", - "@module-federation/data-prefetch": "0.21.6", - "@module-federation/dts-plugin": "0.21.6", - "@module-federation/error-codes": "0.21.6", - "@module-federation/inject-external-runtime-core-plugin": "0.21.6", - "@module-federation/managers": "0.21.6", - "@module-federation/manifest": "0.21.6", - "@module-federation/rspack": "0.21.6", - "@module-federation/runtime-tools": "0.21.6", - "@module-federation/sdk": "0.21.6", - "btoa": "^1.2.1", - "schema-utils": "^4.3.0", - "upath": "2.0.1" - }, - "bin": { - "mf": "bin/mf.js" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, - "peerDependencies": { - "typescript": "^4.9.0 || ^5.0.0", - "vue-tsc": ">=1.0.24", - "webpack": "^5.0.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "vue-tsc": { - "optional": true - }, - "webpack": { - "optional": true - } + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/error-codes": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.21.6.tgz", - "integrity": "sha512-MLJUCQ05KnoVl8xd6xs9a5g2/8U+eWmVxg7xiBMeR0+7OjdWUbHwcwgVFatRIwSZvFgKHfWEiI7wsU1q1XbTRQ==", + "node_modules/@jest/expect/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, - "node_modules/@module-federation/inject-external-runtime-core-plugin": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.21.6.tgz", - "integrity": "sha512-DJQne7NQ988AVi3QB8byn12FkNb+C2lBeU1NRf8/WbL0gmHsr6kW8hiEJCm8LYaURwtsQqtsEV7i+8+51qjSmQ==", + "node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", "dev": true, "license": "MIT", - "peerDependencies": { - "@module-federation/runtime-tools": "0.21.6" + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/managers": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.21.6.tgz", - "integrity": "sha512-BeV6m2/7kF5MDVz9JJI5T8h8lMosnXkH2bOxxFewcra7ZjvDOgQu7WIio0mgk5l1zjNPvnEVKhnhrenEdcCiWg==", + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", "dev": true, "license": "MIT", - "dependencies": { - "@module-federation/sdk": "0.21.6", - "find-pkg": "2.0.0", - "fs-extra": "9.1.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/manifest": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.21.6.tgz", - "integrity": "sha512-yg93+I1qjRs5B5hOSvjbjmIoI2z3th8/yst9sfwvx4UDOG1acsE3HHMyPN0GdoIGwplC/KAnU5NmUz4tREUTGQ==", + "node_modules/@jest/globals": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", + "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "0.21.6", - "@module-federation/managers": "0.21.6", - "@module-federation/sdk": "0.21.6", - "chalk": "3.0.0", - "find-pkg": "2.0.0" + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/types": "30.2.0", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/manifest/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/node": "*", + "jest-regex-util": "30.0.1" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/node": { - "version": "2.7.32", - "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.32.tgz", - "integrity": "sha512-hUj5v2GGwpNzl2gaJS4AyzCYRzJBhN8875A+ucKF9tq3jaQb5zpy3izYMISqqbN2q9a7jz3nEUgwAh3pjri+rQ==", + "node_modules/@jest/reporters": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", + "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/enhanced": "2.0.1", - "@module-federation/runtime": "2.0.1", - "@module-federation/sdk": "2.0.1", - "btoa": "1.2.1", - "encoding": "^0.1.13", - "node-fetch": "2.7.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "webpack": "^5.40.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "webpack": { + "node-notifier": { "optional": true } } }, - "node_modules/@module-federation/node/node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-2.0.1.tgz", - "integrity": "sha512-D7LMW5EMAJShOMR1aZDAJ6s+MdsYDHaQyJADLQ3LaY0sne/BkVqkPikUwcO1IwOwKbXjYsDlQVOEvk9wZVRFhA==", + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "2.0.1", - "@types/semver": "7.5.8", - "semver": "7.6.3" + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/cli": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-2.0.1.tgz", - "integrity": "sha512-2SL5Y8iODNX10y9T3CBLhHjSXo4afnA1BK82m4sNfZebuVO+o34bxewqwod9xfWq9xhTZmOSFZ+n+lgTKRv+CQ==", + "node_modules/@jest/snapshot-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", + "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "2.0.1", - "@module-federation/sdk": "2.0.1", - "chalk": "3.0.0", - "commander": "11.1.0", - "jiti": "2.4.2" - }, - "bin": { - "mf": "bin/mf.js" + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" }, "engines": { - "node": ">=16.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/data-prefetch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-2.0.1.tgz", - "integrity": "sha512-Kq0P1OABGt6QAvs6TaE/zY9Ut9Y/oJFrzoSF3eWaCYbUAr2KD2SpTyMsPz4ssBzjeKXTgimugh6tHHd6mpCBIQ==", + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "2.0.1", - "@module-federation/sdk": "2.0.1", - "fs-extra": "9.1.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/dts-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-2.0.1.tgz", - "integrity": "sha512-PLneTsf1fQS5/RTBedtLAAmCPRdMfIlhfJkOa8QH3WDJaQsqm8Wb3r2cTUBf2aNj/bP3aH/y6Hs9JFB/4x0l5g==", + "node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.0.1", - "@module-federation/managers": "2.0.1", - "@module-federation/sdk": "2.0.1", - "@module-federation/third-party-dts-extractor": "2.0.1", - "adm-zip": "^0.5.10", - "ansi-colors": "^4.1.3", - "axios": "^1.12.0", - "chalk": "3.0.0", - "fs-extra": "9.1.0", - "isomorphic-ws": "5.0.0", - "koa": "3.0.3", - "lodash.clonedeepwith": "4.5.0", - "log4js": "6.9.1", - "node-schedule": "2.1.1", - "rambda": "^9.1.0", - "ws": "8.18.0" - }, - "peerDependencies": { - "typescript": "^4.9.0 || ^5.0.0", - "vue-tsc": ">=1.0.24" + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, - "peerDependenciesMeta": { - "vue-tsc": { - "optional": true - } + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/enhanced": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-2.0.1.tgz", - "integrity": "sha512-EZIARQ/8ScoTP6PV8+E4SsmMYWK4ErrikZJ0G/FX8wvK8mCtdoKatFtvDN9++P6Nl78kN9zHYgAV4AHKdBVjfQ==", + "node_modules/@jest/test-sequencer": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", + "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "2.0.1", - "@module-federation/cli": "2.0.1", - "@module-federation/data-prefetch": "2.0.1", - "@module-federation/dts-plugin": "2.0.1", - "@module-federation/error-codes": "2.0.1", - "@module-federation/inject-external-runtime-core-plugin": "2.0.1", - "@module-federation/managers": "2.0.1", - "@module-federation/manifest": "2.0.1", - "@module-federation/rspack": "2.0.1", - "@module-federation/runtime-tools": "2.0.1", - "@module-federation/sdk": "2.0.1", - "btoa": "^1.2.1", - "schema-utils": "^4.3.0", - "upath": "2.0.1" - }, - "bin": { - "mf": "bin/mf.js" + "@jest/test-result": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "slash": "^3.0.0" }, - "peerDependencies": { - "typescript": "^4.9.0 || ^5.0.0", - "vue-tsc": ">=1.0.24", - "webpack": "^5.0.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "vue-tsc": { - "optional": true - }, - "webpack": { - "optional": true - } + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/error-codes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-2.0.1.tgz", - "integrity": "sha512-2bJF/ft+qL9L6Zvq2t/G9/f/0wFL73cM8/NJ04uyYz9BjIgvx28K5qu8/6+IwgEEKATG7vOhBBVj6wH3S+5ASA==", + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, - "node_modules/@module-federation/node/node_modules/@module-federation/inject-external-runtime-core-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-2.0.1.tgz", - "integrity": "sha512-oAA7G+4GCHM+WRYfscR/x4GwCyM9CEqfdD9/x2L6y8mtLWK9anRLKTocsI759AvzXsbT1m3EQ5ki1O6wlwDu3g==", + "node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, "license": "MIT", - "peerDependencies": { - "@module-federation/runtime-tools": "2.0.1" + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/managers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-2.0.1.tgz", - "integrity": "sha512-KR01lSlcYRQ9C6hW2a8CQQtAE0LvfTLgtV/6ZNUTagw8sRfeDln+ggrZsYilKu9zl0i8RPDgpv/kS60o4lcxCQ==", - "dev": true, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "license": "MIT", "dependencies": { - "@module-federation/sdk": "2.0.1", - "find-pkg": "2.0.0", - "fs-extra": "9.1.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/manifest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-2.0.1.tgz", - "integrity": "sha512-p8nYGjHWp17MsYdW/Vv0ogBDiTTsI1PHWPQbvVIqLQXDqwiesaRSRR1zziECXQoEL8lV5Bs+uSkcaJGhea9P+A==", - "dev": true, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "2.0.1", - "@module-federation/managers": "2.0.1", - "@module-federation/sdk": "2.0.1", - "chalk": "3.0.0", - "find-pkg": "2.0.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/rspack": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-2.0.1.tgz", - "integrity": "sha512-SAlNE8iclFmzrKtx3/C2GivXYx6nPzx4MgQV01QG/a4LpnLbwlxzdZu3rqQ2swp4NNWT/t/GT7Y+7gfhyVa7mg==", - "dev": true, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "license": "MIT", - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "2.0.1", - "@module-federation/dts-plugin": "2.0.1", - "@module-federation/inject-external-runtime-core-plugin": "2.0.1", - "@module-federation/managers": "2.0.1", - "@module-federation/manifest": "2.0.1", - "@module-federation/runtime-tools": "2.0.1", - "@module-federation/sdk": "2.0.1", - "btoa": "1.2.1" - }, - "peerDependencies": { - "@rspack/core": "^0.7.0 || ^1.0.0 || ^2.0.0-0", - "typescript": "^4.9.0 || ^5.0.0", - "vue-tsc": ">=1.0.24" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "vue-tsc": { - "optional": true - } + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/runtime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.0.1.tgz", - "integrity": "sha512-UQ72P5Oo40dS6vdhHetwTtIsbGciEr+bjoYvDgh1WLPfFlTYd8zo9cLfqaf3juuPfV3cMVARAVPmh16lQYpUGA==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.0.1", - "@module-federation/runtime-core": "2.0.1", - "@module-federation/sdk": "2.0.1" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/runtime-core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-2.0.1.tgz", - "integrity": "sha512-gOuCPSHoQGUGwlxfSTMInFX+QvLxdEWegGGMiLdU5vqbXuva4E9M+kXBBO7/0MkcBPMmVs0wOJGm0XOLeV2f1Q==", - "dev": true, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.0.1", - "@module-federation/sdk": "2.0.1" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/runtime-tools": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-2.0.1.tgz", - "integrity": "sha512-AStdwBtsGB3jIfDg9oP+KyVPsimdaeHsP855gqCxDp1hi2+GKjlZWZx9ThkS8NytVSXSUysxqoUL1ivDoKgcCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/runtime": "2.0.1", - "@module-federation/webpack-bundler-runtime": "2.0.1" + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/sdk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.0.1.tgz", - "integrity": "sha512-32PwudojGjog51cwpTali7D6ud82oVgsyvOx9JjAzhvXBX96YI4mRsursuWcthDxmigJP9ZvUTXDuRUEDh1OQA==", - "dev": true, - "license": "MIT" + "node_modules/@jsonjoy.com/buffers": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } }, - "node_modules/@module-federation/node/node_modules/@module-federation/third-party-dts-extractor": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.0.1.tgz", - "integrity": "sha512-neKSr6FNUeGRh+YR57l/QZUzPytJXuJx+babF7j5iGJG3FP+kfizr6QD0hgVis5KEoXMVbQ8yyvG0slERizeyw==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.11.tgz", + "integrity": "sha512-wThHjzUp01ImIjfCwhs+UnFkeGPFAymwLEkOtenHewaKe2pTP12p6r1UuwikA9NEvNf9Vlck92r8fb8n/MWM5w==", + "license": "Apache-2.0", "dependencies": { - "find-pkg": "2.0.0", - "fs-extra": "9.1.0", - "resolve": "1.22.8" + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/node/node_modules/@module-federation/webpack-bundler-runtime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-2.0.1.tgz", - "integrity": "sha512-u1NId3SF4lHDTmD2CHFEszulmXmIq1TGw9JYvnLx5rKJL7xt3aNxcb1GvkaYbRNVBXhSMjJ75E5LsQlZzyBx9A==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.11.tgz", + "integrity": "sha512-ZYlF3XbMayyp97xEN8ZvYutU99PCHjM64mMZvnCseXkCJXJDVLAwlF8Q/7q/xiWQRsv3pQBj1WXHd9eEyYcaCQ==", + "license": "Apache-2.0", "dependencies": { - "@module-federation/runtime": "2.0.1", - "@module-federation/sdk": "2.0.1" + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/node/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.11.tgz", + "integrity": "sha512-D65YrnP6wRuZyEWoSFnBJSr5zARVpVBGctnhie4rCsMuGXNzX7IHKaOt85/Aj7SSoG1N2+/xlNjWmkLvZ2H3Tg==", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" }, "engines": { - "node": ">=8" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/node/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.11.tgz", + "integrity": "sha512-CNmt3a0zMCIhniFLXtzPWuUxXFU+U+2VyQiIrgt/rRVeEJNrMQUABaRbVxR0Ouw1LyR9RjaEkPM6nYpED+y43A==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.11.tgz", + "integrity": "sha512-5OzGdvJDgZVo+xXWEYo72u81zpOWlxlbG4d4nL+hSiW+LKlua/dldNgPrpWxtvhgyntmdFQad2UTxFyGjJAGhA==", + "license": "Apache-2.0", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">=10.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/node/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.11.tgz", + "integrity": "sha512-JADOZFDA3wRfsuxkT0+MYc4F9hJO2PYDaY66kRTG6NqGX3+bqmKu66YFYAbII/tEmQWPZeHoClUB23rtQM9UPg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.56.11" }, "engines": { - "node": ">=10" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/rspack": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.21.6.tgz", - "integrity": "sha512-SB+z1P+Bqe3R6geZje9dp0xpspX6uash+zO77nodmUy8PTTBlkL7800Cq2FMLKUdoTZHJTBVXf0K6CqQWSlItg==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.11.tgz", + "integrity": "sha512-rnaKRgCRIn8JGTjxhS0JPE38YM3Pj/H7SW4/tglhIPbfKEkky7dpPayNKV2qy25SZSL15oFVgH/62dMZ/z7cyA==", + "license": "Apache-2.0", "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.21.6", - "@module-federation/dts-plugin": "0.21.6", - "@module-federation/inject-external-runtime-core-plugin": "0.21.6", - "@module-federation/managers": "0.21.6", - "@module-federation/manifest": "0.21.6", - "@module-federation/runtime-tools": "0.21.6", - "@module-federation/sdk": "0.21.6", - "btoa": "1.2.1" + "@jsonjoy.com/fs-node-utils": "4.56.11", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "@rspack/core": ">=0.7", - "typescript": "^4.9.0 || ^5.0.0", - "vue-tsc": ">=1.0.24" + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.11.tgz", + "integrity": "sha512-IIldPX+cIRQuUol9fQzSS3hqyECxVpYMJQMqdU3dCKZFRzEl1rkIkw4P6y7Oh493sI7YdxZlKr/yWdzEWZ1wGQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "vue-tsc": { - "optional": true - } + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/runtime": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.21.6.tgz", - "integrity": "sha512-+caXwaQqwTNh+CQqyb4mZmXq7iEemRDrTZQGD+zyeH454JAYnJ3s/3oDFizdH6245pk+NiqDyOOkHzzFQorKhQ==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", + "license": "Apache-2.0", "dependencies": { - "@module-federation/error-codes": "0.21.6", - "@module-federation/runtime-core": "0.21.6", - "@module-federation/sdk": "0.21.6" + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/runtime-core": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.21.6.tgz", - "integrity": "sha512-5Hd1Y5qp5lU/aTiK66lidMlM/4ji2gr3EXAtJdreJzkY+bKcI5+21GRcliZ4RAkICmvdxQU5PHPL71XmNc7Lsw==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "license": "Apache-2.0", "dependencies": { - "@module-federation/error-codes": "0.21.6", - "@module-federation/sdk": "0.21.6" + "@jsonjoy.com/util": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/runtime-tools": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.21.6.tgz", - "integrity": "sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "license": "Apache-2.0", "dependencies": { - "@module-federation/runtime": "0.21.6", - "@module-federation/webpack-bundler-runtime": "0.21.6" + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/sdk": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.21.6.tgz", - "integrity": "sha512-x6hARETb8iqHVhEsQBysuWpznNZViUh84qV2yE7AD+g7uIzHKiYdoWqj10posbo5XKf/147qgWDzKZoKoEP2dw==", - "dev": true, - "license": "MIT" + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } }, - "node_modules/@module-federation/third-party-dts-extractor": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.21.6.tgz", - "integrity": "sha512-Il6x4hLsvCgZNk1DFwuMBNeoxD1BsZ5AW2BI/nUgu0k5FiAvfcz1OFawRFEHtaM/kVrCsymMOW7pCao90DaX3A==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", "dependencies": { - "find-pkg": "2.0.0", - "fs-extra": "9.1.0", - "resolve": "1.22.8" + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/third-party-dts-extractor/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">=10.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.21.6.tgz", - "integrity": "sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ==", + "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@listr2/prompt-adapter-inquirer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-3.0.5.tgz", + "integrity": "sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.21.6", - "@module-federation/sdk": "0.21.6" + "@inquirer/type": "^3.0.8" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@inquirer/prompts": ">= 3 < 8", + "listr2": "9.0.5" } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", - "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.4.tgz", + "integrity": "sha512-XaKL705gDWd6XVls3ATDj13ZdML/LqSIxwgnYpG8xTzH2ifArx8fMMDdvqGE/Emd+W6R90W2fveZcJ0AyS8Y0w==", "cpu": [ "arm64" ], @@ -8627,10 +8962,10 @@ "darwin" ] }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", - "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.4.tgz", + "integrity": "sha512-GPHGEVcwJlkD01GmIr7B4kvbIcUDS2+kBadVEd7lU4can1RZaZQLDDBJRrrNfS2Kavvl0VLI/cMv7UASAXGrww==", "cpu": [ "x64" ], @@ -8641,10 +8976,10 @@ "darwin" ] }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", - "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.4.tgz", + "integrity": "sha512-cmev5/dZr5ACKri9f6GU6lZCXTjMhV72xujlbOhFCgFXrt4W0TxGsmY8kA1BITvH60JBKE50cSxsiulybAbrrw==", "cpu": [ "arm" ], @@ -8655,10 +8990,10 @@ "linux" ] }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", - "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.4.tgz", + "integrity": "sha512-mALqr7DE42HsiwVTKpQWxacjHoJk+e9p00RWIJqTACh/hpucxp/0lK/XMh5XzWnU/TDCZLukq1+vNqnNumTP/Q==", "cpu": [ "arm64" ], @@ -8669,10 +9004,10 @@ "linux" ] }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", - "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.4.tgz", + "integrity": "sha512-QjLs8OcmCNcraAcLoZyFlo0atzBJniQLLwhtR+ymQqS5kLYpV5RqwriL87BW+ZiR9ZiGgZx3evrz5vnWPtJ1fQ==", "cpu": [ "x64" ], @@ -8683,12 +9018,12 @@ "linux" ] }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", - "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.4.tgz", + "integrity": "sha512-tr/pwHDlZ33forLGAr0tI04cRmP4SgF93yHbb+2zvZiDEyln5yMHhbKDySxY66aUOkhvBvTuHq9q/3YmTj6ZHQ==", "cpu": [ - "x64" + "arm64" ], "dev": true, "license": "MIT", @@ -8697,5178 +9032,5789 @@ "win32" ] }, - "node_modules/@napi-rs/nice": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz", - "integrity": "sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@napi-rs/nice-android-arm-eabi": "1.1.1", - "@napi-rs/nice-android-arm64": "1.1.1", - "@napi-rs/nice-darwin-arm64": "1.1.1", - "@napi-rs/nice-darwin-x64": "1.1.1", - "@napi-rs/nice-freebsd-x64": "1.1.1", - "@napi-rs/nice-linux-arm-gnueabihf": "1.1.1", - "@napi-rs/nice-linux-arm64-gnu": "1.1.1", - "@napi-rs/nice-linux-arm64-musl": "1.1.1", - "@napi-rs/nice-linux-ppc64-gnu": "1.1.1", - "@napi-rs/nice-linux-riscv64-gnu": "1.1.1", - "@napi-rs/nice-linux-s390x-gnu": "1.1.1", - "@napi-rs/nice-linux-x64-gnu": "1.1.1", - "@napi-rs/nice-linux-x64-musl": "1.1.1", - "@napi-rs/nice-openharmony-arm64": "1.1.1", - "@napi-rs/nice-win32-arm64-msvc": "1.1.1", - "@napi-rs/nice-win32-ia32-msvc": "1.1.1", - "@napi-rs/nice-win32-x64-msvc": "1.1.1" - } - }, - "node_modules/@napi-rs/nice-android-arm-eabi": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.1.1.tgz", - "integrity": "sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==", + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.4.tgz", + "integrity": "sha512-KRzfocJzB/mgoTCqnMawuLSKheHRVTqWfSmouIgYpFs6Hx4zvZSvsZKSCEb5gHmICy7qsx9l06jk3MFTtiFVAQ==", "cpu": [ - "arm" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } + "win32" + ] }, - "node_modules/@napi-rs/nice-android-arm64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.1.1.tgz", - "integrity": "sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/nice-darwin-arm64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.1.1.tgz", - "integrity": "sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==", - "cpu": [ - "arm64" - ], + "node_modules/@microsoft/api-extractor": { + "version": "7.57.6", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.6.tgz", + "integrity": "sha512-0rFv/D8Grzw1Mjs2+8NGUR+o4h9LVm5zKRtMeWnpdB5IMJF4TeHCL1zR5LMCIudkOvyvjbhMG5Wjs0B5nqsrRQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@microsoft/api-extractor-model": "7.33.4", + "@microsoft/tsdoc": "~0.16.0", + "@microsoft/tsdoc-config": "~0.18.1", + "@rushstack/node-core-library": "5.20.3", + "@rushstack/rig-package": "0.7.2", + "@rushstack/terminal": "0.22.3", + "@rushstack/ts-command-line": "5.3.3", + "diff": "~8.0.2", + "lodash": "~4.17.23", + "minimatch": "10.2.1", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "5.8.2" + }, + "bin": { + "api-extractor": "bin/api-extractor" } }, - "node_modules/@napi-rs/nice-darwin-x64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.1.1.tgz", - "integrity": "sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==", - "cpu": [ - "x64" - ], + "node_modules/@microsoft/api-extractor-model": { + "version": "7.33.4", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.4.tgz", + "integrity": "sha512-u1LTaNTikZAQ9uK6KG1Ms7nvNedsnODnspq/gH2dcyETWvH4hVNGNDvRAEutH66kAmxA4/necElqGNs1FggC8w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@microsoft/tsdoc": "~0.16.0", + "@microsoft/tsdoc-config": "~0.18.1", + "@rushstack/node-core-library": "5.20.3" } }, - "node_modules/@napi-rs/nice-freebsd-x64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.1.1.tgz", - "integrity": "sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==", - "cpu": [ - "x64" - ], + "node_modules/@microsoft/api-extractor/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.1.1.tgz", - "integrity": "sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==", - "cpu": [ - "arm" - ], + "node_modules/@microsoft/api-extractor/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/@napi-rs/nice-linux-arm64-gnu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.1.1.tgz", - "integrity": "sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==", - "cpu": [ - "arm64" - ], + "node_modules/@microsoft/api-extractor/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "BSD-3-Clause", "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/@napi-rs/nice-linux-arm64-musl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.1.1.tgz", - "integrity": "sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==", - "cpu": [ - "arm64" - ], + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">= 10" + "node": ">=14.17" } }, - "node_modules/@napi-rs/nice-linux-ppc64-gnu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.1.1.tgz", - "integrity": "sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==", - "cpu": [ - "ppc64" - ], + "node_modules/@microsoft/api-extractor/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } + "license": "ISC" }, - "node_modules/@napi-rs/nice-linux-riscv64-gnu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.1.1.tgz", - "integrity": "sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==", - "cpu": [ - "riscv64" - ], + "node_modules/@microsoft/tsdoc": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", + "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } + "license": "MIT" }, - "node_modules/@napi-rs/nice-linux-s390x-gnu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.1.1.tgz", - "integrity": "sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==", - "cpu": [ - "s390x" - ], + "node_modules/@microsoft/tsdoc-config": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.1.tgz", + "integrity": "sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@microsoft/tsdoc": "0.16.0", + "ajv": "~8.18.0", + "jju": "~1.4.0", + "resolve": "~1.22.2" } }, - "node_modules/@napi-rs/nice-linux-x64-gnu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.1.1.tgz", - "integrity": "sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==", - "cpu": [ - "x64" - ], + "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@napi-rs/nice-linux-x64-musl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.1.1.tgz", - "integrity": "sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==", - "cpu": [ - "x64" - ], + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", + "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } } }, - "node_modules/@napi-rs/nice-openharmony-arm64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-openharmony-arm64/-/nice-openharmony-arm64-1.1.1.tgz", - "integrity": "sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==", - "cpu": [ - "arm64" - ], + "node_modules/@module-federation/bridge-react-webpack-plugin": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.21.6.tgz", + "integrity": "sha512-lJMmdhD4VKVkeg8RHb+Jwe6Ou9zKVgjtb1inEURDG/sSS2ksdZA8pVKLYbRPRbdmjr193Y8gJfqFbI2dqoyc/g==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@module-federation/sdk": "0.21.6", + "@types/semver": "7.5.8", + "semver": "7.6.3" } }, - "node_modules/@napi-rs/nice-win32-arm64-msvc": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.1.1.tgz", - "integrity": "sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==", - "cpu": [ - "arm64" - ], + "node_modules/@module-federation/bridge-react-webpack-plugin/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/@napi-rs/nice-win32-ia32-msvc": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.1.1.tgz", - "integrity": "sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==", - "cpu": [ - "ia32" - ], + "node_modules/@module-federation/cli": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-0.21.6.tgz", + "integrity": "sha512-qNojnlc8pTyKtK7ww3i/ujLrgWwgXqnD5DcDPsjADVIpu7STaoaVQ0G5GJ7WWS/ajXw6EyIAAGW/AMFh4XUxsQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@module-federation/dts-plugin": "0.21.6", + "@module-federation/sdk": "0.21.6", + "chalk": "3.0.0", + "commander": "11.1.0", + "jiti": "2.4.2" + }, + "bin": { + "mf": "bin/mf.js" + }, "engines": { - "node": ">= 10" + "node": ">=16.0.0" } }, - "node_modules/@napi-rs/nice-win32-x64-msvc": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.1.1.tgz", - "integrity": "sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==", - "cpu": [ - "x64" - ], + "node_modules/@module-federation/cli/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", - "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", + "node_modules/@module-federation/data-prefetch": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.21.6.tgz", + "integrity": "sha512-8HD7ZhtWZ9vl6i3wA7M8cEeCRdtvxt09SbMTfqIPm+5eb/V4ijb8zGTYSRhNDb5RCB+BAixaPiZOWKXJ63/rVw==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@emnapi/core": "^1.5.0", - "@emnapi/runtime": "^1.5.0", - "@tybys/wasm-util": "^0.10.1" + "@module-federation/runtime": "0.21.6", + "@module-federation/sdk": "0.21.6", + "fs-extra": "9.1.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/@ngtools/webpack": { - "version": "20.3.18", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.3.18.tgz", - "integrity": "sha512-dFH/K6byV9oWbLIDoI/RTgYkbIqaofNr7PHVkH8MhMi/rSoKEgf2Un/xjaD7zCsODHou7HE/jfiXgC+6Adzveg==", + "node_modules/@module-federation/dts-plugin": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.21.6.tgz", + "integrity": "sha512-YIsDk8/7QZIWn0I1TAYULniMsbyi2LgKTi9OInzVmZkwMC6644x/ratTWBOUDbdY1Co+feNkoYeot1qIWv2L7w==", "dev": true, "license": "MIT", - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "dependencies": { + "@module-federation/error-codes": "0.21.6", + "@module-federation/managers": "0.21.6", + "@module-federation/sdk": "0.21.6", + "@module-federation/third-party-dts-extractor": "0.21.6", + "adm-zip": "^0.5.10", + "ansi-colors": "^4.1.3", + "axios": "^1.12.0", + "chalk": "3.0.0", + "fs-extra": "9.1.0", + "isomorphic-ws": "5.0.0", + "koa": "3.0.3", + "lodash.clonedeepwith": "4.5.0", + "log4js": "6.9.1", + "node-schedule": "2.1.1", + "rambda": "^9.1.0", + "ws": "8.18.0" }, "peerDependencies": { - "@angular/compiler-cli": "^20.0.0", - "typescript": ">=5.8 <6.0", - "webpack": "^5.54.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@module-federation/dts-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/@npmcli/agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", - "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", + "node_modules/@module-federation/enhanced": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.21.6.tgz", + "integrity": "sha512-8PFQxtmXc6ukBC4CqGIoc96M2Ly9WVwCPu4Ffvt+K/SB6rGbeFeZoYAwREV1zGNMJ5v5ly6+AHIEOBxNuSnzSg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^11.2.1", - "socks-proxy-agent": "^8.0.3" + "@module-federation/bridge-react-webpack-plugin": "0.21.6", + "@module-federation/cli": "0.21.6", + "@module-federation/data-prefetch": "0.21.6", + "@module-federation/dts-plugin": "0.21.6", + "@module-federation/error-codes": "0.21.6", + "@module-federation/inject-external-runtime-core-plugin": "0.21.6", + "@module-federation/managers": "0.21.6", + "@module-federation/manifest": "0.21.6", + "@module-federation/rspack": "0.21.6", + "@module-federation/runtime-tools": "0.21.6", + "@module-federation/sdk": "0.21.6", + "btoa": "^1.2.1", + "schema-utils": "^4.3.0", + "upath": "2.0.1" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "bin": { + "mf": "bin/mf.js" + }, + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "node_modules/@module-federation/error-codes": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.21.6.tgz", + "integrity": "sha512-MLJUCQ05KnoVl8xd6xs9a5g2/8U+eWmVxg7xiBMeR0+7OjdWUbHwcwgVFatRIwSZvFgKHfWEiI7wsU1q1XbTRQ==", "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } + "license": "MIT" }, - "node_modules/@npmcli/fs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", - "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", + "node_modules/@module-federation/inject-external-runtime-core-plugin": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.21.6.tgz", + "integrity": "sha512-DJQne7NQ988AVi3QB8byn12FkNb+C2lBeU1NRf8/WbL0gmHsr6kW8hiEJCm8LYaURwtsQqtsEV7i+8+51qjSmQ==", "dev": true, - "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "license": "MIT", + "peerDependencies": { + "@module-federation/runtime-tools": "0.21.6" } }, - "node_modules/@npmcli/git": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.2.tgz", - "integrity": "sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==", + "node_modules/@module-federation/managers": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.21.6.tgz", + "integrity": "sha512-BeV6m2/7kF5MDVz9JJI5T8h8lMosnXkH2bOxxFewcra7ZjvDOgQu7WIio0mgk5l1zjNPvnEVKhnhrenEdcCiWg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@gar/promise-retry": "^1.0.0", - "@npmcli/promise-spawn": "^9.0.0", - "ini": "^6.0.0", - "lru-cache": "^11.2.1", - "npm-pick-manifest": "^11.0.1", - "proc-log": "^6.0.0", - "semver": "^7.3.5", - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" + "@module-federation/sdk": "0.21.6", + "find-pkg": "2.0.0", + "fs-extra": "9.1.0" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "node_modules/@module-federation/manifest": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.21.6.tgz", + "integrity": "sha512-yg93+I1qjRs5B5hOSvjbjmIoI2z3th8/yst9sfwvx4UDOG1acsE3HHMyPN0GdoIGwplC/KAnU5NmUz4tREUTGQ==", "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" + "license": "MIT", + "dependencies": { + "@module-federation/dts-plugin": "0.21.6", + "@module-federation/managers": "0.21.6", + "@module-federation/sdk": "0.21.6", + "chalk": "3.0.0", + "find-pkg": "2.0.0" } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", - "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "node_modules/@module-federation/manifest/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "isexe": "^4.0.0" - }, - "bin": { - "node-which": "bin/which.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=8" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", - "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", + "node_modules/@module-federation/node": { + "version": "2.7.32", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.32.tgz", + "integrity": "sha512-hUj5v2GGwpNzl2gaJS4AyzCYRzJBhN8875A+ucKF9tq3jaQb5zpy3izYMISqqbN2q9a7jz3nEUgwAh3pjri+rQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "npm-bundled": "^5.0.0", - "npm-normalize-package-bin": "^5.0.0" + "@module-federation/enhanced": "2.0.1", + "@module-federation/runtime": "2.0.1", + "@module-federation/sdk": "2.0.1", + "btoa": "1.2.1", + "encoding": "^0.1.13", + "node-fetch": "2.7.0" }, - "bin": { - "installed-package-contents": "bin/index.js" + "peerDependencies": { + "webpack": "^5.40.0" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/@npmcli/node-gyp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", - "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", + "node_modules/@module-federation/node/node_modules/@module-federation/bridge-react-webpack-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-D7LMW5EMAJShOMR1aZDAJ6s+MdsYDHaQyJADLQ3LaY0sne/BkVqkPikUwcO1IwOwKbXjYsDlQVOEvk9wZVRFhA==", "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "license": "MIT", + "dependencies": { + "@module-federation/sdk": "2.0.1", + "@types/semver": "7.5.8", + "semver": "7.6.3" } }, - "node_modules/@npmcli/package-json": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz", - "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==", + "node_modules/@module-federation/node/node_modules/@module-federation/cli": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-2.0.1.tgz", + "integrity": "sha512-2SL5Y8iODNX10y9T3CBLhHjSXo4afnA1BK82m4sNfZebuVO+o34bxewqwod9xfWq9xhTZmOSFZ+n+lgTKRv+CQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@npmcli/git": "^7.0.0", - "glob": "^13.0.0", - "hosted-git-info": "^9.0.0", - "json-parse-even-better-errors": "^5.0.0", - "proc-log": "^6.0.0", - "semver": "^7.5.3", - "spdx-expression-parse": "^4.0.0" + "@module-federation/dts-plugin": "2.0.1", + "@module-federation/sdk": "2.0.1", + "chalk": "3.0.0", + "commander": "11.1.0", + "jiti": "2.4.2" + }, + "bin": { + "mf": "bin/mf.js" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=16.0.0" } }, - "node_modules/@npmcli/package-json/node_modules/spdx-expression-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", - "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "node_modules/@module-federation/node/node_modules/@module-federation/data-prefetch": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-2.0.1.tgz", + "integrity": "sha512-Kq0P1OABGt6QAvs6TaE/zY9Ut9Y/oJFrzoSF3eWaCYbUAr2KD2SpTyMsPz4ssBzjeKXTgimugh6tHHd6mpCBIQ==", "dev": true, "license": "MIT", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "@module-federation/runtime": "2.0.1", + "@module-federation/sdk": "2.0.1", + "fs-extra": "9.1.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@npmcli/promise-spawn": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", - "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", + "node_modules/@module-federation/node/node_modules/@module-federation/dts-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-2.0.1.tgz", + "integrity": "sha512-PLneTsf1fQS5/RTBedtLAAmCPRdMfIlhfJkOa8QH3WDJaQsqm8Wb3r2cTUBf2aNj/bP3aH/y6Hs9JFB/4x0l5g==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "which": "^6.0.0" + "@module-federation/error-codes": "2.0.1", + "@module-federation/managers": "2.0.1", + "@module-federation/sdk": "2.0.1", + "@module-federation/third-party-dts-extractor": "2.0.1", + "adm-zip": "^0.5.10", + "ansi-colors": "^4.1.3", + "axios": "^1.12.0", + "chalk": "3.0.0", + "fs-extra": "9.1.0", + "isomorphic-ws": "5.0.0", + "koa": "3.0.3", + "lodash.clonedeepwith": "4.5.0", + "log4js": "6.9.1", + "node-schedule": "2.1.1", + "rambda": "^9.1.0", + "ws": "8.18.0" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } } }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", - "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "node_modules/@module-federation/node/node_modules/@module-federation/enhanced": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-2.0.1.tgz", + "integrity": "sha512-EZIARQ/8ScoTP6PV8+E4SsmMYWK4ErrikZJ0G/FX8wvK8mCtdoKatFtvDN9++P6Nl78kN9zHYgAV4AHKdBVjfQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "isexe": "^4.0.0" + "@module-federation/bridge-react-webpack-plugin": "2.0.1", + "@module-federation/cli": "2.0.1", + "@module-federation/data-prefetch": "2.0.1", + "@module-federation/dts-plugin": "2.0.1", + "@module-federation/error-codes": "2.0.1", + "@module-federation/inject-external-runtime-core-plugin": "2.0.1", + "@module-federation/managers": "2.0.1", + "@module-federation/manifest": "2.0.1", + "@module-federation/rspack": "2.0.1", + "@module-federation/runtime-tools": "2.0.1", + "@module-federation/sdk": "2.0.1", + "btoa": "^1.2.1", + "schema-utils": "^4.3.0", + "upath": "2.0.1" }, "bin": { - "node-which": "bin/which.js" + "mf": "bin/mf.js" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@npmcli/redact": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz", - "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==", + "node_modules/@module-federation/node/node_modules/@module-federation/error-codes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-2.0.1.tgz", + "integrity": "sha512-2bJF/ft+qL9L6Zvq2t/G9/f/0wFL73cM8/NJ04uyYz9BjIgvx28K5qu8/6+IwgEEKATG7vOhBBVj6wH3S+5ASA==", "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "license": "MIT" + }, + "node_modules/@module-federation/node/node_modules/@module-federation/inject-external-runtime-core-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-2.0.1.tgz", + "integrity": "sha512-oAA7G+4GCHM+WRYfscR/x4GwCyM9CEqfdD9/x2L6y8mtLWK9anRLKTocsI759AvzXsbT1m3EQ5ki1O6wlwDu3g==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@module-federation/runtime-tools": "2.0.1" } }, - "node_modules/@npmcli/run-script": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.4.tgz", - "integrity": "sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==", + "node_modules/@module-federation/node/node_modules/@module-federation/managers": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-2.0.1.tgz", + "integrity": "sha512-KR01lSlcYRQ9C6hW2a8CQQtAE0LvfTLgtV/6ZNUTagw8sRfeDln+ggrZsYilKu9zl0i8RPDgpv/kS60o4lcxCQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@npmcli/node-gyp": "^5.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/promise-spawn": "^9.0.0", - "node-gyp": "^12.1.0", - "proc-log": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@module-federation/sdk": "2.0.1", + "find-pkg": "2.0.0", + "fs-extra": "9.1.0" } }, - "node_modules/@nrwl/devkit": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.5.4.tgz", - "integrity": "sha512-T3cRQErKfEyrx9x+xsnY4kg5+vmwPn3UQY1GwsPuuhqYeJn2NAQFzb8gcnZ6mSTqughum3eqp2nNDmpUkWO7tg==", + "node_modules/@module-federation/node/node_modules/@module-federation/manifest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-2.0.1.tgz", + "integrity": "sha512-p8nYGjHWp17MsYdW/Vv0ogBDiTTsI1PHWPQbvVIqLQXDqwiesaRSRR1zziECXQoEL8lV5Bs+uSkcaJGhea9P+A==", + "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "19.5.4" + "@module-federation/dts-plugin": "2.0.1", + "@module-federation/managers": "2.0.1", + "@module-federation/sdk": "2.0.1", + "chalk": "3.0.0", + "find-pkg": "2.0.0" } }, - "node_modules/@nrwl/devkit/node_modules/@nx/devkit": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.5.4.tgz", - "integrity": "sha512-0TG2iU0xVRuElLP2aLeRSKUynsC+UgHqE/FJW2IcglHngs2/Duw2A4HDUVVOxztkEQPmp736qkYSwFO0nlOGxg==", + "node_modules/@module-federation/node/node_modules/@module-federation/rspack": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-2.0.1.tgz", + "integrity": "sha512-SAlNE8iclFmzrKtx3/C2GivXYx6nPzx4MgQV01QG/a4LpnLbwlxzdZu3rqQ2swp4NNWT/t/GT7Y+7gfhyVa7mg==", + "dev": true, "license": "MIT", "dependencies": { - "@nrwl/devkit": "19.5.4", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", - "ignore": "^5.0.4", - "minimatch": "9.0.3", - "semver": "^7.5.3", - "tmp": "~0.2.1", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "@module-federation/bridge-react-webpack-plugin": "2.0.1", + "@module-federation/dts-plugin": "2.0.1", + "@module-federation/inject-external-runtime-core-plugin": "2.0.1", + "@module-federation/managers": "2.0.1", + "@module-federation/manifest": "2.0.1", + "@module-federation/runtime-tools": "2.0.1", + "@module-federation/sdk": "2.0.1", + "btoa": "1.2.1" }, "peerDependencies": { - "nx": ">= 17 <= 20" + "@rspack/core": "^0.7.0 || ^1.0.0 || ^2.0.0-0", + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } } }, - "node_modules/@nrwl/jest": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-19.5.4.tgz", - "integrity": "sha512-dlu7LBtD4RYavMZ0sBz9NqkYc1YbMYDM/637xDWRdZV17tG7214ATyA0YgVb15UisTkWQpns2tLBXQ/UbkJvFA==", + "node_modules/@module-federation/node/node_modules/@module-federation/runtime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.0.1.tgz", + "integrity": "sha512-UQ72P5Oo40dS6vdhHetwTtIsbGciEr+bjoYvDgh1WLPfFlTYd8zo9cLfqaf3juuPfV3cMVARAVPmh16lQYpUGA==", + "dev": true, "license": "MIT", "dependencies": { - "@nx/jest": "19.5.4" + "@module-federation/error-codes": "2.0.1", + "@module-federation/runtime-core": "2.0.1", + "@module-federation/sdk": "2.0.1" } }, - "node_modules/@nrwl/jest/node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", - "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "node_modules/@module-federation/node/node_modules/@module-federation/runtime-core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-2.0.1.tgz", + "integrity": "sha512-gOuCPSHoQGUGwlxfSTMInFX+QvLxdEWegGGMiLdU5vqbXuva4E9M+kXBBO7/0MkcBPMmVs0wOJGm0XOLeV2f1Q==", + "dev": true, "license": "MIT", "dependencies": { - "@emnapi/core": "^1.1.0", - "@emnapi/runtime": "^1.1.0", - "@tybys/wasm-util": "^0.9.0" + "@module-federation/error-codes": "2.0.1", + "@module-federation/sdk": "2.0.1" } }, - "node_modules/@nrwl/jest/node_modules/@nx/devkit": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.5.4.tgz", - "integrity": "sha512-0TG2iU0xVRuElLP2aLeRSKUynsC+UgHqE/FJW2IcglHngs2/Duw2A4HDUVVOxztkEQPmp736qkYSwFO0nlOGxg==", + "node_modules/@module-federation/node/node_modules/@module-federation/runtime-tools": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-2.0.1.tgz", + "integrity": "sha512-AStdwBtsGB3jIfDg9oP+KyVPsimdaeHsP855gqCxDp1hi2+GKjlZWZx9ThkS8NytVSXSUysxqoUL1ivDoKgcCQ==", + "dev": true, "license": "MIT", "dependencies": { - "@nrwl/devkit": "19.5.4", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", - "ignore": "^5.0.4", - "minimatch": "9.0.3", - "semver": "^7.5.3", - "tmp": "~0.2.1", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "@module-federation/runtime": "2.0.1", + "@module-federation/webpack-bundler-runtime": "2.0.1" + } + }, + "node_modules/@module-federation/node/node_modules/@module-federation/sdk": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.0.1.tgz", + "integrity": "sha512-32PwudojGjog51cwpTali7D6ud82oVgsyvOx9JjAzhvXBX96YI4mRsursuWcthDxmigJP9ZvUTXDuRUEDh1OQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@module-federation/node/node_modules/@module-federation/third-party-dts-extractor": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.0.1.tgz", + "integrity": "sha512-neKSr6FNUeGRh+YR57l/QZUzPytJXuJx+babF7j5iGJG3FP+kfizr6QD0hgVis5KEoXMVbQ8yyvG0slERizeyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" + } + }, + "node_modules/@module-federation/node/node_modules/@module-federation/webpack-bundler-runtime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-2.0.1.tgz", + "integrity": "sha512-u1NId3SF4lHDTmD2CHFEszulmXmIq1TGw9JYvnLx5rKJL7xt3aNxcb1GvkaYbRNVBXhSMjJ75E5LsQlZzyBx9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "2.0.1", + "@module-federation/sdk": "2.0.1" + } + }, + "node_modules/@module-federation/node/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "nx": ">= 17 <= 20" + "engines": { + "node": ">=8" } }, - "node_modules/@nrwl/jest/node_modules/@nx/jest": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-19.5.4.tgz", - "integrity": "sha512-u05B4j5pfGs+lnRrlpW6s2xECSkBOileroTITUp8xl0/GQnFyBAgFolu2iqH9M/e4+gykzMEsHyK/eZrPUt20A==", + "node_modules/@module-federation/node/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/reporters": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@nrwl/jest": "19.5.4", - "@nx/devkit": "19.5.4", - "@nx/js": "19.5.4", - "@phenomnomnominal/tsquery": "~5.0.1", - "chalk": "^4.1.0", - "identity-obj-proxy": "3.0.0", - "jest-config": "^29.4.1", - "jest-resolve": "^29.4.1", - "jest-util": "^29.4.1", - "minimatch": "9.0.3", - "resolve.exports": "1.1.0", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@module-federation/node/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@nrwl/jest/node_modules/@nx/js": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.5.4.tgz", - "integrity": "sha512-PkilOEL/JyQrZjTeuPc1Z+LfJ3kr6/Lxas/hzAjENh2mleNjaDgDVP4/2KxvHexP09wu6BARNDdsK1sXMhpPyA==", + "node_modules/@module-federation/rspack": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.21.6.tgz", + "integrity": "sha512-SB+z1P+Bqe3R6geZje9dp0xpspX6uash+zO77nodmUy8PTTBlkL7800Cq2FMLKUdoTZHJTBVXf0K6CqQWSlItg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.23.2", - "@babel/plugin-proposal-decorators": "^7.22.7", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-runtime": "^7.23.2", - "@babel/preset-env": "^7.23.2", - "@babel/preset-typescript": "^7.22.5", - "@babel/runtime": "^7.22.6", - "@nrwl/js": "19.5.4", - "@nx/devkit": "19.5.4", - "@nx/workspace": "19.5.4", - "babel-plugin-const-enum": "^1.0.1", - "babel-plugin-macros": "^2.8.0", - "babel-plugin-transform-typescript-metadata": "^0.3.1", - "chalk": "^4.1.0", - "columnify": "^1.6.0", - "detect-port": "^1.5.1", - "fast-glob": "3.2.7", - "fs-extra": "^11.1.0", - "ignore": "^5.0.4", - "js-tokens": "^4.0.0", - "minimatch": "9.0.3", - "npm-package-arg": "11.0.1", - "npm-run-path": "^4.0.1", - "ora": "5.3.0", - "semver": "^7.5.3", - "source-map-support": "0.5.19", - "ts-node": "10.9.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0" + "@module-federation/bridge-react-webpack-plugin": "0.21.6", + "@module-federation/dts-plugin": "0.21.6", + "@module-federation/inject-external-runtime-core-plugin": "0.21.6", + "@module-federation/managers": "0.21.6", + "@module-federation/manifest": "0.21.6", + "@module-federation/runtime-tools": "0.21.6", + "@module-federation/sdk": "0.21.6", + "btoa": "1.2.1" }, "peerDependencies": { - "verdaccio": "^5.0.4" + "@rspack/core": ">=0.7", + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" }, "peerDependenciesMeta": { - "verdaccio": { + "typescript": { + "optional": true + }, + "vue-tsc": { "optional": true } } }, - "node_modules/@nrwl/jest/node_modules/@nx/nx-darwin-arm64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.5.4.tgz", - "integrity": "sha512-s+OmSsYUtECmEKAdzSsYoO9vamx+njiP72eSZusmTh7fCJg+dW3dcifRkUf3h1dcM53hffXcmxKEoWxZMAeuXw==", + "node_modules/@module-federation/runtime": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.21.6.tgz", + "integrity": "sha512-+caXwaQqwTNh+CQqyb4mZmXq7iEemRDrTZQGD+zyeH454JAYnJ3s/3oDFizdH6245pk+NiqDyOOkHzzFQorKhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.21.6", + "@module-federation/runtime-core": "0.21.6", + "@module-federation/sdk": "0.21.6" + } + }, + "node_modules/@module-federation/runtime-core": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.21.6.tgz", + "integrity": "sha512-5Hd1Y5qp5lU/aTiK66lidMlM/4ji2gr3EXAtJdreJzkY+bKcI5+21GRcliZ4RAkICmvdxQU5PHPL71XmNc7Lsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.21.6", + "@module-federation/sdk": "0.21.6" + } + }, + "node_modules/@module-federation/runtime-tools": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.21.6.tgz", + "integrity": "sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.21.6", + "@module-federation/webpack-bundler-runtime": "0.21.6" + } + }, + "node_modules/@module-federation/sdk": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.21.6.tgz", + "integrity": "sha512-x6hARETb8iqHVhEsQBysuWpznNZViUh84qV2yE7AD+g7uIzHKiYdoWqj10posbo5XKf/147qgWDzKZoKoEP2dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@module-federation/third-party-dts-extractor": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.21.6.tgz", + "integrity": "sha512-Il6x4hLsvCgZNk1DFwuMBNeoxD1BsZ5AW2BI/nUgu0k5FiAvfcz1OFawRFEHtaM/kVrCsymMOW7pCao90DaX3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" + } + }, + "node_modules/@module-federation/third-party-dts-extractor/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.21.6", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.21.6.tgz", + "integrity": "sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.21.6", + "@module-federation/sdk": "0.21.6" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/jest/node_modules/@nx/nx-darwin-x64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.5.4.tgz", - "integrity": "sha512-GjA6aThF9P7FR3OdNZn4g9c1bJeQMOdQmo2jaBaGmUPnOIZSEWinHkvh5g8vDg+jNwRdHKK84jJWWW0/o73iYQ==", + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" ], - "engines": { - "node": ">= 10" - } + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nrwl/jest/node_modules/@nx/nx-freebsd-x64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.5.4.tgz", - "integrity": "sha512-KPVTmg2NpvON3+sh2pNWv2GJow5CL3fX2xBo4cI9D50DDZOD4fB68S2v5q6nLC1QWOwQcC0PLnSpoKaDB0PgQg==", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "freebsd" + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@napi-rs/nice": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz", + "integrity": "sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==", + "dev": true, + "license": "MIT", + "optional": true, "engines": { "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/nice-android-arm-eabi": "1.1.1", + "@napi-rs/nice-android-arm64": "1.1.1", + "@napi-rs/nice-darwin-arm64": "1.1.1", + "@napi-rs/nice-darwin-x64": "1.1.1", + "@napi-rs/nice-freebsd-x64": "1.1.1", + "@napi-rs/nice-linux-arm-gnueabihf": "1.1.1", + "@napi-rs/nice-linux-arm64-gnu": "1.1.1", + "@napi-rs/nice-linux-arm64-musl": "1.1.1", + "@napi-rs/nice-linux-ppc64-gnu": "1.1.1", + "@napi-rs/nice-linux-riscv64-gnu": "1.1.1", + "@napi-rs/nice-linux-s390x-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-musl": "1.1.1", + "@napi-rs/nice-openharmony-arm64": "1.1.1", + "@napi-rs/nice-win32-arm64-msvc": "1.1.1", + "@napi-rs/nice-win32-ia32-msvc": "1.1.1", + "@napi-rs/nice-win32-x64-msvc": "1.1.1" } }, - "node_modules/@nrwl/jest/node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.5.4.tgz", - "integrity": "sha512-a535HwxVhTS+ngcoFxrsqmggpsKWquubILZhIeY/q+XW6nX61FEb/EqlMkc+aJLHD1LQBGax1W+j7YvTA/66Lw==", + "node_modules/@napi-rs/nice-android-arm-eabi": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.1.1.tgz", + "integrity": "sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==", "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "android" ], "engines": { "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/@nx/nx-linux-arm64-gnu": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.5.4.tgz", - "integrity": "sha512-eRu/IoPB68MQeEmfyub+P79eDYvXOyNa706rp0JnDHL5LMw12kPF3MIeqc/v7o6xWakGHCSnTCulcqsl8HXryg==", + "node_modules/@napi-rs/nice-android-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.1.1.tgz", + "integrity": "sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "android" ], "engines": { "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/@nx/nx-linux-arm64-musl": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.5.4.tgz", - "integrity": "sha512-r5NNVngNwTe+zpUAAZAgCezDkjc0pi2zrr8VwiaRZsmVjhHtvvsXJgo1ONw5s2HjKoKuTFEa5jKTUlAHkaQ7Kg==", + "node_modules/@napi-rs/nice-darwin-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.1.1.tgz", + "integrity": "sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/@nx/nx-linux-x64-gnu": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.5.4.tgz", - "integrity": "sha512-8TWwjyp/bK2a/CHK2HuC7I8iITC9ytEvfru8/kw1mSyoK4kSDlzkL/1uDl536ULXLWORulfEzaGb61GynVc1vg==", + "node_modules/@napi-rs/nice-darwin-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.1.1.tgz", + "integrity": "sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/@nx/nx-linux-x64-musl": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.5.4.tgz", - "integrity": "sha512-5Pf32iv9nnmSV/oOHd9k/5L45m3BooSj096G/ejAN3BHMr4CZIMhjDcQq9ZX7pAZFchU5zL0+dNClK70QfA7PA==", + "node_modules/@napi-rs/nice-freebsd-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.1.1.tgz", + "integrity": "sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "freebsd" ], "engines": { "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/@nx/nx-win32-arm64-msvc": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.5.4.tgz", - "integrity": "sha512-fyKGfde4Pq9r5qQMLIleujq7B5ta86y8RSPUruoN6zaGrNg6waqbpMdZUjjsg9L7PP9RPaMHPMubC21OnQQomQ==", + "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.1.1.tgz", + "integrity": "sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==", "cpu": [ - "arm64" + "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ], "engines": { "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/@nx/nx-win32-x64-msvc": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.5.4.tgz", - "integrity": "sha512-gcAr5zZQKiAxHZ7iUOVeMLf/KIh4EFbF07Q0uSmgGmUJL1u3mZTjeG57V1AMZbTQESGY43rgoymqVYkghc5Jlw==", + "node_modules/@napi-rs/nice-linux-arm64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.1.1.tgz", + "integrity": "sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==", "cpu": [ - "x64" + "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ], "engines": { "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/@nx/workspace": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.5.4.tgz", - "integrity": "sha512-GI3uMJYwPxjPGHA0UuXZtIqf/fgiCDq63Ns7zpdzwaeOvQbtHySFVV6zclXx/3dXjJsBpEiOYNKPGf17jqx6Dw==", + "node_modules/@napi-rs/nice-linux-arm64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.1.1.tgz", + "integrity": "sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@nrwl/workspace": "19.5.4", - "@nx/devkit": "19.5.4", - "chalk": "^4.1.0", - "enquirer": "~2.3.6", - "nx": "19.5.4", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "node_modules/@napi-rs/nice-linux-ppc64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.1.1.tgz", + "integrity": "sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.46", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", - "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", - "license": "BSD-2-Clause", - "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" - }, + "node_modules/@napi-rs/nice-linux-riscv64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.1.1.tgz", + "integrity": "sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.15.0" + "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "node_modules/@napi-rs/nice-linux-s390x-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.1.1.tgz", + "integrity": "sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==", + "cpu": [ + "s390x" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/@napi-rs/nice-linux-x64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.1.1.tgz", + "integrity": "sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "node_modules/@napi-rs/nice-linux-x64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.1.1.tgz", + "integrity": "sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/@napi-rs/nice-openharmony-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-openharmony-arm64/-/nice-openharmony-arm64-1.1.1.tgz", + "integrity": "sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/@nrwl/jest/node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "node_modules/@napi-rs/nice-win32-arm64-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.1.1.tgz", + "integrity": "sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@nrwl/jest/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@nrwl/jest/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, + "node_modules/@napi-rs/nice-win32-ia32-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.1.1.tgz", + "integrity": "sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/@napi-rs/nice-win32-x64-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.1.1.tgz", + "integrity": "sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10" } }, - "node_modules/@nrwl/jest/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", + "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "optional": true, + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@tybys/wasm-util": "^0.10.1" } }, - "node_modules/@nrwl/jest/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/@ngtools/webpack": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.1.4.tgz", + "integrity": "sha512-CgKnMofIVGTwNPqFNZmkmr2aLOFUG/AKm8lauXU+juwSaY7Z28eguFd+J42uVUOnasLxINQY9y7kr9f6deTrcg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^21.0.0", + "typescript": ">=5.9 <6.0", + "webpack": "^5.54.0" } }, - "node_modules/@nrwl/jest/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@nrwl/jest/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/@nrwl/jest/node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "license": "MIT" + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } }, - "node_modules/@nrwl/jest/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/@nrwl/jest/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/@nrwl/jest/node_modules/npm-package-arg": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", - "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "node_modules/@npmcli/agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", + "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", + "dev": true, "license": "ISC", "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^11.2.1", + "socks-proxy-agent": "^8.0.3" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/jest/node_modules/nx": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/nx/-/nx-19.5.4.tgz", - "integrity": "sha512-zfxIFe+29Na6GKlmPPzQhCjnBv5HoLaT43mYZdHh3BPrVOzWBCXNwxWROG1ZK9IcUepwySWq7NI/H3w8BGPEGg==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@napi-rs/wasm-runtime": "0.2.4", - "@nrwl/tao": "19.5.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "3.0.0-rc.46", - "@zkochan/js-yaml": "0.0.7", - "axios": "^1.7.2", - "chalk": "^4.1.0", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^8.0.1", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", - "enquirer": "~2.3.6", - "figures": "3.2.0", - "flat": "^5.0.2", - "front-matter": "^4.0.2", - "fs-extra": "^11.1.0", - "ignore": "^5.0.4", - "jest-diff": "^29.4.1", - "jsonc-parser": "3.2.0", - "lines-and-columns": "~2.0.3", - "minimatch": "9.0.3", - "node-machine-id": "1.1.12", - "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "ora": "5.3.0", - "semver": "^7.5.3", - "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0", - "yargs": "^17.6.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "nx": "bin/nx.js", - "nx-cloud": "bin/nx-cloud.js" - }, - "optionalDependencies": { - "@nx/nx-darwin-arm64": "19.5.4", - "@nx/nx-darwin-x64": "19.5.4", - "@nx/nx-freebsd-x64": "19.5.4", - "@nx/nx-linux-arm-gnueabihf": "19.5.4", - "@nx/nx-linux-arm64-gnu": "19.5.4", - "@nx/nx-linux-arm64-musl": "19.5.4", - "@nx/nx-linux-x64-gnu": "19.5.4", - "@nx/nx-linux-x64-musl": "19.5.4", - "@nx/nx-win32-arm64-msvc": "19.5.4", - "@nx/nx-win32-x64-msvc": "19.5.4" - }, - "peerDependencies": { - "@swc-node/register": "^1.8.0", - "@swc/core": "^1.3.85" - }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, - "node_modules/@nrwl/jest/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "license": "MIT", + "node_modules/@npmcli/fs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", + "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", + "dev": true, + "license": "ISC", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/jest/node_modules/ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", - "license": "MIT", + "node_modules/@npmcli/git": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.2.tgz", + "integrity": "sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==", + "dev": true, + "license": "ISC", "dependencies": { - "bl": "^4.0.3", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "@gar/promise-retry": "^1.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "ini": "^6.0.0", + "lru-cache": "^11.2.1", + "npm-pick-manifest": "^11.0.1", + "proc-log": "^6.0.0", + "semver": "^7.3.5", + "which": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/jest/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "license": "ISC", + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=20" } }, - "node_modules/@nrwl/jest/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">= 6" + "node": "20 || >=22" } }, - "node_modules/@nrwl/jest/node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "license": "MIT", + "node_modules/@npmcli/git/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, "engines": { - "node": ">=10" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/jest/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "license": "MIT", + "node_modules/@npmcli/installed-package-contents": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", + "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", + "dev": true, + "license": "ISC", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "npm-bundled": "^5.0.0", + "npm-normalize-package-bin": "^5.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" }, "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/jest/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/@nrwl/jest/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", + "node_modules/@npmcli/node-gyp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", + "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@nrwl/jest/node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/jest/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", + "node_modules/@npmcli/package-json": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz", + "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==", + "dev": true, + "license": "ISC", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@npmcli/git": "^7.0.0", + "glob": "^13.0.0", + "hosted-git-info": "^9.0.0", + "json-parse-even-better-errors": "^5.0.0", + "proc-log": "^6.0.0", + "semver": "^7.5.3", + "spdx-expression-parse": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/jest/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "license": "MIT", + "node_modules/@npmcli/promise-spawn": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", + "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", + "dev": true, + "license": "ISC", "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "which": "^6.0.0" }, "engines": { - "node": ">=6" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/jest/node_modules/validate-npm-package-name": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", - "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", - "license": "ISC", + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=20" } }, - "node_modules/@nrwl/jest/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "dev": true, "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@nrwl/jest/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=12" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/js": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-19.5.4.tgz", - "integrity": "sha512-LIhqrS8hSvVkZp5Qu0Cu0oiNaZjKPOpx9cDn0YKT+XmELdhjywZjcNBv8m9jE27wMX5ritVoVGiPLGUnpQlQmw==", - "license": "MIT", - "dependencies": { - "@nx/js": "19.5.4" + "node_modules/@npmcli/redact": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz", + "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/js/node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", - "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", - "license": "MIT", + "node_modules/@npmcli/run-script": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.4.tgz", + "integrity": "sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==", + "dev": true, + "license": "ISC", "dependencies": { - "@emnapi/core": "^1.1.0", - "@emnapi/runtime": "^1.1.0", - "@tybys/wasm-util": "^0.9.0" + "@npmcli/node-gyp": "^5.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "node-gyp": "^12.1.0", + "proc-log": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nrwl/js/node_modules/@nx/devkit": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.5.4.tgz", - "integrity": "sha512-0TG2iU0xVRuElLP2aLeRSKUynsC+UgHqE/FJW2IcglHngs2/Duw2A4HDUVVOxztkEQPmp736qkYSwFO0nlOGxg==", + "node_modules/@nx/angular": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-22.5.3.tgz", + "integrity": "sha512-Z5vNcPl95CsTnRhDszWZ0ort22dEtMxdqJFkVzdNwolhfiLm1eKP2Rc8q9MnUdrZMeTqDKnCckG2qs12FZrIkw==", + "dev": true, "license": "MIT", "dependencies": { - "@nrwl/devkit": "19.5.4", - "ejs": "^3.1.7", + "@nx/devkit": "22.5.3", + "@nx/eslint": "22.5.3", + "@nx/js": "22.5.3", + "@nx/module-federation": "22.5.3", + "@nx/rspack": "22.5.3", + "@nx/web": "22.5.3", + "@nx/webpack": "22.5.3", + "@nx/workspace": "22.5.3", + "@phenomnomnominal/tsquery": "~6.1.4", + "@typescript-eslint/type-utils": "^8.0.0", "enquirer": "~2.3.6", - "ignore": "^5.0.4", - "minimatch": "9.0.3", - "semver": "^7.5.3", - "tmp": "~0.2.1", + "magic-string": "~0.30.2", + "picocolors": "^1.1.0", + "picomatch": "4.0.2", + "semver": "^7.6.3", "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "webpack-merge": "^5.8.0" }, "peerDependencies": { - "nx": ">= 17 <= 20" + "@angular-devkit/build-angular": ">= 19.0.0 < 22.0.0", + "@angular-devkit/core": ">= 19.0.0 < 22.0.0", + "@angular-devkit/schematics": ">= 19.0.0 < 22.0.0", + "@angular/build": ">= 19.0.0 < 22.0.0", + "@schematics/angular": ">= 19.0.0 < 22.0.0", + "ng-packagr": ">= 19.0.0 < 22.0.0", + "rxjs": "^6.5.3 || ^7.5.0" + }, + "peerDependenciesMeta": { + "@angular-devkit/build-angular": { + "optional": true + }, + "@angular/build": { + "optional": true + }, + "ng-packagr": { + "optional": true + } } }, - "node_modules/@nrwl/js/node_modules/@nx/js": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.5.4.tgz", - "integrity": "sha512-PkilOEL/JyQrZjTeuPc1Z+LfJ3kr6/Lxas/hzAjENh2mleNjaDgDVP4/2KxvHexP09wu6BARNDdsK1sXMhpPyA==", + "node_modules/@nx/angular/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/core": "^7.23.2", - "@babel/plugin-proposal-decorators": "^7.22.7", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-runtime": "^7.23.2", - "@babel/preset-env": "^7.23.2", - "@babel/preset-typescript": "^7.22.5", - "@babel/runtime": "^7.22.6", - "@nrwl/js": "19.5.4", - "@nx/devkit": "19.5.4", - "@nx/workspace": "19.5.4", - "babel-plugin-const-enum": "^1.0.1", - "babel-plugin-macros": "^2.8.0", - "babel-plugin-transform-typescript-metadata": "^0.3.1", - "chalk": "^4.1.0", - "columnify": "^1.6.0", - "detect-port": "^1.5.1", - "fast-glob": "3.2.7", - "fs-extra": "^11.1.0", - "ignore": "^5.0.4", - "js-tokens": "^4.0.0", - "minimatch": "9.0.3", - "npm-package-arg": "11.0.1", - "npm-run-path": "^4.0.1", - "ora": "5.3.0", - "semver": "^7.5.3", - "source-map-support": "0.5.19", - "ts-node": "10.9.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "verdaccio": "^5.0.4" - }, - "peerDependenciesMeta": { - "verdaccio": { - "optional": true - } - } - }, - "node_modules/@nrwl/js/node_modules/@nx/nx-darwin-arm64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.5.4.tgz", - "integrity": "sha512-s+OmSsYUtECmEKAdzSsYoO9vamx+njiP72eSZusmTh7fCJg+dW3dcifRkUf3h1dcM53hffXcmxKEoWxZMAeuXw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nrwl/js/node_modules/@nx/nx-darwin-x64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.5.4.tgz", - "integrity": "sha512-GjA6aThF9P7FR3OdNZn4g9c1bJeQMOdQmo2jaBaGmUPnOIZSEWinHkvh5g8vDg+jNwRdHKK84jJWWW0/o73iYQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nrwl/js/node_modules/@nx/nx-freebsd-x64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.5.4.tgz", - "integrity": "sha512-KPVTmg2NpvON3+sh2pNWv2GJow5CL3fX2xBo4cI9D50DDZOD4fB68S2v5q6nLC1QWOwQcC0PLnSpoKaDB0PgQg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nrwl/js/node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.5.4.tgz", - "integrity": "sha512-a535HwxVhTS+ngcoFxrsqmggpsKWquubILZhIeY/q+XW6nX61FEb/EqlMkc+aJLHD1LQBGax1W+j7YvTA/66Lw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nrwl/js/node_modules/@nx/nx-linux-arm64-gnu": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.5.4.tgz", - "integrity": "sha512-eRu/IoPB68MQeEmfyub+P79eDYvXOyNa706rp0JnDHL5LMw12kPF3MIeqc/v7o6xWakGHCSnTCulcqsl8HXryg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nrwl/js/node_modules/@nx/nx-linux-arm64-musl": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.5.4.tgz", - "integrity": "sha512-r5NNVngNwTe+zpUAAZAgCezDkjc0pi2zrr8VwiaRZsmVjhHtvvsXJgo1ONw5s2HjKoKuTFEa5jKTUlAHkaQ7Kg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nrwl/js/node_modules/@nx/nx-linux-x64-gnu": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.5.4.tgz", - "integrity": "sha512-8TWwjyp/bK2a/CHK2HuC7I8iITC9ytEvfru8/kw1mSyoK4kSDlzkL/1uDl536ULXLWORulfEzaGb61GynVc1vg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nrwl/js/node_modules/@nx/nx-linux-x64-musl": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.5.4.tgz", - "integrity": "sha512-5Pf32iv9nnmSV/oOHd9k/5L45m3BooSj096G/ejAN3BHMr4CZIMhjDcQq9ZX7pAZFchU5zL0+dNClK70QfA7PA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nrwl/js/node_modules/@nx/nx-win32-arm64-msvc": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.5.4.tgz", - "integrity": "sha512-fyKGfde4Pq9r5qQMLIleujq7B5ta86y8RSPUruoN6zaGrNg6waqbpMdZUjjsg9L7PP9RPaMHPMubC21OnQQomQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">= 10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@nrwl/js/node_modules/@nx/nx-win32-x64-msvc": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.5.4.tgz", - "integrity": "sha512-gcAr5zZQKiAxHZ7iUOVeMLf/KIh4EFbF07Q0uSmgGmUJL1u3mZTjeG57V1AMZbTQESGY43rgoymqVYkghc5Jlw==", - "cpu": [ - "x64" - ], + "node_modules/@nx/angular/node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, "engines": { - "node": ">= 10" + "node": ">=10.0.0" } }, - "node_modules/@nrwl/js/node_modules/@nx/workspace": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.5.4.tgz", - "integrity": "sha512-GI3uMJYwPxjPGHA0UuXZtIqf/fgiCDq63Ns7zpdzwaeOvQbtHySFVV6zclXx/3dXjJsBpEiOYNKPGf17jqx6Dw==", + "node_modules/@nx/devkit": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.5.3.tgz", + "integrity": "sha512-zhRNTFsi4pbwg7L/zhBHtTOSevlgwm1iKlhPlQWoOv2PR6b+3JvjL8o4P1MbkIkut3Lsn+oTuJJ1LUPlr5vprg==", + "dev": true, "license": "MIT", "dependencies": { - "@nrwl/workspace": "19.5.4", - "@nx/devkit": "19.5.4", - "chalk": "^4.1.0", + "@zkochan/js-yaml": "0.0.7", + "ejs": "^3.1.7", "enquirer": "~2.3.6", - "nx": "19.5.4", + "minimatch": "10.2.1", + "semver": "^7.6.3", "tslib": "^2.3.0", "yargs-parser": "21.1.1" - } - }, - "node_modules/@nrwl/js/node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@nrwl/js/node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.46", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", - "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", - "license": "BSD-2-Clause", - "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" }, - "engines": { - "node": ">=14.15.0" + "peerDependencies": { + "nx": ">= 21 <= 23 || ^22.0.0-0" } }, - "node_modules/@nrwl/js/node_modules/babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "node_modules/@nx/eslint": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-22.5.3.tgz", + "integrity": "sha512-XJKpwnSJRCat+81sUDdJWWvKz3vKo/3X9oHMGDzTYx3mexCgKgpmHBuRVgnZ9n2IVDx8S5ye4ICc9qiY6oHWIA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "semver": "^7.6.3", + "tslib": "^2.3.0", + "typescript": "~5.9.2" + }, + "peerDependencies": { + "@zkochan/js-yaml": "0.0.7", + "eslint": "^8.0.0 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "@zkochan/js-yaml": { + "optional": true + } } }, - "node_modules/@nrwl/js/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/@nx/eslint-plugin": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-22.5.3.tgz", + "integrity": "sha512-dFz3nSUOV+VLc+ZQxWncKINhych6h5oEfInWp1+5WkeUBW5/x77IsM3Hpq1JrjAK6dqXjmzTsFnoU8c5Cf1Q4w==", + "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@phenomnomnominal/tsquery": "~6.1.4", + "@typescript-eslint/type-utils": "^8.0.0", + "@typescript-eslint/utils": "^8.0.0", + "chalk": "^4.1.0", + "confusing-browser-globals": "^1.0.9", + "globals": "^15.9.0", + "jsonc-eslint-parser": "^2.1.0", + "semver": "^7.6.3", + "tslib": "^2.3.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@typescript-eslint/parser": "^6.13.2 || ^7.0.0 || ^8.0.0", + "eslint-config-prettier": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/@nrwl/js/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", + "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "dev": true, "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@nrwl/js/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@nrwl/js/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/@nrwl/js/node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", + "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "@typescript-eslint/project-service": "8.56.1", + "@typescript-eslint/tsconfig-utils": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@nrwl/js/node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", + "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1" }, "engines": { - "node": ">=14.14" - } - }, - "node_modules/@nrwl/js/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@nrwl/js/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@nrwl/js/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", + "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "dev": true, "license": "MIT", - "bin": { - "is-docker": "cli.js" + "dependencies": { + "@typescript-eslint/types": "8.56.1", + "eslint-visitor-keys": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@nrwl/js/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@nrwl/js/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "license": "MIT", - "engines": { - "node": ">=8" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@nrwl/js/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "license": "MIT", + "node_modules/@nx/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@nrwl/js/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "license": "MIT", + "node_modules/@nx/eslint-plugin/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "is-docker": "^2.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@nrwl/js/node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "license": "MIT" - }, - "node_modules/@nrwl/js/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/@nx/eslint-plugin/node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, "engines": { - "node": ">=10" + "node": ">=18.12" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "typescript": ">=4.8.4" } }, - "node_modules/@nrwl/js/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/@nrwl/js/node_modules/npm-package-arg": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", - "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", - "license": "ISC", + "node_modules/@nx/jest": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-22.5.3.tgz", + "integrity": "sha512-4yaGlApTR09zdz4fC4Ep0aENcaon5rDRDOUnEJblU67ik35jds9mczHq2rBMJO4Cnjj1pM9acm08Vb0Wg+9cuQ==", + "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "@jest/reporters": "^30.0.2", + "@jest/test-result": "^30.0.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@phenomnomnominal/tsquery": "~6.1.4", + "identity-obj-proxy": "3.0.0", + "jest-config": "^30.0.2", + "jest-resolve": "^30.0.2", + "jest-util": "^30.0.2", + "minimatch": "10.2.1", + "picocolors": "^1.1.0", + "resolve.exports": "2.0.3", + "semver": "^7.6.3", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" } }, - "node_modules/@nrwl/js/node_modules/nx": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/nx/-/nx-19.5.4.tgz", - "integrity": "sha512-zfxIFe+29Na6GKlmPPzQhCjnBv5HoLaT43mYZdHh3BPrVOzWBCXNwxWROG1ZK9IcUepwySWq7NI/H3w8BGPEGg==", - "hasInstallScript": true, + "node_modules/@nx/js": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-22.5.3.tgz", + "integrity": "sha512-gglQYL6GeSH0mt6NpEFTXMFFFePU3B7TEyZq7LLUYZDH5y65izgNpdSAuEqYR7xHLtahVnesDlhPw3rtRiwMwA==", + "dev": true, "license": "MIT", "dependencies": { - "@napi-rs/wasm-runtime": "0.2.4", - "@nrwl/tao": "19.5.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "3.0.0-rc.46", + "@babel/core": "^7.23.2", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nx/devkit": "22.5.3", + "@nx/workspace": "22.5.3", "@zkochan/js-yaml": "0.0.7", - "axios": "^1.7.2", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", "chalk": "^4.1.0", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^8.0.1", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", - "enquirer": "~2.3.6", - "figures": "3.2.0", - "flat": "^5.0.2", - "front-matter": "^4.0.2", - "fs-extra": "^11.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", "ignore": "^5.0.4", - "jest-diff": "^29.4.1", + "js-tokens": "^4.0.0", "jsonc-parser": "3.2.0", - "lines-and-columns": "~2.0.3", - "minimatch": "9.0.3", - "node-machine-id": "1.1.12", "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "ora": "5.3.0", - "semver": "^7.5.3", - "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0", - "yargs": "^17.6.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "nx": "bin/nx.js", - "nx-cloud": "bin/nx-cloud.js" - }, - "optionalDependencies": { - "@nx/nx-darwin-arm64": "19.5.4", - "@nx/nx-darwin-x64": "19.5.4", - "@nx/nx-freebsd-x64": "19.5.4", - "@nx/nx-linux-arm-gnueabihf": "19.5.4", - "@nx/nx-linux-arm64-gnu": "19.5.4", - "@nx/nx-linux-arm64-musl": "19.5.4", - "@nx/nx-linux-x64-gnu": "19.5.4", - "@nx/nx-linux-x64-musl": "19.5.4", - "@nx/nx-win32-arm64-msvc": "19.5.4", - "@nx/nx-win32-x64-msvc": "19.5.4" + "picocolors": "^1.1.0", + "picomatch": "4.0.2", + "semver": "^7.6.3", + "source-map-support": "0.5.19", + "tinyglobby": "^0.2.12", + "tslib": "^2.3.0" }, "peerDependencies": { - "@swc-node/register": "^1.8.0", - "@swc/core": "^1.3.85" + "verdaccio": "^6.0.5" }, "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { + "verdaccio": { "optional": true } } }, - "node_modules/@nrwl/js/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/@nx/js/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/js/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@nrwl/js/node_modules/ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "node_modules/@nx/js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/js/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.0.3", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@nx/module-federation": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-22.5.3.tgz", + "integrity": "sha512-dKRkT/ULV+nXr7O25YMDwQu/4nxl27AcHJfOmVBVKquXrtrBu/d6dbypfFDMyr5pXqR5gb2euEw0mGVMyHLTiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/enhanced": "^0.21.2", + "@module-federation/node": "^2.7.21", + "@module-federation/sdk": "^0.21.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@nx/web": "22.5.3", + "@rspack/core": "1.6.8", + "express": "^4.21.2", + "http-proxy-middleware": "^3.0.5", + "picocolors": "^1.1.0", + "tslib": "^2.3.0", + "webpack": "^5.101.3" + } + }, + "node_modules/@nx/module-federation/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=10" + "node": ">= 0.6" + } + }, + "node_modules/@nx/module-federation/node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@nrwl/js/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "license": "ISC", + "node_modules/@nx/module-federation/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/@nrwl/js/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/@nx/module-federation/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/module-federation/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ms": "2.0.0" + } + }, + "node_modules/@nx/module-federation/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/module-federation/node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">= 6" + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@nrwl/js/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/@nx/module-federation/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, "license": "MIT", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/@nrwl/js/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" + "node_modules/@nx/module-federation/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/@nrwl/js/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", + "node_modules/@nx/module-federation/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/@nrwl/js/node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "node_modules/@nx/module-federation/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/@nrwl/js/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@nx/module-federation/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/module-federation/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/@nrwl/js/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "node_modules/@nx/module-federation/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "mime-db": "1.52.0" }, "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/@nrwl/js/node_modules/validate-npm-package-name": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", - "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", - "license": "ISC", + "node_modules/@nx/module-federation/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/@nrwl/js/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "license": "ISC", + "node_modules/@nx/module-federation/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/module-federation/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, "engines": { - "node": ">= 6" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@nrwl/js/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/@nx/module-federation/node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=12" + "node": ">= 0.8" } }, - "node_modules/@nrwl/tao": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.5.4.tgz", - "integrity": "sha512-LNCi+2Rb17wNkUUdX2OQPRv9qOrstlmuAAA9VVcIcW78NdybjgWWvMIhf4NrAkjn7/uALrZdv22zyiGekmheDw==", + "node_modules/@nx/module-federation/node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, "license": "MIT", "dependencies": { - "nx": "19.5.4", - "tslib": "^2.3.0" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" }, - "bin": { - "tao": "index.js" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@nrwl/tao/node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", - "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "node_modules/@nx/module-federation/node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, "license": "MIT", "dependencies": { - "@emnapi/core": "^1.1.0", - "@emnapi/runtime": "^1.1.0", - "@tybys/wasm-util": "^0.9.0" + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@nx/module-federation/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/@nrwl/tao/node_modules/@nx/nx-darwin-arm64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.5.4.tgz", - "integrity": "sha512-s+OmSsYUtECmEKAdzSsYoO9vamx+njiP72eSZusmTh7fCJg+dW3dcifRkUf3h1dcM53hffXcmxKEoWxZMAeuXw==", + "node_modules/@nx/nx-darwin-arm64": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.3.tgz", + "integrity": "sha512-cKXBq5bJanXp8uv6+wPvx/G4q4oFpOxMSPGaeFOVhbul2QHGGq+XMcSo+D8aYJCsk1YnbyAnnQ8r8RH/kTK5Mw==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/tao/node_modules/@nx/nx-darwin-x64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.5.4.tgz", - "integrity": "sha512-GjA6aThF9P7FR3OdNZn4g9c1bJeQMOdQmo2jaBaGmUPnOIZSEWinHkvh5g8vDg+jNwRdHKK84jJWWW0/o73iYQ==", + "node_modules/@nx/nx-darwin-x64": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.5.3.tgz", + "integrity": "sha512-mToS41o8I+8CfxYVRMTISkgT7I1cnazgwMf7U9DoLqKOwOZzj9WD3NmsWc1h69QNJPltbeRPS8y/wnhu7RHzRA==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/tao/node_modules/@nx/nx-freebsd-x64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.5.4.tgz", - "integrity": "sha512-KPVTmg2NpvON3+sh2pNWv2GJow5CL3fX2xBo4cI9D50DDZOD4fB68S2v5q6nLC1QWOwQcC0PLnSpoKaDB0PgQg==", + "node_modules/@nx/nx-freebsd-x64": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.5.3.tgz", + "integrity": "sha512-CAWysdFSZVbTfdjNXojd9TgXbZiK9i0k3njROeV+jORsDWw4Eth3PDmK94Wk916b3n2hS0UjyI6RZaMy2GEqzA==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/tao/node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.5.4.tgz", - "integrity": "sha512-a535HwxVhTS+ngcoFxrsqmggpsKWquubILZhIeY/q+XW6nX61FEb/EqlMkc+aJLHD1LQBGax1W+j7YvTA/66Lw==", + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.5.3.tgz", + "integrity": "sha512-PRjPrijQQbdrvYwNuA3xQ3VXEQ4zfhnPjy+S2ZlQZqhFI4mlP22xfhOH1bQ7pIfzCNC2f/J9UMNYOrq/bEFjBg==", "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/tao/node_modules/@nx/nx-linux-arm64-gnu": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.5.4.tgz", - "integrity": "sha512-eRu/IoPB68MQeEmfyub+P79eDYvXOyNa706rp0JnDHL5LMw12kPF3MIeqc/v7o6xWakGHCSnTCulcqsl8HXryg==", + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.5.3.tgz", + "integrity": "sha512-dmDBio/5z4Zch2VlRMdgBPm53d8xwq1l7xLj1dFMKjfE7ByfPukjPM7ZEYBiPckfiQfJBRh6HKDN7uEkA/y8CQ==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/tao/node_modules/@nx/nx-linux-arm64-musl": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.5.4.tgz", - "integrity": "sha512-r5NNVngNwTe+zpUAAZAgCezDkjc0pi2zrr8VwiaRZsmVjhHtvvsXJgo1ONw5s2HjKoKuTFEa5jKTUlAHkaQ7Kg==", + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.5.3.tgz", + "integrity": "sha512-E81ET/MnnKfuLhKiovF5ueJirHOMjhC1eK0MDM2Do9wdPyusZzfGSVFQ9DOHtg7L37dAE95NNd1lCVO8gJ96vg==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/tao/node_modules/@nx/nx-linux-x64-gnu": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.5.4.tgz", - "integrity": "sha512-8TWwjyp/bK2a/CHK2HuC7I8iITC9ytEvfru8/kw1mSyoK4kSDlzkL/1uDl536ULXLWORulfEzaGb61GynVc1vg==", + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.5.3.tgz", + "integrity": "sha512-AgXCsPCzC0sAu2VRclMjs7LrvPQfqS3sFiehlXWTbNHQitPZLuAmQGb2l4T8lbMOs0Xn3EIrg6BF6/ntTTp6Xg==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/tao/node_modules/@nx/nx-linux-x64-musl": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.5.4.tgz", - "integrity": "sha512-5Pf32iv9nnmSV/oOHd9k/5L45m3BooSj096G/ejAN3BHMr4CZIMhjDcQq9ZX7pAZFchU5zL0+dNClK70QfA7PA==", + "node_modules/@nx/nx-linux-x64-musl": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.5.3.tgz", + "integrity": "sha512-sKs4bFQRu8Btxf5rMYKPsRVNxkQ2ey8sqoCyhJj8fwJF05DayK2ErJAR/rhtBK0c1NV7kQiKJA8nWBV3jnCdsg==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/tao/node_modules/@nx/nx-win32-arm64-msvc": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.5.4.tgz", - "integrity": "sha512-fyKGfde4Pq9r5qQMLIleujq7B5ta86y8RSPUruoN6zaGrNg6waqbpMdZUjjsg9L7PP9RPaMHPMubC21OnQQomQ==", + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.5.3.tgz", + "integrity": "sha512-KOCQLakSO5vl4D6et9qPytOAmkgq2IIuhI8A/g0xbD1LqrIlRPa+bdkZqOGpODYAk3NyKAk7hWHsqfXKHwwX6w==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/tao/node_modules/@nx/nx-win32-x64-msvc": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.5.4.tgz", - "integrity": "sha512-gcAr5zZQKiAxHZ7iUOVeMLf/KIh4EFbF07Q0uSmgGmUJL1u3mZTjeG57V1AMZbTQESGY43rgoymqVYkghc5Jlw==", + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.3.tgz", + "integrity": "sha512-a6ZB2La82RIHcz4nrt3H6RZaOa+xkC2IPzhU9hMo2gbkLdIxn8wyof8uGA0frncmIVHuLc3nFAhpBOgf4j6tMA==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ], - "engines": { - "node": ">= 10" - } + ] }, - "node_modules/@nrwl/tao/node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "node_modules/@nx/react": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/react/-/react-22.5.3.tgz", + "integrity": "sha512-Wc/9LZxxmrWFgKARw8nIC0yGFOMHvb/p5WDXbwYcaUUbYyyC9uSg7AcyRZt/UZ3WqhxhKm0SJCgpTlhFh+Dkxg==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "@nx/devkit": "22.5.3", + "@nx/eslint": "22.5.3", + "@nx/js": "22.5.3", + "@nx/module-federation": "22.5.3", + "@nx/rollup": "22.5.3", + "@nx/web": "22.5.3", + "@phenomnomnominal/tsquery": "~6.1.4", + "@svgr/webpack": "^8.0.1", + "express": "^4.21.2", + "http-proxy-middleware": "^3.0.5", + "minimatch": "10.2.1", + "picocolors": "^1.1.0", + "semver": "^7.6.3", + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "@nx/vite": "22.5.3" } }, - "node_modules/@nrwl/tao/node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.46", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", - "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", - "license": "BSD-2-Clause", + "node_modules/@nx/react/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=14.15.0" + "node": ">= 0.6" } }, - "node_modules/@nrwl/tao/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/@nx/react/node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@nrwl/tao/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/@nx/react/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/@nrwl/tao/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/@nx/react/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, "license": "MIT" }, - "node_modules/@nrwl/tao/node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "node_modules/@nx/react/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" + "ms": "2.0.0" } }, - "node_modules/@nrwl/tao/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/@nx/react/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/react/node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "dev": true, "license": "MIT", - "bin": { - "is-docker": "cli.js" + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.10.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@nrwl/tao/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/@nx/react/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/@nrwl/tao/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/@nx/react/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/@nrwl/tao/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/@nx/react/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@nrwl/tao/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/@nx/react/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/@nrwl/tao/node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "license": "MIT" - }, - "node_modules/@nrwl/tao/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/@nx/react/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nrwl/tao/node_modules/nx": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/nx/-/nx-19.5.4.tgz", - "integrity": "sha512-zfxIFe+29Na6GKlmPPzQhCjnBv5HoLaT43mYZdHh3BPrVOzWBCXNwxWROG1ZK9IcUepwySWq7NI/H3w8BGPEGg==", - "hasInstallScript": true, + "node_modules/@nx/react/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", - "dependencies": { - "@napi-rs/wasm-runtime": "0.2.4", - "@nrwl/tao": "19.5.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "3.0.0-rc.46", - "@zkochan/js-yaml": "0.0.7", - "axios": "^1.7.2", - "chalk": "^4.1.0", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^8.0.1", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", - "enquirer": "~2.3.6", - "figures": "3.2.0", - "flat": "^5.0.2", - "front-matter": "^4.0.2", - "fs-extra": "^11.1.0", - "ignore": "^5.0.4", - "jest-diff": "^29.4.1", - "jsonc-parser": "3.2.0", - "lines-and-columns": "~2.0.3", - "minimatch": "9.0.3", - "node-machine-id": "1.1.12", - "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "ora": "5.3.0", - "semver": "^7.5.3", - "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0", - "yargs": "^17.6.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "nx": "bin/nx.js", - "nx-cloud": "bin/nx-cloud.js" - }, - "optionalDependencies": { - "@nx/nx-darwin-arm64": "19.5.4", - "@nx/nx-darwin-x64": "19.5.4", - "@nx/nx-freebsd-x64": "19.5.4", - "@nx/nx-linux-arm-gnueabihf": "19.5.4", - "@nx/nx-linux-arm64-gnu": "19.5.4", - "@nx/nx-linux-arm64-musl": "19.5.4", - "@nx/nx-linux-x64-gnu": "19.5.4", - "@nx/nx-linux-x64-musl": "19.5.4", - "@nx/nx-win32-arm64-msvc": "19.5.4", - "@nx/nx-win32-x64-msvc": "19.5.4" - }, - "peerDependencies": { - "@swc-node/register": "^1.8.0", - "@swc/core": "^1.3.85" - }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } + "engines": { + "node": ">= 0.6" } }, - "node_modules/@nrwl/tao/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/@nx/react/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/@nrwl/tao/node_modules/ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "node_modules/@nx/react/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "license": "MIT", - "dependencies": { - "bl": "^4.0.3", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/@nrwl/tao/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", + "node_modules/@nx/react/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/react/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "side-channel": "^1.1.0" }, "engines": { - "node": ">= 6" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@nrwl/tao/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/@nx/react/node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, "license": "MIT", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/@nrwl/tao/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/@nrwl/tao/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@nx/react/node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/@nrwl/tao/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "node_modules/@nx/react/node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" }, "engines": { - "node": ">=6" + "node": ">= 0.8.0" } }, - "node_modules/@nrwl/tao/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/@nx/react/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.5.4.tgz", - "integrity": "sha512-0vrhaotIhuNbP5qeKBC0xC9sEZfpPfUG27lf/mVWdkRCreJXFrIJL+R74care9gnDr9ZFR8a1LalYB1JuG5QWA==", + "node_modules/@nx/rollup": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/rollup/-/rollup-22.5.3.tgz", + "integrity": "sha512-Um9xCcUeSb35OX+UH1CZk4DbQPXItRbn8ehJPmgOo9s+TtPTbdVWhUVb9chiqvmluSw0ELA3zjZf6XINiP95BQ==", + "dev": true, "license": "MIT", "dependencies": { - "@nx/workspace": "19.5.4" + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-image": "^3.0.3", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-typescript": "^12.1.0", + "autoprefixer": "^10.4.9", + "concat-with-sourcemaps": "^1.1.0", + "picocolors": "^1.1.0", + "picomatch": "4.0.2", + "postcss": "^8.4.38", + "postcss-modules": "^6.0.1", + "rollup": "^4.14.0", + "rollup-plugin-typescript2": "^0.36.0", + "tslib": "^2.3.0" } }, - "node_modules/@nrwl/workspace/node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", - "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "node_modules/@nx/rollup/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, "license": "MIT", - "dependencies": { - "@emnapi/core": "^1.1.0", - "@emnapi/runtime": "^1.1.0", - "@tybys/wasm-util": "^0.9.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/devkit": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.5.4.tgz", - "integrity": "sha512-0TG2iU0xVRuElLP2aLeRSKUynsC+UgHqE/FJW2IcglHngs2/Duw2A4HDUVVOxztkEQPmp736qkYSwFO0nlOGxg==", + "node_modules/@nx/rspack": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-22.5.3.tgz", + "integrity": "sha512-2T5dkoC08FJGF8ZMiJDaKN6giXAljV0+LK7q5GJpSEUm+wtjZ/DRVoWSnlf8Dj/e0/cLb2GMElVcfjyDDDeV9w==", + "dev": true, "license": "MIT", "dependencies": { - "@nrwl/devkit": "19.5.4", - "ejs": "^3.1.7", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@nx/module-federation": "22.5.3", + "@nx/web": "22.5.3", + "@phenomnomnominal/tsquery": "~6.1.4", + "@rspack/core": "1.6.8", + "@rspack/dev-server": "^1.1.4", + "@rspack/plugin-react-refresh": "^1.0.0", + "autoprefixer": "^10.4.9", + "browserslist": "^4.26.0", + "css-loader": "^6.4.0", "enquirer": "~2.3.6", - "ignore": "^5.0.4", - "minimatch": "9.0.3", - "semver": "^7.5.3", - "tmp": "~0.2.1", + "express": "^4.21.2", + "http-proxy-middleware": "^3.0.5", + "less-loader": "^11.1.0", + "license-webpack-plugin": "^4.0.2", + "loader-utils": "^2.0.3", + "parse5": "4.0.0", + "picocolors": "^1.1.0", + "postcss": "^8.4.38", + "postcss-import": "~14.1.0", + "postcss-loader": "^8.1.1", + "sass": "^1.85.0", + "sass-embedded": "^1.83.4", + "sass-loader": "^16.0.4", + "source-map-loader": "^5.0.0", + "style-loader": "^3.3.0", + "ts-checker-rspack-plugin": "^1.1.1", "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "webpack": "^5.101.3", + "webpack-node-externals": "^3.0.0" }, "peerDependencies": { - "nx": ">= 17 <= 20" + "@module-federation/enhanced": "^0.21.2", + "@module-federation/node": "^2.7.21" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/nx-darwin-arm64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.5.4.tgz", - "integrity": "sha512-s+OmSsYUtECmEKAdzSsYoO9vamx+njiP72eSZusmTh7fCJg+dW3dcifRkUf3h1dcM53hffXcmxKEoWxZMAeuXw==", - "cpu": [ - "arm64" - ], + "node_modules/@nx/rspack/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, "engines": { - "node": ">= 10" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/nx-darwin-x64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.5.4.tgz", - "integrity": "sha512-GjA6aThF9P7FR3OdNZn4g9c1bJeQMOdQmo2jaBaGmUPnOIZSEWinHkvh5g8vDg+jNwRdHKK84jJWWW0/o73iYQ==", - "cpu": [ - "x64" - ], + "node_modules/@nx/rspack/node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, "engines": { - "node": ">= 10" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/nx-freebsd-x64": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.5.4.tgz", - "integrity": "sha512-KPVTmg2NpvON3+sh2pNWv2GJow5CL3fX2xBo4cI9D50DDZOD4fB68S2v5q6nLC1QWOwQcC0PLnSpoKaDB0PgQg==", - "cpu": [ - "x64" - ], + "node_modules/@nx/rspack/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">= 10" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.5.4.tgz", - "integrity": "sha512-a535HwxVhTS+ngcoFxrsqmggpsKWquubILZhIeY/q+XW6nX61FEb/EqlMkc+aJLHD1LQBGax1W+j7YvTA/66Lw==", - "cpu": [ - "arm" - ], + "node_modules/@nx/rspack/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/rspack/node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, "engines": { - "node": ">= 10" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@nrwl/workspace/node_modules/@nx/nx-linux-arm64-gnu": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.5.4.tgz", - "integrity": "sha512-eRu/IoPB68MQeEmfyub+P79eDYvXOyNa706rp0JnDHL5LMw12kPF3MIeqc/v7o6xWakGHCSnTCulcqsl8HXryg==", - "cpu": [ - "arm64" - ], + "node_modules/@nx/rspack/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/nx-linux-arm64-musl": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.5.4.tgz", - "integrity": "sha512-r5NNVngNwTe+zpUAAZAgCezDkjc0pi2zrr8VwiaRZsmVjhHtvvsXJgo1ONw5s2HjKoKuTFEa5jKTUlAHkaQ7Kg==", - "cpu": [ - "arm64" - ], + "node_modules/@nx/rspack/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/rspack/node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, "engines": { - "node": ">= 10" + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/nx-linux-x64-gnu": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.5.4.tgz", - "integrity": "sha512-8TWwjyp/bK2a/CHK2HuC7I8iITC9ytEvfru8/kw1mSyoK4kSDlzkL/1uDl536ULXLWORulfEzaGb61GynVc1vg==", - "cpu": [ - "x64" - ], + "node_modules/@nx/rspack/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, "engines": { - "node": ">= 10" + "node": ">= 0.8" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/nx-linux-x64-musl": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.5.4.tgz", - "integrity": "sha512-5Pf32iv9nnmSV/oOHd9k/5L45m3BooSj096G/ejAN3BHMr4CZIMhjDcQq9ZX7pAZFchU5zL0+dNClK70QfA7PA==", - "cpu": [ - "x64" - ], + "node_modules/@nx/rspack/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 10" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/nx-win32-arm64-msvc": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.5.4.tgz", - "integrity": "sha512-fyKGfde4Pq9r5qQMLIleujq7B5ta86y8RSPUruoN6zaGrNg6waqbpMdZUjjsg9L7PP9RPaMHPMubC21OnQQomQ==", - "cpu": [ - "arm64" - ], + "node_modules/@nx/rspack/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/nx-win32-x64-msvc": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.5.4.tgz", - "integrity": "sha512-gcAr5zZQKiAxHZ7iUOVeMLf/KIh4EFbF07Q0uSmgGmUJL1u3mZTjeG57V1AMZbTQESGY43rgoymqVYkghc5Jlw==", - "cpu": [ - "x64" - ], + "node_modules/@nx/rspack/node_modules/less-loader": { + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.4.tgz", + "integrity": "sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">= 10" + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" } }, - "node_modules/@nrwl/workspace/node_modules/@nx/workspace": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.5.4.tgz", - "integrity": "sha512-GI3uMJYwPxjPGHA0UuXZtIqf/fgiCDq63Ns7zpdzwaeOvQbtHySFVV6zclXx/3dXjJsBpEiOYNKPGf17jqx6Dw==", + "node_modules/@nx/rspack/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, "license": "MIT", "dependencies": { - "@nrwl/workspace": "19.5.4", - "@nx/devkit": "19.5.4", - "chalk": "^4.1.0", - "enquirer": "~2.3.6", - "nx": "19.5.4", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, - "node_modules/@nrwl/workspace/node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "node_modules/@nx/rspack/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.46", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", - "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", - "license": "BSD-2-Clause", - "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" - }, + "node_modules/@nx/rspack/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/rspack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/@nx/rspack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/@nx/rspack/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/@nx/rspack/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, "license": "MIT" }, - "node_modules/@nrwl/workspace/node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", + "node_modules/@nx/rspack/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@nrwl/workspace/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" + "side-channel": "^1.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@nrwl/workspace/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/@nx/rspack/node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/@nrwl/workspace/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/@nx/rspack/node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/@nrwl/workspace/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/@nx/rspack/node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@nrwl/workspace/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/@nx/rspack/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "license": "MIT" - }, - "node_modules/@nrwl/workspace/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/@nx/vite": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/vite/-/vite-22.5.3.tgz", + "integrity": "sha512-XvaCVIqNnWHF46in+q/hfiDr6YmPvO0416aMwzID4MTom/LdBiKS7Vh4oVShzXqzOZVTvawO+dKAA5zaqvBAaw==", + "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@nx/vitest": "22.5.3", + "@phenomnomnominal/tsquery": "~6.1.4", + "ajv": "^8.0.0", + "enquirer": "~2.3.6", + "picomatch": "4.0.2", + "semver": "^7.6.3", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", + "vitest": "^1.3.1 || ^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/@nx/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@nrwl/workspace/node_modules/nx": { - "version": "19.5.4", - "resolved": "https://registry.npmjs.org/nx/-/nx-19.5.4.tgz", - "integrity": "sha512-zfxIFe+29Na6GKlmPPzQhCjnBv5HoLaT43mYZdHh3BPrVOzWBCXNwxWROG1ZK9IcUepwySWq7NI/H3w8BGPEGg==", - "hasInstallScript": true, + "node_modules/@nx/vitest": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/vitest/-/vitest-22.5.3.tgz", + "integrity": "sha512-ZsDbiDqdGSPld/3thGqkzhY/seV08374mWZxZu1NoIT0RQnRF70GjlYXh+97Gzkm7L3s1269JKfzyVFRPjTzjQ==", + "dev": true, "license": "MIT", "dependencies": { - "@napi-rs/wasm-runtime": "0.2.4", - "@nrwl/tao": "19.5.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "3.0.0-rc.46", - "@zkochan/js-yaml": "0.0.7", - "axios": "^1.7.2", - "chalk": "^4.1.0", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^8.0.1", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", - "enquirer": "~2.3.6", - "figures": "3.2.0", - "flat": "^5.0.2", - "front-matter": "^4.0.2", - "fs-extra": "^11.1.0", - "ignore": "^5.0.4", - "jest-diff": "^29.4.1", - "jsonc-parser": "3.2.0", - "lines-and-columns": "~2.0.3", - "minimatch": "9.0.3", - "node-machine-id": "1.1.12", - "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "ora": "5.3.0", - "semver": "^7.5.3", - "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0", - "yargs": "^17.6.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "nx": "bin/nx.js", - "nx-cloud": "bin/nx-cloud.js" - }, - "optionalDependencies": { - "@nx/nx-darwin-arm64": "19.5.4", - "@nx/nx-darwin-x64": "19.5.4", - "@nx/nx-freebsd-x64": "19.5.4", - "@nx/nx-linux-arm-gnueabihf": "19.5.4", - "@nx/nx-linux-arm64-gnu": "19.5.4", - "@nx/nx-linux-arm64-musl": "19.5.4", - "@nx/nx-linux-x64-gnu": "19.5.4", - "@nx/nx-linux-x64-musl": "19.5.4", - "@nx/nx-win32-arm64-msvc": "19.5.4", - "@nx/nx-win32-x64-msvc": "19.5.4" + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@phenomnomnominal/tsquery": "~6.1.4", + "semver": "^7.6.3", + "tslib": "^2.3.0" }, "peerDependencies": { - "@swc-node/register": "^1.8.0", - "@swc/core": "^1.3.85" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", + "vitest": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" }, "peerDependenciesMeta": { - "@swc-node/register": { + "vite": { "optional": true }, - "@swc/core": { + "vitest": { "optional": true } } }, - "node_modules/@nrwl/workspace/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/@nx/web": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-22.5.3.tgz", + "integrity": "sha512-Z7FYN5e9HIJAuJV0MU8jHaoEv9vgiLbpe1bbWPItfzIy02kWtSiS/aGZcLa34LDuWBfBaJVHZqFVp7OOPU26ew==", + "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "detect-port": "^1.5.1", + "http-server": "^14.1.0", + "picocolors": "^1.1.0", + "tslib": "^2.3.0" } }, - "node_modules/@nrwl/workspace/node_modules/ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "node_modules/@nx/webpack": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-22.5.3.tgz", + "integrity": "sha512-fEWvmynjxAfdyCH00Z3oaEedv/wKZAdHl8kz7UEiOJ7eKdGbbJIK0RuobXC1r2e2ERZ35vDrOiPYdruyfi35Jg==", + "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.0.3", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, + "@babel/core": "^7.23.2", + "@nx/devkit": "22.5.3", + "@nx/js": "22.5.3", + "@phenomnomnominal/tsquery": "~6.1.4", + "ajv": "^8.12.0", + "autoprefixer": "^10.4.9", + "babel-loader": "^9.1.2", + "browserslist": "^4.26.0", + "copy-webpack-plugin": "^10.2.4", + "css-loader": "^6.4.0", + "css-minimizer-webpack-plugin": "^5.0.0", + "fork-ts-checker-webpack-plugin": "7.2.13", + "less": "^4.1.3", + "less-loader": "^11.1.0", + "license-webpack-plugin": "^4.0.2", + "loader-utils": "^2.0.3", + "mini-css-extract-plugin": "~2.4.7", + "parse5": "4.0.0", + "picocolors": "^1.1.0", + "postcss": "^8.4.38", + "postcss-import": "~14.1.0", + "postcss-loader": "^6.1.1", + "rxjs": "^7.8.0", + "sass": "^1.85.0", + "sass-embedded": "^1.83.4", + "sass-loader": "^16.0.4", + "source-map-loader": "^5.0.0", + "style-loader": "^3.3.0", + "terser-webpack-plugin": "^5.3.3", + "ts-loader": "^9.3.1", + "tsconfig-paths-webpack-plugin": "4.2.0", + "tslib": "^2.3.0", + "webpack": "^5.101.3", + "webpack-dev-server": "^5.2.1", + "webpack-node-externals": "^3.0.0", + "webpack-subresource-integrity": "^5.1.0" + } + }, + "node_modules/@nx/webpack/node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nrwl/workspace/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/@nx/webpack/node_modules/babel-loader": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/@nrwl/workspace/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "node": ">= 14.15.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, - "node_modules/@nrwl/workspace/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/@nrwl/workspace/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@nx/webpack/node_modules/copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@nrwl/workspace/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "license": "MIT", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "node": ">= 12.20.0" }, - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" } }, - "node_modules/@nrwl/workspace/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/@nx/webpack/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/@nx/angular": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-22.5.3.tgz", - "integrity": "sha512-Z5vNcPl95CsTnRhDszWZ0ort22dEtMxdqJFkVzdNwolhfiLm1eKP2Rc8q9MnUdrZMeTqDKnCckG2qs12FZrIkw==", + "node_modules/@nx/webpack/node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/eslint": "22.5.3", - "@nx/js": "22.5.3", - "@nx/module-federation": "22.5.3", - "@nx/rspack": "22.5.3", - "@nx/web": "22.5.3", - "@nx/webpack": "22.5.3", - "@nx/workspace": "22.5.3", - "@phenomnomnominal/tsquery": "~6.1.4", - "@typescript-eslint/type-utils": "^8.0.0", - "enquirer": "~2.3.6", - "magic-string": "~0.30.2", - "picocolors": "^1.1.0", - "picomatch": "4.0.2", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "webpack-merge": "^5.8.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@angular-devkit/build-angular": ">= 19.0.0 < 22.0.0", - "@angular-devkit/core": ">= 19.0.0 < 22.0.0", - "@angular-devkit/schematics": ">= 19.0.0 < 22.0.0", - "@angular/build": ">= 19.0.0 < 22.0.0", - "@schematics/angular": ">= 19.0.0 < 22.0.0", - "ng-packagr": ">= 19.0.0 < 22.0.0", - "rxjs": "^6.5.3 || ^7.5.0" + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "@angular-devkit/build-angular": { - "optional": true - }, - "@angular/build": { + "@rspack/core": { "optional": true }, - "ng-packagr": { + "webpack": { "optional": true } } }, - "node_modules/@nx/angular/node_modules/@phenomnomnominal/tsquery": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", - "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "node_modules/@nx/webpack/node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, "license": "MIT", "dependencies": { - "@types/esquery": "^1.5.0", - "esquery": "^1.5.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, - "peerDependencies": { - "typescript": "^3 || ^4 || ^5" - } - }, - "node_modules/@nx/angular/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/angular/node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "node_modules/@nx/webpack/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "license": "MIT", "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">=10.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/devkit": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.5.3.tgz", - "integrity": "sha512-zhRNTFsi4pbwg7L/zhBHtTOSevlgwm1iKlhPlQWoOv2PR6b+3JvjL8o4P1MbkIkut3Lsn+oTuJJ1LUPlr5vprg==", + "node_modules/@nx/webpack/node_modules/globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", "dev": true, "license": "MIT", "dependencies": { - "@zkochan/js-yaml": "0.0.7", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", - "minimatch": "10.2.1", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, - "peerDependencies": { - "nx": ">= 21 <= 23 || ^22.0.0-0" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/devkit/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "node_modules/@nx/webpack/node_modules/less-loader": { + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.4.tgz", + "integrity": "sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==", "dev": true, "license": "MIT", "engines": { - "node": "18 || 20 || >=22" + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" } }, - "node_modules/@nx/devkit/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "node_modules/@nx/webpack/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=8.9.0" } }, - "node_modules/@nx/devkit/node_modules/minimatch": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", - "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", + "node_modules/@nx/webpack/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.2" + "p-locate": "^6.0.0" }, "engines": { - "node": "20 || >=22" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/eslint": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-22.5.3.tgz", - "integrity": "sha512-XJKpwnSJRCat+81sUDdJWWvKz3vKo/3X9oHMGDzTYx3mexCgKgpmHBuRVgnZ9n2IVDx8S5ye4ICc9qiY6oHWIA==", + "node_modules/@nx/webpack/node_modules/mini-css-extract-plugin": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", + "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "typescript": "~5.9.2" + "schema-utils": "^4.0.0" }, - "peerDependencies": { - "@zkochan/js-yaml": "0.0.7", - "eslint": "^8.0.0 || ^9.0.0 || ^10.0.0" + "engines": { + "node": ">= 12.13.0" }, - "peerDependenciesMeta": { - "@zkochan/js-yaml": { - "optional": true - } - } - }, - "node_modules/@nx/eslint-plugin": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-22.5.3.tgz", - "integrity": "sha512-dFz3nSUOV+VLc+ZQxWncKINhych6h5oEfInWp1+5WkeUBW5/x77IsM3Hpq1JrjAK6dqXjmzTsFnoU8c5Cf1Q4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@phenomnomnominal/tsquery": "~6.1.4", - "@typescript-eslint/type-utils": "^8.0.0", - "@typescript-eslint/utils": "^8.0.0", - "chalk": "^4.1.0", - "confusing-browser-globals": "^1.0.9", - "globals": "^15.9.0", - "jsonc-eslint-parser": "^2.1.0", - "semver": "^7.6.3", - "tslib": "^2.3.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.13.2 || ^7.0.0 || ^8.0.0", - "eslint-config-prettier": "^10.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } + "webpack": "^5.0.0" } }, - "node_modules/@nx/eslint-plugin/node_modules/@phenomnomnominal/tsquery": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", - "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "node_modules/@nx/webpack/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/esquery": "^1.5.0", - "esquery": "^1.5.0" + "yocto-queue": "^1.0.0" }, - "peerDependencies": { - "typescript": "^3 || ^4 || ^5" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", - "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", + "node_modules/@nx/webpack/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0" + "p-limit": "^4.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", - "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", + "node_modules/@nx/webpack/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", - "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", + "node_modules/@nx/webpack/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.47.0", - "@typescript-eslint/tsconfig-utils": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" + "find-up": "^6.3.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=14.16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", - "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", + "node_modules/@nx/webpack/node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0" + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" } }, - "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", - "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", + "node_modules/@nx/webpack/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.47.0", - "eslint-visitor-keys": "^4.2.1" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "node_modules/@nx/webpack/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 6" } }, - "node_modules/@nx/eslint-plugin/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "node_modules/@nx/workspace": { + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-22.5.3.tgz", + "integrity": "sha512-pioGwlt5zKB9PhX36I5KAeSml19Mq+g2KyQ9mh3F+3Lvft2JM4nIMELBaUfwPicPAOwNmrsx806IXO67Q4UHxQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@nx/devkit": "22.5.3", + "@zkochan/js-yaml": "0.0.7", + "chalk": "^4.1.0", + "enquirer": "~2.3.6", + "nx": "22.5.3", + "picomatch": "4.0.2", + "semver": "^7.6.3", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" } }, - "node_modules/@nx/eslint-plugin/node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "node_modules/@nx/workspace/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", "engines": { - "node": ">=18.12" + "node": ">=12" }, - "peerDependencies": { - "typescript": ">=4.8.4" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@nx/eslint/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@nx/jest": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-22.5.3.tgz", - "integrity": "sha512-4yaGlApTR09zdz4fC4Ep0aENcaon5rDRDOUnEJblU67ik35jds9mczHq2rBMJO4Cnjj1pM9acm08Vb0Wg+9cuQ==", + "node_modules/@octokit/auth-token": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/reporters": "^30.0.2", - "@jest/test-result": "^30.0.2", - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@phenomnomnominal/tsquery": "~6.1.4", - "identity-obj-proxy": "3.0.0", - "jest-config": "^30.0.2", - "jest-resolve": "^30.0.2", - "jest-util": "^30.0.2", - "minimatch": "10.2.1", - "picocolors": "^1.1.0", - "resolve.exports": "2.0.3", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "engines": { + "node": ">= 20" } }, - "node_modules/@nx/jest/node_modules/@jest/console": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "node_modules/@octokit/core": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", + "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.3", + "@octokit/request": "^10.0.6", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 20" } }, - "node_modules/@nx/jest/node_modules/@jest/environment": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", - "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "node_modules/@octokit/endpoint": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz", + "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0" + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 20" } }, - "node_modules/@nx/jest/node_modules/@jest/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", + "node_modules/@octokit/graphql": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", + "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", "dev": true, "license": "MIT", "dependencies": { - "expect": "30.2.0", - "jest-snapshot": "30.2.0" + "@octokit/request": "^10.0.6", + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 20" } }, - "node_modules/@nx/jest/node_modules/@jest/expect-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", - "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "node_modules/@octokit/openapi-types": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "MIT" }, - "node_modules/@nx/jest/node_modules/@jest/fake-timers": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", - "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "node_modules/@octokit/plugin-paginate-rest": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", + "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "@octokit/types": "^16.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" } }, - "node_modules/@nx/jest/node_modules/@jest/globals": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", - "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", + "node_modules/@octokit/plugin-retry": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.1.0.tgz", + "integrity": "sha512-O1FZgXeiGb2sowEr/hYTr6YunGdSAFWnr2fyW39Ah85H8O33ELASQxcvOFF5LE6Tjekcyu2ms4qAzJVhSaJxTw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.2.0", - "@jest/expect": "30.2.0", - "@jest/types": "30.2.0", - "jest-mock": "30.2.0" + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "bottleneck": "^2.15.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=7" } }, - "node_modules/@nx/jest/node_modules/@jest/reporters": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", - "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", + "node_modules/@octokit/plugin-throttling": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.3.tgz", + "integrity": "sha512-34eE0RkFCKycLl2D2kq7W+LovheM/ex3AwZCYN8udpi6bxsyjZidb2McXs69hZhLmJlDqTSP8cH+jSRpiaijBg==", "dev": true, "license": "MIT", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" + "@octokit/types": "^16.0.0", + "bottleneck": "^2.15.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 20" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "@octokit/core": "^7.0.0" } }, - "node_modules/@nx/jest/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/@octokit/request": { + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.8.tgz", + "integrity": "sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@octokit/endpoint": "^11.0.3", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "fast-content-type-parse": "^3.0.0", + "json-with-bigint": "^3.5.3", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 20" } }, - "node_modules/@nx/jest/node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "node_modules/@octokit/request-error": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", + "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" + "@octokit/types": "^16.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 20" } }, - "node_modules/@nx/jest/node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "node_modules/@octokit/types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@octokit/openapi-types": "^27.0.0" } }, - "node_modules/@nx/jest/node_modules/@jest/test-sequencer": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", - "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" + }, + "node_modules/@oxc-project/types": { + "version": "0.106.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.106.0.tgz", + "integrity": "sha512-QdsH3rZq480VnOHSHgPYOhjL8O8LBdcnSjM408BpPCCUc0JYYZPG9Gafl9i3OcGk/7137o+gweb4cCv3WAUykg==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/test-result": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "funding": { + "url": "https://github.com/sponsors/Boshen" } }, - "node_modules/@nx/jest/node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "node_modules/@oxc-resolver/binding-android-arm-eabi": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.19.1.tgz", + "integrity": "sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@nx/jest/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "node_modules/@oxc-resolver/binding-android-arm64": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.19.1.tgz", + "integrity": "sha512-oolbkRX+m7Pq2LNjr/kKgYeC7bRDMVTWPgxBGMjSpZi/+UskVo4jsMU3MLheZV55jL6c3rNelPl4oD60ggYmqA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@nx/jest/node_modules/@phenomnomnominal/tsquery": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", - "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "node_modules/@oxc-resolver/binding-darwin-arm64": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.19.1.tgz", + "integrity": "sha512-nUC6d2i3R5B12sUW4O646qD5cnMXf2oBGPLIIeaRfU9doJRORAbE2SGv4eW6rMqhD+G7nf2Y8TTJTLiiO3Q/dQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/esquery": "^1.5.0", - "esquery": "^1.5.0" - }, - "peerDependencies": { - "typescript": "^3 || ^4 || ^5" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@nx/jest/node_modules/@sinclair/typebox": { - "version": "0.34.47", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", - "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", + "node_modules/@oxc-resolver/binding-darwin-x64": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.19.1.tgz", + "integrity": "sha512-cV50vE5+uAgNcFa3QY1JOeKDSkM/9ReIcc/9wn4TavhW/itkDGrXhw9jaKnkQnGbjJ198Yh5nbX/Gr2mr4Z5jQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@nx/jest/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "node_modules/@oxc-resolver/binding-freebsd-x64": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.19.1.tgz", + "integrity": "sha512-xZOQiYGFxtk48PBKff+Zwoym7ScPAIVp4c14lfLxizO2LTTTJe5sx9vQNGrBymrf/vatSPNMD4FgsaaRigPkqw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@nx/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.19.1.tgz", + "integrity": "sha512-lXZYWAC6kaGe/ky2su94e9jN9t6M0/6c+GrSlCqL//XO1cxi5lpAhnJYdyrKfm0ZEr/c7RNyAx3P7FSBcBd5+A==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/jest/node_modules/babel-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", - "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", + "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.19.1.tgz", + "integrity": "sha512-veG1kKsuK5+t2IsO9q0DErYVSw2azvCVvWHnfTOS73WE0STdLLB7Q1bB9WR+yHPQM76ASkFyRbogWo1GR1+WbQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/transform": "30.2.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/jest/node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" + "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.19.1.tgz", + "integrity": "sha512-heV2+jmXyYnUrpUXSPugqWDRpnsQcDm2AX4wzTuvgdlZfoNYO0O3W2AVpJYaDn9AG4JdM6Kxom8+foE7/BcSig==", + "cpu": [ + "arm64" ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@nx/jest/node_modules/babel-plugin-jest-hoist": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", - "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", "dev": true, "license": "MIT", - "dependencies": { - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/jest/node_modules/babel-preset-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", - "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", + "node_modules/@oxc-resolver/binding-linux-arm64-musl": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.19.1.tgz", + "integrity": "sha512-jvo2Pjs1c9KPxMuMPIeQsgu0mOJF9rEb3y3TdpsrqwxRM+AN6/nDDwv45n5ZrUnQMsdBy5gIabioMKnQfWo9ew==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/jest/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.19.1.tgz", + "integrity": "sha512-vLmdNxWCdN7Uo5suays6A/+ywBby2PWBBPXctWPg5V0+eVuzsJxgAn6MMB4mPlshskYbppjpN2Zg83ArHze9gQ==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/jest/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.19.1.tgz", + "integrity": "sha512-/b+WgR+VTSBxzgOhDO7TlMXC1ufPIMR6Vj1zN+/x+MnyXGW7prTLzU9eW85Aj7Th7CCEG9ArCbTeqxCzFWdg2w==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/jest/node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } + "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.19.1.tgz", + "integrity": "sha512-YlRdeWb9j42p29ROh+h4eg/OQ3dTJlpHSa+84pUM9+p6i3djtPz1q55yLJhgW9XfDch7FN1pQ/Vd6YP+xfRIuw==", + "cpu": [ + "riscv64" ], + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/jest/node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.19.1.tgz", + "integrity": "sha512-EDpafVOQWF8/MJynsjOGFThcqhRHy417sRyLfQmeiamJ8qVhSKAn2Dn2VVKUGCjVB9C46VGjhNo7nOPUi1x6uA==", + "cpu": [ + "s390x" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/jest/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "node_modules/@oxc-resolver/binding-linux-x64-gnu": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.19.1.tgz", + "integrity": "sha512-NxjZe+rqWhr+RT8/Ik+5ptA3oz7tUw361Wa5RWQXKnfqwSSHdHyrw6IdcTfYuml9dM856AlKWZIUXDmA9kkiBQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/jest/node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "node_modules/@oxc-resolver/binding-linux-x64-musl": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.19.1.tgz", + "integrity": "sha512-cM/hQwsO3ReJg5kR+SpI69DMfvNCp+A/eVR4b4YClE5bVZwz8rh2Nh05InhwI5HR/9cArbEkzMjcKgTHS6UaNw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/jest/node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "node_modules/@oxc-resolver/binding-openharmony-arm64": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.19.1.tgz", + "integrity": "sha512-QF080IowFB0+9Rh6RcD19bdgh49BpQHUW5TajG1qvWHvmrQznTZZjYlgE2ltLXyKY+qs4F/v5xuX1XS7Is+3qA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@oxc-resolver/binding-wasm32-wasi": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.19.1.tgz", + "integrity": "sha512-w8UCKhX826cP/ZLokXDS6+milN8y4X7zidsAttEdWlVoamTNf6lhBJldaWr3ukTDiye7s4HRcuPEPOXNC432Vg==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" + "@napi-rs/wasm-runtime": "^1.1.1" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" } }, - "node_modules/@nx/jest/node_modules/jest-circus": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", - "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", + "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@jest/environment": "30.2.0", - "@jest/expect": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-runtime": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "p-limit": "^3.1.0", - "pretty-format": "30.2.0", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" } }, - "node_modules/@nx/jest/node_modules/jest-config": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", - "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.19.1.tgz", + "integrity": "sha512-nJ4AsUVZrVKwnU/QRdzPCCrO0TrabBqgJ8pJhXITdZGYOV28TIYystV1VFLbQ7DtAcaBHpocT5/ZJnF78YJPtQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.19.1.tgz", + "integrity": "sha512-EW+ND5q2Tl+a3pH81l1QbfgbF3HmqgwLfDfVithRFheac8OTcnbXt/JxqD2GbDkb7xYEqy1zNaVFRr3oeG8npA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxc-resolver/binding-win32-x64-msvc": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.19.1.tgz", + "integrity": "sha512-6hIU3RQu45B+VNTY4Ru8ppFwjVS/S5qwYyGhBotmjxfEKk41I2DlGtRfGJndZ5+6lneE2pwloqunlOyZuX/XAw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", "dev": true, + "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.1.0", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.2.0", - "@jest/types": "30.2.0", - "babel-jest": "30.2.0", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-circus": "30.2.0", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-runner": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "micromatch": "^4.0.8", - "parse-json": "^5.2.0", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" } }, - "node_modules/@nx/jest/node_modules/jest-diff": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", - "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.0.1", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.2.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-each": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", - "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "jest-util": "30.2.0", - "pretty-format": "30.2.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-environment-node": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", - "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-leak-detector": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", - "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.2.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-matcher-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", - "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.2.0", - "pretty-format": "30.2.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-message-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-resolve": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", - "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-runner": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", - "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "30.2.0", - "@jest/environment": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.2.0", - "jest-haste-map": "30.2.0", - "jest-leak-detector": "30.2.0", - "jest-message-util": "30.2.0", - "jest-resolve": "30.2.0", - "jest-runtime": "30.2.0", - "jest-util": "30.2.0", - "jest-watcher": "30.2.0", - "jest-worker": "30.2.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/jest/node_modules/jest-runtime": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", - "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/globals": "30.2.0", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true }, - "node_modules/@nx/jest/node_modules/jest-snapshot": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", - "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "node_modules/@peculiar/asn1-cms": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz", + "integrity": "sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "pretty-format": "30.2.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-x509-attr": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@nx/jest/node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "node_modules/@peculiar/asn1-csr": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz", + "integrity": "sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@nx/jest/node_modules/jest-validate": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", - "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", + "node_modules/@peculiar/asn1-ecc": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz", + "integrity": "sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@nx/jest/node_modules/jest-watcher": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", - "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", + "node_modules/@peculiar/asn1-pfx": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz", + "integrity": "sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.2.0", - "string-length": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@peculiar/asn1-cms": "^2.6.1", + "@peculiar/asn1-pkcs8": "^2.6.1", + "@peculiar/asn1-rsa": "^2.6.1", + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@nx/jest/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz", + "integrity": "sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@nx/jest/node_modules/minimatch": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", - "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz", + "integrity": "sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@peculiar/asn1-cms": "^2.6.1", + "@peculiar/asn1-pfx": "^2.6.1", + "@peculiar/asn1-pkcs8": "^2.6.1", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-x509-attr": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@nx/jest/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/@peculiar/asn1-rsa": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz", + "integrity": "sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@nx/jest/node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/@nx/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nx/jest/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@peculiar/asn1-schema": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", + "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" } }, - "node_modules/@nx/jest/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "node_modules/@peculiar/asn1-x509": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz", + "integrity": "sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==", "dev": true, "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" } }, - "node_modules/@nx/jest/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz", + "integrity": "sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@nx/jest/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "node_modules/@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@nx/js": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-22.5.3.tgz", - "integrity": "sha512-gglQYL6GeSH0mt6NpEFTXMFFFePU3B7TEyZq7LLUYZDH5y65izgNpdSAuEqYR7xHLtahVnesDlhPw3rtRiwMwA==", + "node_modules/@phenomnomnominal/tsquery": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", + "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.23.2", - "@babel/plugin-proposal-decorators": "^7.22.7", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-runtime": "^7.23.2", - "@babel/preset-env": "^7.23.2", - "@babel/preset-typescript": "^7.22.5", - "@babel/runtime": "^7.22.6", - "@nx/devkit": "22.5.3", - "@nx/workspace": "22.5.3", - "@zkochan/js-yaml": "0.0.7", - "babel-plugin-const-enum": "^1.0.1", - "babel-plugin-macros": "^3.1.0", - "babel-plugin-transform-typescript-metadata": "^0.3.1", - "chalk": "^4.1.0", - "columnify": "^1.6.0", - "detect-port": "^1.5.1", - "ignore": "^5.0.4", - "js-tokens": "^4.0.0", - "jsonc-parser": "3.2.0", - "npm-run-path": "^4.0.1", - "picocolors": "^1.1.0", - "picomatch": "4.0.2", - "semver": "^7.6.3", - "source-map-support": "0.5.19", - "tinyglobby": "^0.2.12", - "tslib": "^2.3.0" + "@types/esquery": "^1.5.0", + "esquery": "^1.5.0" }, "peerDependencies": { - "verdaccio": "^6.0.5" - }, - "peerDependenciesMeta": { - "verdaccio": { - "optional": true - } + "typescript": "^3 || ^4 || ^5" } }, - "node_modules/@nx/js/node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nx/js/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://opencollective.com/pkgr" } }, - "node_modules/@nx/js/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12.22.0" } }, - "node_modules/@nx/js/node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" } }, - "node_modules/@nx/module-federation": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-22.5.3.tgz", - "integrity": "sha512-dKRkT/ULV+nXr7O25YMDwQu/4nxl27AcHJfOmVBVKquXrtrBu/d6dbypfFDMyr5pXqR5gb2euEw0mGVMyHLTiA==", + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/enhanced": "^0.21.2", - "@module-federation/node": "^2.7.21", - "@module-federation/sdk": "^0.21.2", - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@nx/web": "22.5.3", - "@rspack/core": "1.6.8", - "express": "^4.21.2", - "http-proxy-middleware": "^3.0.5", - "picocolors": "^1.1.0", - "tslib": "^2.3.0", - "webpack": "^5.101.3" - } + "license": "ISC" }, - "node_modules/@nx/module-federation/node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@pnpm/npm-conf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", + "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" }, "engines": { - "node": ">= 0.6" + "node": ">=12" } }, - "node_modules/@nx/module-federation/node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", "dev": true, + "license": "MIT" + }, + "node_modules/@remix-run/router": { + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", + "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==", "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=14.0.0" } }, - "node_modules/@nx/module-federation/node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nx/module-federation/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.58.tgz", + "integrity": "sha512-mWj5eE4Qc8TbPdGGaaLvBb9XfDPvE1EmZkJQgiGKwchkWH4oAJcRAKMTw7ZHnb1L+t7Ah41sBkAecaIsuUgsug==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@nx/module-federation/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nx/module-federation/node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.58.tgz", + "integrity": "sha512-wFxUymI/5R8bH8qZFYDfAxAN9CyISEIYke+95oZPiv6EWo88aa5rskjVcCpKA532R+klFmdqjbbaD56GNmTF4Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@nx/module-federation/node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.58.tgz", + "integrity": "sha512-ybp3MkPj23VDV9PhtRwdU5qrGhlViWRV5BjKwO6epaSlUD5lW0WyY+roN3ZAzbma/9RrMTgZ/a/gtQq8YXOcqw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.8" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@nx/module-federation/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.58.tgz", + "integrity": "sha512-Evxj3yh7FWvyklUYZa0qTVT9N2zX9TPDqGF056hl8hlCZ9/ndQ2xMv6uw9PD1VlLpukbsqL+/C6M0qwipL0QMg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">= 0.6" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@nx/module-federation/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.58.tgz", + "integrity": "sha512-tYeXprDOrEgVHUbPXH6MPso4cM/c6RTkmJNICMQlYdki4hGMh92aj3yU6CKs+4X5gfG0yj5kVUw/L4M685SYag==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@nx/module-federation/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.58.tgz", + "integrity": "sha512-N78vmZzP6zG967Ohr+MasCjmKtis0geZ1SOVmxrA0/bklTQSzH5kHEjW5Qn+i1taFno6GEre1E40v0wuWsNOQw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@nx/module-federation/node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.58.tgz", + "integrity": "sha512-l+p4QVtG72C7wI2SIkNQw/KQtSjuYwS3rV6AKcWrRBF62ClsFUcif5vLaZIEbPrCXu5OFRXigXFJnxYsVVZqdQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.6" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@nx/module-federation/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.58.tgz", + "integrity": "sha512-urzJX0HrXxIh0FfxwWRjfPCMeInU9qsImLQxHBgLp5ivji1EEUnOfux8KxPPnRQthJyneBrN2LeqUix9DYrNaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.58.tgz", + "integrity": "sha512-7ijfVK3GISnXIwq/1FZo+KyAUJjL3kWPJ7rViAL6MWeEBhEgRzJ0yEd9I8N9aut8Y8ab+EKFJyRNMWZuUBwQ0A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.58.tgz", + "integrity": "sha512-/m7sKZCS+cUULbzyJTIlv8JbjNohxbpAOA6cM+lgWgqVzPee3U6jpwydrib328JFN/gF9A99IZEnuGYqEDJdww==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.58.tgz", + "integrity": "sha512-6SZk7zMgv+y3wFFQ9qE5P9NnRHcRsptL1ypmudD26PDY+PvFCvfHRkJNfclWnvacVGxjowr7JOL3a9fd1wWhUw==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", "dev": true, "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" + }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" } }, - "node_modules/@nx/module-federation/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.58.tgz", + "integrity": "sha512-sFqfYPnBZ6xBhMkadB7UD0yjEDRvs7ipR3nCggblN+N4ODCXY6qhg/bKL39+W+dgQybL7ErD4EGERVbW9DAWvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.58.tgz", + "integrity": "sha512-AnFWJdAqB8+IDPcGrATYs67Kik/6tnndNJV2jGRmwlbeNiQQ8GhRJU8ETRlINfII0pqi9k4WWLnb00p1QCxw/Q==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.6" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@nx/module-federation/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "license": "MIT" + }, + "node_modules/@rollup/plugin-babel": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.1.0.tgz", + "integrity": "sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "@babel/helper-module-imports": "^7.18.6", + "@rollup/pluginutils": "^5.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + }, + "rollup": { + "optional": true + } } }, - "node_modules/@nx/module-federation/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/@rollup/plugin-commonjs": { + "version": "25.0.8", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz", + "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==", "dev": true, "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" + }, "engines": { - "node": ">= 0.6" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@nx/module-federation/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, "license": "MIT" }, - "node_modules/@nx/module-federation/node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "node_modules/@rollup/plugin-image": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-image/-/plugin-image-3.0.3.tgz", + "integrity": "sha512-qXWQwsXpvD4trSb8PeFPFajp8JLpRtqqOeNYRUKnEQNHm7e5UP7fuSRcbjQAJ7wDZBbnJvSdY5ujNBQd9B1iFg==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" + "@rollup/pluginutils": "^5.0.1", + "mini-svg-data-uri": "^1.4.4" }, "engines": { - "node": ">= 0.8" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@nx/module-federation/node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "node_modules/@rollup/plugin-json": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" + "@rollup/pluginutils": "^5.1.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@nx/module-federation/node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", + "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@nx/module-federation/node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/@rollup/plugin-typescript": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.3.0.tgz", + "integrity": "sha512-7DP0/p7y3t67+NabT9f8oTBFE6gGkto4SA6Np2oudYmZE/m1dt8RB0SjL1msMxFpLo631qjRCcBlAbq1ml/Big==", "dev": true, "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "@rollup/pluginutils": "^5.1.0", + "resolve": "^1.22.1" }, "engines": { - "node": ">= 0.6" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } } }, - "node_modules/@nx/nx-darwin-arm64": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.3.tgz", - "integrity": "sha512-cKXBq5bJanXp8uv6+wPvx/G4q4oFpOxMSPGaeFOVhbul2QHGGq+XMcSo+D8aYJCsk1YnbyAnnQ8r8RH/kTK5Mw==", + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ] }, - "node_modules/@nx/nx-darwin-x64": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.5.3.tgz", - "integrity": "sha512-mToS41o8I+8CfxYVRMTISkgT7I1cnazgwMf7U9DoLqKOwOZzj9WD3NmsWc1h69QNJPltbeRPS8y/wnhu7RHzRA==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ] }, - "node_modules/@nx/nx-freebsd-x64": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.5.3.tgz", - "integrity": "sha512-CAWysdFSZVbTfdjNXojd9TgXbZiK9i0k3njROeV+jORsDWw4Eth3PDmK94Wk916b3n2hS0UjyI6RZaMy2GEqzA==", + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" ] }, - "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.5.3.tgz", - "integrity": "sha512-PRjPrijQQbdrvYwNuA3xQ3VXEQ4zfhnPjy+S2ZlQZqhFI4mlP22xfhOH1bQ7pIfzCNC2f/J9UMNYOrq/bEFjBg==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.5.3.tgz", - "integrity": "sha512-dmDBio/5z4Zch2VlRMdgBPm53d8xwq1l7xLj1dFMKjfE7ByfPukjPM7ZEYBiPckfiQfJBRh6HKDN7uEkA/y8CQ==", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", "cpu": [ - "arm64" + "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@nx/nx-linux-arm64-musl": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.5.3.tgz", - "integrity": "sha512-E81ET/MnnKfuLhKiovF5ueJirHOMjhC1eK0MDM2Do9wdPyusZzfGSVFQ9DOHtg7L37dAE95NNd1lCVO8gJ96vg==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.5.3.tgz", - "integrity": "sha512-AgXCsPCzC0sAu2VRclMjs7LrvPQfqS3sFiehlXWTbNHQitPZLuAmQGb2l4T8lbMOs0Xn3EIrg6BF6/ntTTp6Xg==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", "cpu": [ - "x64" + "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.5.3.tgz", - "integrity": "sha512-sKs4bFQRu8Btxf5rMYKPsRVNxkQ2ey8sqoCyhJj8fwJF05DayK2ErJAR/rhtBK0c1NV7kQiKJA8nWBV3jnCdsg==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", "cpu": [ - "x64" + "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.5.3.tgz", - "integrity": "sha512-KOCQLakSO5vl4D6et9qPytOAmkgq2IIuhI8A/g0xbD1LqrIlRPa+bdkZqOGpODYAk3NyKAk7hWHsqfXKHwwX6w==", + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", "cpu": [ - "arm64" + "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ] }, - "node_modules/@nx/nx-win32-x64-msvc": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.3.tgz", - "integrity": "sha512-a6ZB2La82RIHcz4nrt3H6RZaOa+xkC2IPzhU9hMo2gbkLdIxn8wyof8uGA0frncmIVHuLc3nFAhpBOgf4j6tMA==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", "cpu": [ - "x64" + "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ] }, - "node_modules/@nx/react": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/react/-/react-22.5.3.tgz", - "integrity": "sha512-Wc/9LZxxmrWFgKARw8nIC0yGFOMHvb/p5WDXbwYcaUUbYyyC9uSg7AcyRZt/UZ3WqhxhKm0SJCgpTlhFh+Dkxg==", - "dev": true, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], "license": "MIT", - "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/eslint": "22.5.3", - "@nx/js": "22.5.3", - "@nx/module-federation": "22.5.3", - "@nx/rollup": "22.5.3", - "@nx/web": "22.5.3", - "@phenomnomnominal/tsquery": "~6.1.4", - "@svgr/webpack": "^8.0.1", - "express": "^4.21.2", - "http-proxy-middleware": "^3.0.5", - "minimatch": "10.2.1", - "picocolors": "^1.1.0", - "semver": "^7.6.3", - "tslib": "^2.3.0" + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/wasm-node": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.59.0.tgz", + "integrity": "sha512-cKB/Pe05aJWQYw3UFS79Id+KVXdExBxWful0+CSl24z3ukwOgBSy6l39XZNwfm3vCh/fpUrAAs+T7PsJ6dC8NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" }, "optionalDependencies": { - "@nx/vite": "22.5.3" + "fsevents": "~2.3.2" } }, - "node_modules/@nx/react/node_modules/@phenomnomnominal/tsquery": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", - "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "node_modules/@rspack/binding": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.6.8.tgz", + "integrity": "sha512-lUeL4mbwGo+nqRKqFDCm9vH2jv9FNMVt1X8jqayWRcOCPlj/2UVMEFgqjR7Pp2vlvnTKq//31KbDBJmDZq31RQ==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.6.8", + "@rspack/binding-darwin-x64": "1.6.8", + "@rspack/binding-linux-arm64-gnu": "1.6.8", + "@rspack/binding-linux-arm64-musl": "1.6.8", + "@rspack/binding-linux-x64-gnu": "1.6.8", + "@rspack/binding-linux-x64-musl": "1.6.8", + "@rspack/binding-wasm32-wasi": "1.6.8", + "@rspack/binding-win32-arm64-msvc": "1.6.8", + "@rspack/binding-win32-ia32-msvc": "1.6.8", + "@rspack/binding-win32-x64-msvc": "1.6.8" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.6.8.tgz", + "integrity": "sha512-e8CTQtzaeGnf+BIzR7wRMUwKfIg0jd/sxMRc1Vd0bCMHBhSN9EsGoMuJJaKeRrSmy2nwMCNWHIG+TvT1CEKg+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.6.8.tgz", + "integrity": "sha512-ku1XpTEPt6Za11zhpFWhfwrTQogcgi9RJrOUVC4FESiPO9aKyd4hJ+JiPgLY0MZOqsptK6vEAgOip+uDVXrCpg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.6.8.tgz", + "integrity": "sha512-fvZX6xZPvBT8qipSpvkKMX5M7yd2BSpZNCZXcefw6gA3uC7LI3gu+er0LrDXY1PtPzVuHTyDx+abwWpagV3PiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.6.8.tgz", + "integrity": "sha512-++XMKcMNrt59HcFBLnRaJcn70k3X0GwkAegZBVpel8xYIAgvoXT5+L8P1ExId/yTFxqedaz8DbcxQnNmMozviw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.6.8.tgz", + "integrity": "sha512-tv3BWkTE1TndfX+DsE1rSTg8fBevCxujNZ3MlfZ22Wfy9x1FMXTJlWG8VIOXmaaJ1wUHzv8S7cE2YUUJ2LuiCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.6.8.tgz", + "integrity": "sha512-DCGgZ5/in1O3FjHWqXnDsncRy+48cMhfuUAAUyl0yDj1NpsZu9pP+xfGLvGcQTiYrVl7IH9Aojf1eShP/77WGA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-wasm32-wasi": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.6.8.tgz", + "integrity": "sha512-VUwdhl/lI4m6o1OGCZ9JwtMjTV/yLY5VZTQdEPKb40JMTlmZ5MBlr5xk7ByaXXYHr6I+qnqEm73iMKQvg6iknw==", + "cpu": [ + "wasm32" + ], "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@types/esquery": "^1.5.0", - "esquery": "^1.5.0" + "@napi-rs/wasm-runtime": "1.0.7" + } + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.6.8.tgz", + "integrity": "sha512-23YX7zlOZlub+nPGDBUzktb4D5D6ETUAluKjXEeHIZ9m7fSlEYBnGL66YE+3t1DHXGd0OqsdwlvrNGcyo6EXDQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.6.8.tgz", + "integrity": "sha512-cFgRE3APxrY4AEdooVk2LtipwNNT/9mrnjdC5lVbsIsz+SxvGbZR231bxDJEqP15+RJOaD07FO1sIjINFqXMEg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.6.8.tgz", + "integrity": "sha512-cIuhVsZYd3o3Neo1JSAhJYw6BDvlxaBoqvgwRkG1rs0ExFmEmgYyG7ip9pFKnKNWph/tmW3rDYypmEfjs1is7g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/core": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.6.8.tgz", + "integrity": "sha512-FolcIAH5FW4J2FET+qwjd1kNeFbCkd0VLuIHO0thyolEjaPSxw5qxG67DA7BZGm6PVcoiSgPLks1DL6eZ8c+fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime-tools": "0.21.6", + "@rspack/binding": "1.6.8", + "@rspack/lite-tapable": "1.1.0" + }, + "engines": { + "node": ">=18.12.0" }, "peerDependencies": { - "typescript": "^3 || ^4 || ^5" + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } } }, - "node_modules/@nx/react/node_modules/accepts": { + "node_modules/@rspack/dev-server": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.2.1.tgz", + "integrity": "sha512-e/ARvskYn2Qdd02qLvc0i6H9BnOmzP0xGHS2XCr7GZ3t2k5uC5ZlLkeN1iEebU0FkAW+6ot89NahFo3nupKuww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.8.1", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.22.1", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "peerDependencies": { + "@rspack/core": "*" + } + }, + "node_modules/@rspack/dev-server/node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", @@ -13882,17 +14828,7 @@ "node": ">= 0.6" } }, - "node_modules/@nx/react/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@nx/react/node_modules/body-parser": { + "node_modules/@rspack/dev-server/node_modules/body-parser": { "version": "1.20.4", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", @@ -13917,58 +14853,49 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@nx/react/node_modules/body-parser/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "node_modules/@rspack/dev-server/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 8.10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@nx/react/node_modules/body-parser/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@nx/react/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "node_modules/@rspack/dev-server/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, "engines": { - "node": "18 || 20 || >=22" + "node": ">= 0.6" } }, - "node_modules/@nx/react/node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "node_modules/@rspack/dev-server/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "dev": true, "license": "MIT" }, - "node_modules/@nx/react/node_modules/debug": { + "node_modules/@rspack/dev-server/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", @@ -13978,14 +14905,14 @@ "ms": "2.0.0" } }, - "node_modules/@nx/react/node_modules/debug/node_modules/ms": { + "node_modules/@rspack/dev-server/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT" }, - "node_modules/@nx/react/node_modules/express": { + "node_modules/@rspack/dev-server/node_modules/express": { "version": "4.22.1", "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", @@ -14032,26 +14959,26 @@ "url": "https://opencollective.com/express" } }, - "node_modules/@nx/react/node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "node_modules/@rspack/dev-server/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, - "node_modules/@nx/react/node_modules/fresh": { + "node_modules/@rspack/dev-server/node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", @@ -14061,40 +14988,91 @@ "node": ">= 0.6" } }, - "node_modules/@nx/react/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/@rspack/dev-server/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/@nx/react/node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/@rspack/dev-server/node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@nx/react/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/@rspack/dev-server/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@rspack/dev-server/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/react/node_modules/mime-db": { + "node_modules/@rspack/dev-server/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@rspack/dev-server/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@rspack/dev-server/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", @@ -14104,7 +15082,7 @@ "node": ">= 0.6" } }, - "node_modules/@nx/react/node_modules/mime-types": { + "node_modules/@rspack/dev-server/node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", @@ -14117,23 +15095,7 @@ "node": ">= 0.6" } }, - "node_modules/@nx/react/node_modules/minimatch": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", - "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nx/react/node_modules/negotiator": { + "node_modules/@rspack/dev-server/node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", @@ -14143,14 +15105,62 @@ "node": ">= 0.6" } }, - "node_modules/@nx/react/node_modules/path-to-regexp": { + "node_modules/@rspack/dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@rspack/dev-server/node_modules/path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true, "license": "MIT" }, - "node_modules/@nx/react/node_modules/raw-body": { + "node_modules/@rspack/dev-server/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rspack/dev-server/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@rspack/dev-server/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", @@ -14166,99 +15176,61 @@ "node": ">= 0.8" } }, - "node_modules/@nx/react/node_modules/raw-body/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "node_modules/@rspack/dev-server/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" + "picomatch": "^2.2.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@nx/react/node_modules/raw-body/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=8.10.0" } }, - "node_modules/@nx/react/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "node_modules/@rspack/dev-server/node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/@nx/react/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@nx/react/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "node_modules/@rspack/dev-server/node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "dev": true, "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/@nx/react/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@nx/react/node_modules/type-is": { + "node_modules/@rspack/dev-server/node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", @@ -14272,9646 +15244,8435 @@ "node": ">= 0.6" } }, - "node_modules/@nx/rollup": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/rollup/-/rollup-22.5.3.tgz", - "integrity": "sha512-Um9xCcUeSb35OX+UH1CZk4DbQPXItRbn8ehJPmgOo9s+TtPTbdVWhUVb9chiqvmluSw0ELA3zjZf6XINiP95BQ==", + "node_modules/@rspack/dev-server/node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@rollup/plugin-babel": "^6.0.4", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-image": "^3.0.3", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-typescript": "^12.1.0", - "autoprefixer": "^10.4.9", - "concat-with-sourcemaps": "^1.1.0", - "picocolors": "^1.1.0", - "picomatch": "4.0.2", - "postcss": "^8.4.38", - "postcss-modules": "^6.0.1", - "rollup": "^4.14.0", - "rollup-plugin-typescript2": "^0.36.0", - "tslib": "^2.3.0" - } - }, - "node_modules/@nx/rollup/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", + "is-wsl": "^3.1.0" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/rspack": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-22.5.3.tgz", - "integrity": "sha512-2T5dkoC08FJGF8ZMiJDaKN6giXAljV0+LK7q5GJpSEUm+wtjZ/DRVoWSnlf8Dj/e0/cLb2GMElVcfjyDDDeV9w==", + "node_modules/@rspack/lite-tapable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz", + "integrity": "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rspack/plugin-react-refresh": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.6.1.tgz", + "integrity": "sha512-eqqW5645VG3CzGzFgNg5HqNdHVXY+567PGjtDhhrM8t67caxmsSzRmT5qfoEIfBcGgFkH9vEg7kzXwmCYQdQDw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@nx/module-federation": "22.5.3", - "@nx/web": "22.5.3", - "@phenomnomnominal/tsquery": "~6.1.4", - "@rspack/core": "1.6.8", - "@rspack/dev-server": "^1.1.4", - "@rspack/plugin-react-refresh": "^1.0.0", - "autoprefixer": "^10.4.9", - "browserslist": "^4.26.0", - "css-loader": "^6.4.0", - "enquirer": "~2.3.6", - "express": "^4.21.2", - "http-proxy-middleware": "^3.0.5", - "less-loader": "^11.1.0", - "license-webpack-plugin": "^4.0.2", - "loader-utils": "^2.0.3", - "parse5": "4.0.0", - "picocolors": "^1.1.0", - "postcss": "^8.4.38", - "postcss-import": "~14.1.0", - "postcss-loader": "^8.1.1", - "sass": "^1.85.0", - "sass-embedded": "^1.83.4", - "sass-loader": "^16.0.4", - "source-map-loader": "^5.0.0", - "style-loader": "^3.3.0", - "ts-checker-rspack-plugin": "^1.1.1", - "tslib": "^2.3.0", - "webpack": "^5.101.3", - "webpack-node-externals": "^3.0.0" + "error-stack-parser": "^2.1.4", + "html-entities": "^2.6.0" }, "peerDependencies": { - "@module-federation/enhanced": "^0.21.2", - "@module-federation/node": "^2.7.21" + "react-refresh": ">=0.10.0 <1.0.0", + "webpack-hot-middleware": "2.x" + }, + "peerDependenciesMeta": { + "webpack-hot-middleware": { + "optional": true + } } }, - "node_modules/@nx/rspack/node_modules/@phenomnomnominal/tsquery": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", - "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/node-core-library": { + "version": "5.20.3", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.3.tgz", + "integrity": "sha512-95JgEPq2k7tHxhF9/OJnnyHDXfC9cLhhta0An/6MlkDsX2A6dTzDrTUG18vx4vjc280V0fi0xDH9iQczpSuWsw==", "dev": true, "license": "MIT", "dependencies": { - "@types/esquery": "^1.5.0", - "esquery": "^1.5.0" + "ajv": "~8.18.0", + "ajv-draft-04": "~1.0.0", + "ajv-formats": "~3.0.1", + "fs-extra": "~11.3.0", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4" }, "peerDependencies": { - "typescript": "^3 || ^4 || ^5" + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@nx/rspack/node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@rushstack/node-core-library/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">= 0.6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@nx/rspack/node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "node_modules/@rushstack/node-core-library/node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=14.14" } }, - "node_modules/@nx/rspack/node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nx/rspack/node_modules/css-loader": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", - "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "node_modules/@rushstack/node-core-library/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "bin": { + "semver": "bin/semver.js" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@rushstack/problem-matcher": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz", + "integrity": "sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==", + "dev": true, + "license": "MIT", "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" + "@types/node": "*" }, "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { + "@types/node": { "optional": true } } }, - "node_modules/@nx/rspack/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@rushstack/rig-package": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.2.tgz", + "integrity": "sha512-9XbFWuqMYcHUso4mnETfhGVUSaADBRj6HUAAEYk50nMPn8WRICmBuCphycQGNB3duIR6EEZX3Xj3SYc2XiP+9A==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" } }, - "node_modules/@nx/rspack/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/@rushstack/terminal": { + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.3.tgz", + "integrity": "sha512-gHC9pIMrUPzAbBiI4VZMU7Q+rsCzb8hJl36lFIulIzoceKotyKL3Rd76AZ2CryCTKEg+0bnTj406HE5YY5OQvw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@rushstack/node-core-library": "5.20.3", + "@rushstack/problem-matcher": "0.2.1", + "supports-color": "~8.1.1" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } }, - "node_modules/@nx/rspack/node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "node_modules/@rushstack/terminal/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@nx/rspack/node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "node_modules/@rushstack/ts-command-line": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.3.tgz", + "integrity": "sha512-c+ltdcvC7ym+10lhwR/vWiOhsrm/bP3By2VsFcs5qTKv+6tTmxgbVrtJ5NdNjANiV5TcmOZgUN+5KYQ4llsvEw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "@rushstack/terminal": "0.22.3", + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "string-argv": "~0.3.1" } }, - "node_modules/@nx/rspack/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/@nx/rspack/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "node_modules/@schematics/angular": { + "version": "21.1.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.1.4.tgz", + "integrity": "sha512-I1zdSNzdbrVCWpeE2NsZQmIoa9m0nlw4INgdGIkqUH6FgwvoGKC0RoOxKAmm6HHVJ48FE/sPI13dwAeK89ow5A==", "dev": true, "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" + "@angular-devkit/core": "21.1.4", + "@angular-devkit/schematics": "21.1.4", + "jsonc-parser": "3.3.1" }, "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@nx/rspack/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@semantic-release/commit-analyzer": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", + "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "import-from-esm": "^1.0.3", + "lodash-es": "^4.17.21", + "micromatch": "^4.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17 || >=20.6.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" } }, - "node_modules/@nx/rspack/node_modules/less-loader": { - "version": "11.1.4", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.4.tgz", - "integrity": "sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==", + "node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" + "node": ">=18" } }, - "node_modules/@nx/rspack/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/@semantic-release/github": { + "version": "12.0.6", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-12.0.6.tgz", + "integrity": "sha512-aYYFkwHW3c6YtHwQF0t0+lAjlU+87NFOZuH2CvWFD0Ylivc7MwhZMiHOJ0FMpIgPpCVib/VUAcOwvrW0KnxQtA==", "dev": true, "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "@octokit/core": "^7.0.0", + "@octokit/plugin-paginate-rest": "^14.0.0", + "@octokit/plugin-retry": "^8.0.0", + "@octokit/plugin-throttling": "^11.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "issue-parser": "^7.0.0", + "lodash-es": "^4.17.21", + "mime": "^4.0.0", + "p-filter": "^4.0.0", + "tinyglobby": "^0.2.14", + "undici": "^7.0.0", + "url-join": "^5.0.0" }, "engines": { - "node": ">=8.9.0" + "node": "^22.14.0 || >= 24.10.0" + }, + "peerDependencies": { + "semantic-release": ">=24.1.0" } }, - "node_modules/@nx/rspack/node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/@semantic-release/github/node_modules/mime": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", + "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa" + ], "license": "MIT", + "bin": { + "mime": "bin/cli.js" + }, "engines": { - "node": ">= 0.6" + "node": ">=16" } }, - "node_modules/@nx/rspack/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "node_modules/@semantic-release/github/node_modules/url-join": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/@nx/rspack/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/@semantic-release/npm": { + "version": "13.1.5", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-13.1.5.tgz", + "integrity": "sha512-Hq5UxzoatN3LHiq2rTsWS54nCdqJHlsssGERCo8WlvdfFA9LoN0vO+OuKVSjtNapIc/S8C2LBj206wKLHg62mg==", "dev": true, "license": "MIT", + "dependencies": { + "@actions/core": "^3.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "env-ci": "^11.2.0", + "execa": "^9.0.0", + "fs-extra": "^11.0.0", + "lodash-es": "^4.17.21", + "nerf-dart": "^1.0.0", + "normalize-url": "^9.0.0", + "npm": "^11.6.2", + "rc": "^1.2.8", + "read-pkg": "^10.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^3.0.0" + }, "engines": { - "node": ">= 0.6" + "node": "^22.14.0 || >= 24.10.0" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" } }, - "node_modules/@nx/rspack/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/@semantic-release/npm/node_modules/execa": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" }, "engines": { - "node": ">= 0.6" + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@nx/rspack/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/@semantic-release/npm/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/rspack/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nx/rspack/node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "node_modules/@semantic-release/npm/node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=14.14" } }, - "node_modules/@nx/rspack/node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "node_modules/@semantic-release/npm/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/rspack/node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "node_modules/@semantic-release/npm/node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 0.8.0" + "node": ">=18.18.0" } }, - "node_modules/@nx/rspack/node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/@semantic-release/npm/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, "engines": { - "node": ">= 0.6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/vite": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/vite/-/vite-22.5.3.tgz", - "integrity": "sha512-XvaCVIqNnWHF46in+q/hfiDr6YmPvO0416aMwzID4MTom/LdBiKS7Vh4oVShzXqzOZVTvawO+dKAA5zaqvBAaw==", + "node_modules/@semantic-release/npm/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "license": "MIT", - "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@nx/vitest": "22.5.3", - "@phenomnomnominal/tsquery": "~6.1.4", - "ajv": "^8.0.0", - "enquirer": "~2.3.6", - "picomatch": "4.0.2", - "semver": "^7.6.3", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0" + "engines": { + "node": ">=18" }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", - "vitest": "^1.3.1 || ^2.0.0 || ^3.0.0 || ^4.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/vite/node_modules/@phenomnomnominal/tsquery": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", - "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "node_modules/@semantic-release/npm/node_modules/normalize-package-data": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-8.0.0.tgz", + "integrity": "sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@types/esquery": "^1.5.0", - "esquery": "^1.5.0" + "hosted-git-info": "^9.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, - "peerDependencies": { - "typescript": "^3 || ^4 || ^5" + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nx/vite/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "node_modules/@semantic-release/npm/node_modules/normalize-url": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-9.0.0.tgz", + "integrity": "sha512-z9nC87iaZXXySbWWtTHfCFJyFvKaUAW6lODhikG7ILSbVgmwuFjUqkgnheHvAUcGedO29e2QGBRXMUD64aurqQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=20" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/vitest": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/vitest/-/vitest-22.5.3.tgz", - "integrity": "sha512-ZsDbiDqdGSPld/3thGqkzhY/seV08374mWZxZu1NoIT0RQnRF70GjlYXh+97Gzkm7L3s1269JKfzyVFRPjTzjQ==", + "node_modules/@semantic-release/npm/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@phenomnomnominal/tsquery": "~6.1.4", - "semver": "^7.6.3", - "tslib": "^2.3.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", - "vitest": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + "engines": { + "node": ">=18" }, - "peerDependenciesMeta": { - "vite": { - "optional": true - }, - "vitest": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/vitest/node_modules/@phenomnomnominal/tsquery": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", - "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "node_modules/@semantic-release/npm/node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/esquery": "^1.5.0", - "esquery": "^1.5.0" + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" }, - "peerDependencies": { - "typescript": "^3 || ^4 || ^5" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/web": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-22.5.3.tgz", - "integrity": "sha512-Z7FYN5e9HIJAuJV0MU8jHaoEv9vgiLbpe1bbWPItfzIy02kWtSiS/aGZcLa34LDuWBfBaJVHZqFVp7OOPU26ew==", + "node_modules/@semantic-release/npm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "license": "MIT", - "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "detect-port": "^1.5.1", - "http-server": "^14.1.0", - "picocolors": "^1.1.0", - "tslib": "^2.3.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/webpack": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-22.5.3.tgz", - "integrity": "sha512-fEWvmynjxAfdyCH00Z3oaEedv/wKZAdHl8kz7UEiOJ7eKdGbbJIK0RuobXC1r2e2ERZ35vDrOiPYdruyfi35Jg==", + "node_modules/@semantic-release/npm/node_modules/read-pkg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.1.0.tgz", + "integrity": "sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.23.2", - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@phenomnomnominal/tsquery": "~6.1.4", - "ajv": "^8.12.0", - "autoprefixer": "^10.4.9", - "babel-loader": "^9.1.2", - "browserslist": "^4.26.0", - "copy-webpack-plugin": "^10.2.4", - "css-loader": "^6.4.0", - "css-minimizer-webpack-plugin": "^5.0.0", - "fork-ts-checker-webpack-plugin": "7.2.13", - "less": "^4.1.3", - "less-loader": "^11.1.0", - "license-webpack-plugin": "^4.0.2", - "loader-utils": "^2.0.3", - "mini-css-extract-plugin": "~2.4.7", - "parse5": "4.0.0", - "picocolors": "^1.1.0", - "postcss": "^8.4.38", - "postcss-import": "~14.1.0", - "postcss-loader": "^6.1.1", - "rxjs": "^7.8.0", - "sass": "^1.85.0", - "sass-embedded": "^1.83.4", - "sass-loader": "^16.0.4", - "source-map-loader": "^5.0.0", - "style-loader": "^3.3.0", - "terser-webpack-plugin": "^5.3.3", - "ts-loader": "^9.3.1", - "tsconfig-paths-webpack-plugin": "4.2.0", - "tslib": "^2.3.0", - "webpack": "^5.101.3", - "webpack-dev-server": "^5.2.1", - "webpack-node-externals": "^3.0.0", - "webpack-subresource-integrity": "^5.1.0" + "@types/normalize-package-data": "^2.4.4", + "normalize-package-data": "^8.0.0", + "parse-json": "^8.3.0", + "type-fest": "^5.4.4", + "unicorn-magic": "^0.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/webpack/node_modules/@phenomnomnominal/tsquery": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.4.tgz", - "integrity": "sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==", + "node_modules/@semantic-release/npm/node_modules/read-pkg/node_modules/type-fest": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.4.tgz", + "integrity": "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "dependencies": { - "@types/esquery": "^1.5.0", - "esquery": "^1.5.0" + "tagged-tag": "^1.0.0" }, - "peerDependencies": { - "typescript": "^3 || ^4 || ^5" + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/webpack/node_modules/array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "node_modules/@semantic-release/npm/node_modules/read-pkg/node_modules/unicorn-magic": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/webpack/node_modules/babel-loader": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", - "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, "license": "MIT", - "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - }, "engines": { - "node": ">= 14.15.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/webpack/node_modules/copy-webpack-plugin": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", - "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "node_modules/@semantic-release/npm/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, "license": "MIT", - "dependencies": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^12.0.2", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, "engines": { - "node": ">= 12.20.0" + "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/@nx/webpack/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/webpack/node_modules/css-loader": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", - "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "node_modules/@semantic-release/release-notes-generator": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", + "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", "dev": true, "license": "MIT", "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "conventional-changelog-angular": "^7.0.0", + "conventional-changelog-writer": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from-esm": "^1.0.3", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-pkg-up": "^11.0.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^18.17 || >=20.6.1" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "semantic-release": ">=20.1.0" } }, - "node_modules/@nx/webpack/node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", "dev": true, "license": "MIT", - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, "engines": { - "node": ">=14.16" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/webpack/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, + "node_modules/@shikijs/core": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.23.0.tgz", + "integrity": "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==", "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" } }, - "node_modules/@nx/webpack/node_modules/globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "dev": true, + "node_modules/@shikijs/engine-javascript": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.23.0.tgz", + "integrity": "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==", "license": "MIT", "dependencies": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.4" } }, - "node_modules/@nx/webpack/node_modules/less-loader": { - "version": "11.1.4", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.4.tgz", - "integrity": "sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==", - "dev": true, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", "license": "MIT", - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" } }, - "node_modules/@nx/webpack/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, + "node_modules/@shikijs/langs": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" + "@shikijs/types": "3.23.0" } }, - "node_modules/@nx/webpack/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, + "node_modules/@shikijs/themes": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@shikijs/types": "3.23.0" } }, - "node_modules/@nx/webpack/node_modules/mini-css-extract-plugin": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", - "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", - "dev": true, + "node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", "license": "MIT", "dependencies": { - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" } }, - "node_modules/@nx/webpack/node_modules/p-limit": { + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@sigstore/bundle": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz", + "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "yocto-queue": "^1.0.0" + "@sigstore/protobuf-specs": "^0.5.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nx/webpack/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/@sigstore/core": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.1.0.tgz", + "integrity": "sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==", "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nx/webpack/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/@sigstore/protobuf-specs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", + "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@nx/webpack/node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "node_modules/@sigstore/sign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.0.tgz", + "integrity": "sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "find-up": "^6.3.0" + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0", + "make-fetch-happen": "^15.0.3", + "proc-log": "^6.1.0", + "promise-retry": "^2.0.1" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nx/webpack/node_modules/postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "node_modules/@sigstore/tuf": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.1.tgz", + "integrity": "sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" + "@sigstore/protobuf-specs": "^0.5.0", + "tuf-js": "^4.1.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nx/webpack/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/@sigstore/verify": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.0.tgz", + "integrity": "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@nx/webpack/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", "engines": { - "node": ">= 6" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nx/webpack/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "node_modules/@simple-libs/stream-utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-1.2.0.tgz", + "integrity": "sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==", "dev": true, "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://ko-fi.com/dangreen" } }, - "node_modules/@nx/workspace": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-22.5.3.tgz", - "integrity": "sha512-pioGwlt5zKB9PhX36I5KAeSml19Mq+g2KyQ9mh3F+3Lvft2JM4nIMELBaUfwPicPAOwNmrsx806IXO67Q4UHxQ==", + "node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, - "license": "MIT", - "dependencies": { - "@nx/devkit": "22.5.3", - "@zkochan/js-yaml": "0.0.7", - "chalk": "^4.1.0", - "enquirer": "~2.3.6", - "nx": "22.5.3", - "picomatch": "4.0.2", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" - } + "license": "MIT" }, - "node_modules/@nx/workspace/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@octokit/auth-token": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", - "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/core": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", - "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^6.0.0", - "@octokit/graphql": "^9.0.3", - "@octokit/request": "^10.0.6", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "before-after-hook": "^4.0.0", - "universal-user-agent": "^7.0.0" + "node": ">=18" }, - "engines": { - "node": ">= 20" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@octokit/endpoint": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz", - "integrity": "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 20" + "type-detect": "4.0.8" } }, - "node_modules/@octokit/graphql": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", - "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@octokit/request": "^10.0.6", - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 20" + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/@octokit/openapi-types": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", - "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", - "dev": true, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "license": "MIT" }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", - "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", + "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^16.0.0" + "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", + "svelte-hmr": "^0.16.0", + "vitefu": "^0.2.5" }, "engines": { - "node": ">= 20" + "node": "^18.0.0 || >=20" }, "peerDependencies": { - "@octokit/core": ">=6" + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" } }, - "node_modules/@octokit/plugin-retry": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.0.3.tgz", - "integrity": "sha512-vKGx1i3MC0za53IzYBSBXcrhmd+daQDzuZfYDd52X5S0M2otf3kVZTVP8bLA3EkU0lTvd1WEC2OlNNa4G+dohA==", + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", + "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "bottleneck": "^2.15.3" + "debug": "^4.3.4" }, "engines": { - "node": ">= 20" + "node": "^18.0.0 || >=20" }, "peerDependencies": { - "@octokit/core": ">=7" + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" } }, - "node_modules/@octokit/plugin-throttling": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.3.tgz", - "integrity": "sha512-34eE0RkFCKycLl2D2kq7W+LovheM/ex3AwZCYN8udpi6bxsyjZidb2McXs69hZhLmJlDqTSP8cH+jSRpiaijBg==", + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0", - "bottleneck": "^2.15.3" - }, "engines": { - "node": ">= 20" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "@octokit/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/request": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.7.tgz", - "integrity": "sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==", + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^11.0.2", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "fast-content-type-parse": "^3.0.0", - "universal-user-agent": "^7.0.2" - }, "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/request-error": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", - "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" + "node": ">=14" }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", - "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^27.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@oslojs/encoding": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", - "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", - "license": "MIT" - }, - "node_modules/@oxc-resolver/binding-android-arm-eabi": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.19.1.tgz", - "integrity": "sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@oxc-resolver/binding-android-arm64": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.19.1.tgz", - "integrity": "sha512-oolbkRX+m7Pq2LNjr/kKgYeC7bRDMVTWPgxBGMjSpZi/+UskVo4jsMU3MLheZV55jL6c3rNelPl4oD60ggYmqA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@oxc-resolver/binding-darwin-arm64": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.19.1.tgz", - "integrity": "sha512-nUC6d2i3R5B12sUW4O646qD5cnMXf2oBGPLIIeaRfU9doJRORAbE2SGv4eW6rMqhD+G7nf2Y8TTJTLiiO3Q/dQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@oxc-resolver/binding-darwin-x64": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.19.1.tgz", - "integrity": "sha512-cV50vE5+uAgNcFa3QY1JOeKDSkM/9ReIcc/9wn4TavhW/itkDGrXhw9jaKnkQnGbjJ198Yh5nbX/Gr2mr4Z5jQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@oxc-resolver/binding-freebsd-x64": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.19.1.tgz", - "integrity": "sha512-xZOQiYGFxtk48PBKff+Zwoym7ScPAIVp4c14lfLxizO2LTTTJe5sx9vQNGrBymrf/vatSPNMD4FgsaaRigPkqw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.19.1.tgz", - "integrity": "sha512-lXZYWAC6kaGe/ky2su94e9jN9t6M0/6c+GrSlCqL//XO1cxi5lpAhnJYdyrKfm0ZEr/c7RNyAx3P7FSBcBd5+A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.19.1.tgz", - "integrity": "sha512-veG1kKsuK5+t2IsO9q0DErYVSw2azvCVvWHnfTOS73WE0STdLLB7Q1bB9WR+yHPQM76ASkFyRbogWo1GR1+WbQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.19.1.tgz", - "integrity": "sha512-heV2+jmXyYnUrpUXSPugqWDRpnsQcDm2AX4wzTuvgdlZfoNYO0O3W2AVpJYaDn9AG4JdM6Kxom8+foE7/BcSig==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm64-musl": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.19.1.tgz", - "integrity": "sha512-jvo2Pjs1c9KPxMuMPIeQsgu0mOJF9rEb3y3TdpsrqwxRM+AN6/nDDwv45n5ZrUnQMsdBy5gIabioMKnQfWo9ew==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.19.1.tgz", - "integrity": "sha512-vLmdNxWCdN7Uo5suays6A/+ywBby2PWBBPXctWPg5V0+eVuzsJxgAn6MMB4mPlshskYbppjpN2Zg83ArHze9gQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.19.1.tgz", - "integrity": "sha512-/b+WgR+VTSBxzgOhDO7TlMXC1ufPIMR6Vj1zN+/x+MnyXGW7prTLzU9eW85Aj7Th7CCEG9ArCbTeqxCzFWdg2w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.19.1.tgz", - "integrity": "sha512-YlRdeWb9j42p29ROh+h4eg/OQ3dTJlpHSa+84pUM9+p6i3djtPz1q55yLJhgW9XfDch7FN1pQ/Vd6YP+xfRIuw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.19.1.tgz", - "integrity": "sha512-EDpafVOQWF8/MJynsjOGFThcqhRHy417sRyLfQmeiamJ8qVhSKAn2Dn2VVKUGCjVB9C46VGjhNo7nOPUi1x6uA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-gnu": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.19.1.tgz", - "integrity": "sha512-NxjZe+rqWhr+RT8/Ik+5ptA3oz7tUw361Wa5RWQXKnfqwSSHdHyrw6IdcTfYuml9dM856AlKWZIUXDmA9kkiBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-musl": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.19.1.tgz", - "integrity": "sha512-cM/hQwsO3ReJg5kR+SpI69DMfvNCp+A/eVR4b4YClE5bVZwz8rh2Nh05InhwI5HR/9cArbEkzMjcKgTHS6UaNw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-openharmony-arm64": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.19.1.tgz", - "integrity": "sha512-QF080IowFB0+9Rh6RcD19bdgh49BpQHUW5TajG1qvWHvmrQznTZZjYlgE2ltLXyKY+qs4F/v5xuX1XS7Is+3qA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@oxc-resolver/binding-wasm32-wasi": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.19.1.tgz", - "integrity": "sha512-w8UCKhX826cP/ZLokXDS6+milN8y4X7zidsAttEdWlVoamTNf6lhBJldaWr3ukTDiye7s4HRcuPEPOXNC432Vg==", - "cpu": [ - "wasm32" - ], + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^1.1.1" - }, "engines": { - "node": ">=14.0.0" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" + "engines": { + "node": ">=14" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.19.1.tgz", - "integrity": "sha512-nJ4AsUVZrVKwnU/QRdzPCCrO0TrabBqgJ8pJhXITdZGYOV28TIYystV1VFLbQ7DtAcaBHpocT5/ZJnF78YJPtQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.19.1.tgz", - "integrity": "sha512-EW+ND5q2Tl+a3pH81l1QbfgbF3HmqgwLfDfVithRFheac8OTcnbXt/JxqD2GbDkb7xYEqy1zNaVFRr3oeG8npA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@oxc-resolver/binding-win32-x64-msvc": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.19.1.tgz", - "integrity": "sha512-6hIU3RQu45B+VNTY4Ru8ppFwjVS/S5qwYyGhBotmjxfEKk41I2DlGtRfGJndZ5+6lneE2pwloqunlOyZuX/XAw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">= 10.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/@parcel/watcher/node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", "dev": true, "license": "MIT", - "optional": true - }, - "node_modules/@phenomnomnominal/tsquery": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", - "integrity": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==", - "license": "MIT", "dependencies": { - "esquery": "^1.4.0" + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" }, - "peerDependencies": { - "typescript": "^3 || ^4 || ^5" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "node": ">=14" }, "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@pnpm/config.env-replace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", - "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/network.ca-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", - "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "4.2.10" - }, - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true, - "license": "ISC" - }, - "node_modules/@pnpm/npm-conf": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", - "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pnpm/config.env-replace": "^1.1.0", - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true, - "license": "MIT" - }, - "node_modules/@remix-run/router": { - "version": "1.23.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", - "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.27", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", - "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", - "license": "MIT" - }, - "node_modules/@rollup/plugin-babel": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.1.0.tgz", - "integrity": "sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@rollup/pluginutils": "^5.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - }, - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.8", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz", - "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-image": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-image/-/plugin-image-3.0.3.tgz", - "integrity": "sha512-qXWQwsXpvD4trSb8PeFPFajp8JLpRtqqOeNYRUKnEQNHm7e5UP7fuSRcbjQAJ7wDZBbnJvSdY5ujNBQd9B1iFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "mini-svg-data-uri": "^1.4.4" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-json": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", - "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", - "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-typescript": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.3.0.tgz", - "integrity": "sha512-7DP0/p7y3t67+NabT9f8oTBFE6gGkto4SA6Np2oudYmZE/m1dt8RB0SjL1msMxFpLo631qjRCcBlAbq1ml/Big==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.14.0||^3.0.0||^4.0.0", - "tslib": "*", - "typescript": ">=3.7.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - }, - "tslib": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", - "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", - "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", - "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", - "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", - "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", - "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", - "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", - "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", - "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", - "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", - "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", - "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", - "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", - "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", - "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", - "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", - "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", - "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", - "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", - "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", - "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", - "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", - "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", - "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", - "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", - "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/wasm-node": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.53.2.tgz", - "integrity": "sha512-oPSy4fH0C66muvPr/HU13K8X9QFO74Em+JUegHUpEwD61M3lihIlfrLpilhrEiiReFOfG00Qyhf7NGFuwkX2yA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/@rspack/binding": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.6.8.tgz", - "integrity": "sha512-lUeL4mbwGo+nqRKqFDCm9vH2jv9FNMVt1X8jqayWRcOCPlj/2UVMEFgqjR7Pp2vlvnTKq//31KbDBJmDZq31RQ==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.6.8", - "@rspack/binding-darwin-x64": "1.6.8", - "@rspack/binding-linux-arm64-gnu": "1.6.8", - "@rspack/binding-linux-arm64-musl": "1.6.8", - "@rspack/binding-linux-x64-gnu": "1.6.8", - "@rspack/binding-linux-x64-musl": "1.6.8", - "@rspack/binding-wasm32-wasi": "1.6.8", - "@rspack/binding-win32-arm64-msvc": "1.6.8", - "@rspack/binding-win32-ia32-msvc": "1.6.8", - "@rspack/binding-win32-x64-msvc": "1.6.8" - } - }, - "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.6.8.tgz", - "integrity": "sha512-e8CTQtzaeGnf+BIzR7wRMUwKfIg0jd/sxMRc1Vd0bCMHBhSN9EsGoMuJJaKeRrSmy2nwMCNWHIG+TvT1CEKg+A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-darwin-x64": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.6.8.tgz", - "integrity": "sha512-ku1XpTEPt6Za11zhpFWhfwrTQogcgi9RJrOUVC4FESiPO9aKyd4hJ+JiPgLY0MZOqsptK6vEAgOip+uDVXrCpg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.6.8.tgz", - "integrity": "sha512-fvZX6xZPvBT8qipSpvkKMX5M7yd2BSpZNCZXcefw6gA3uC7LI3gu+er0LrDXY1PtPzVuHTyDx+abwWpagV3PiQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.6.8.tgz", - "integrity": "sha512-++XMKcMNrt59HcFBLnRaJcn70k3X0GwkAegZBVpel8xYIAgvoXT5+L8P1ExId/yTFxqedaz8DbcxQnNmMozviw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.6.8.tgz", - "integrity": "sha512-tv3BWkTE1TndfX+DsE1rSTg8fBevCxujNZ3MlfZ22Wfy9x1FMXTJlWG8VIOXmaaJ1wUHzv8S7cE2YUUJ2LuiCg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-musl": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.6.8.tgz", - "integrity": "sha512-DCGgZ5/in1O3FjHWqXnDsncRy+48cMhfuUAAUyl0yDj1NpsZu9pP+xfGLvGcQTiYrVl7IH9Aojf1eShP/77WGA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-wasm32-wasi": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.6.8.tgz", - "integrity": "sha512-VUwdhl/lI4m6o1OGCZ9JwtMjTV/yLY5VZTQdEPKb40JMTlmZ5MBlr5xk7ByaXXYHr6I+qnqEm73iMKQvg6iknw==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "1.0.7" - } - }, - "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.6.8.tgz", - "integrity": "sha512-23YX7zlOZlub+nPGDBUzktb4D5D6ETUAluKjXEeHIZ9m7fSlEYBnGL66YE+3t1DHXGd0OqsdwlvrNGcyo6EXDQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.6.8.tgz", - "integrity": "sha512-cFgRE3APxrY4AEdooVk2LtipwNNT/9mrnjdC5lVbsIsz+SxvGbZR231bxDJEqP15+RJOaD07FO1sIjINFqXMEg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.6.8.tgz", - "integrity": "sha512-cIuhVsZYd3o3Neo1JSAhJYw6BDvlxaBoqvgwRkG1rs0ExFmEmgYyG7ip9pFKnKNWph/tmW3rDYypmEfjs1is7g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/core": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.6.8.tgz", - "integrity": "sha512-FolcIAH5FW4J2FET+qwjd1kNeFbCkd0VLuIHO0thyolEjaPSxw5qxG67DA7BZGm6PVcoiSgPLks1DL6eZ8c+fA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/runtime-tools": "0.21.6", - "@rspack/binding": "1.6.8", - "@rspack/lite-tapable": "1.1.0" - }, - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "@swc/helpers": ">=0.5.1" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@rspack/dev-server": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.2.1.tgz", - "integrity": "sha512-e/ARvskYn2Qdd02qLvc0i6H9BnOmzP0xGHS2XCr7GZ3t2k5uC5ZlLkeN1iEebU0FkAW+6ot89NahFo3nupKuww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/bonjour": "^3.5.13", - "@types/connect-history-api-fallback": "^1.5.4", - "@types/express": "^4.17.25", - "@types/express-serve-static-core": "^4.17.21", - "@types/serve-index": "^1.9.4", - "@types/serve-static": "^1.15.5", - "@types/sockjs": "^0.3.36", - "@types/ws": "^8.5.10", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.2.1", - "chokidar": "^3.6.0", - "colorette": "^2.0.10", - "compression": "^1.8.1", - "connect-history-api-fallback": "^2.0.0", - "express": "^4.22.1", - "graceful-fs": "^4.2.6", - "http-proxy-middleware": "^2.0.9", - "ipaddr.js": "^2.1.0", - "launch-editor": "^2.6.1", - "open": "^10.0.3", - "p-retry": "^6.2.0", - "schema-utils": "^4.2.0", - "selfsigned": "^2.4.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^7.4.2", - "ws": "^8.18.0" - }, - "engines": { - "node": ">= 18.12.0" + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "@rspack/core": "*" + "@svgr/core": "*" } }, - "node_modules/@rspack/dev-server/node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" }, "engines": { - "node": ">= 0.6" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" } }, - "node_modules/@rspack/dev-server/node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "node_modules/@svgr/webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@rspack/dev-server/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/@swc-node/core": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@swc-node/core/-/core-1.14.1.tgz", + "integrity": "sha512-jrt5GUaZUU6cmMS+WTJEvGvaB6j1YNKPHPzC2PUi2BjaFbtxURHj6641Az6xN7b665hNniAIdvjxWcRml5yCnw==", "dev": true, "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, "engines": { - "node": ">= 8.10.0" + "node": ">= 10" }, "funding": { - "url": "https://paulmillr.com/funding/" + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "peerDependencies": { + "@swc/core": ">= 1.13.3", + "@swc/types": ">= 0.1" } }, - "node_modules/@rspack/dev-server/node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rspack/dev-server/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@swc-node/register": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.11.1.tgz", + "integrity": "sha512-VQ0hJ5jX31TVv/fhZx4xJRzd8pwn6VvzYd2tGOHHr2TfXGCBixZoqdPDXTiEoJLCTS2MmvBf6zyQZZ0M8aGQCQ==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "@swc-node/core": "^1.14.1", + "@swc-node/sourcemap-support": "^0.6.1", + "colorette": "^2.0.20", + "debug": "^4.4.1", + "oxc-resolver": "^11.6.1", + "pirates": "^4.0.7", + "tslib": "^2.8.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@swc/core": ">= 1.4.13", + "typescript": ">= 4.3" } }, - "node_modules/@rspack/dev-server/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/@swc-node/sourcemap-support": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.6.1.tgz", + "integrity": "sha512-ovltDVH5QpdHXZkW138vG4+dgcNsxfwxHVoV6BtmTbz2KKl1A8ZSlbdtxzzfNjCjbpayda8Us9eMtcHobm38dA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "source-map-support": "^0.5.21", + "tslib": "^2.8.1" + } }, - "node_modules/@rspack/dev-server/node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "node_modules/@swc/cli": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.7.10.tgz", + "integrity": "sha512-QQ36Q1VwGTT2YzvMeNe/j1x4DKS277DscNhWc57dIwQn//C+zAgvuSupMB/XkmYqPKQX+8hjn5/cHRJrMvWy0Q==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "@swc/counter": "^0.1.3", + "@xhmikosr/bin-wrapper": "^13.0.5", + "commander": "^8.3.0", + "minimatch": "^9.0.3", + "piscina": "^4.3.1", + "semver": "^7.3.8", + "slash": "3.0.0", + "source-map": "^0.7.3", + "tinyglobby": "^0.2.13" + }, + "bin": { + "spack": "bin/spack.js", + "swc": "bin/swc.js", + "swcx": "bin/swcx.js" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 16.14.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "peerDependencies": { + "@swc/core": "^1.2.66", + "chokidar": "^4.0.1" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/@rspack/dev-server/node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "node_modules/@swc/cli/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@swc/cli/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "balanced-match": "^1.0.0" } }, - "node_modules/@rspack/dev-server/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/@swc/cli/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 12" } }, - "node_modules/@rspack/dev-server/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@swc/cli/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "brace-expansion": "^2.0.2" }, "engines": { - "node": ">= 6" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@rspack/dev-server/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "node_modules/@swc/cli/node_modules/piscina": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.9.2.tgz", + "integrity": "sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==", "dev": true, "license": "MIT", + "optionalDependencies": { + "@napi-rs/nice": "^1.0.1" + } + }, + "node_modules/@swc/core": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.8.tgz", + "integrity": "sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.25" }, "engines": { - "node": ">= 0.8" + "node": ">=10" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@rspack/dev-server/node_modules/http-proxy-middleware": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", - "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "url": "https://opencollective.com/swc" }, - "engines": { - "node": ">=12.0.0" + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.15.8", + "@swc/core-darwin-x64": "1.15.8", + "@swc/core-linux-arm-gnueabihf": "1.15.8", + "@swc/core-linux-arm64-gnu": "1.15.8", + "@swc/core-linux-arm64-musl": "1.15.8", + "@swc/core-linux-x64-gnu": "1.15.8", + "@swc/core-linux-x64-musl": "1.15.8", + "@swc/core-win32-arm64-msvc": "1.15.8", + "@swc/core-win32-ia32-msvc": "1.15.8", + "@swc/core-win32-x64-msvc": "1.15.8" }, "peerDependencies": { - "@types/express": "^4.17.13" + "@swc/helpers": ">=0.5.17" }, "peerDependenciesMeta": { - "@types/express": { + "@swc/helpers": { "optional": true } } }, - "node_modules/@rspack/dev-server/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/@swc/core-darwin-arm64": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.8.tgz", + "integrity": "sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/@rspack/dev-server/node_modules/ipaddr.js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", - "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "node_modules/@swc/core-darwin-x64": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.8.tgz", + "integrity": "sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/@rspack/dev-server/node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.8.tgz", + "integrity": "sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@rspack/dev-server/node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.8.tgz", + "integrity": "sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/@rspack/dev-server/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.8.tgz", + "integrity": "sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@rspack/dev-server/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.8.tgz", + "integrity": "sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/@rspack/dev-server/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.8.tgz", + "integrity": "sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.6" + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.8.tgz", + "integrity": "sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.8.tgz", + "integrity": "sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.8.tgz", + "integrity": "sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", + "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" } }, - "node_modules/@rspack/dev-server/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/@swc/types": { + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" } }, - "node_modules/@rspack/dev-server/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rspack/dev-server/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" + "dependencies": { + "defer-to-connect": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=14.16" } }, - "node_modules/@rspack/dev-server/node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" }, "engines": { - "node": ">= 0.8" + "node": ">=18" } }, - "node_modules/@rspack/dev-server/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", "dev": true, "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/@rspack/dev-server/node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" + "@babel/runtime": "^7.12.5" }, "engines": { - "node": ">= 0.8.0" + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@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" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@rspack/dev-server/node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "node_modules/@testing-library/svelte": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@testing-library/svelte/-/svelte-4.2.3.tgz", + "integrity": "sha512-8vM2+JSPc6wZWkO9ICPmHvzacjy8jBw+iVjmNs+0VsPV3AO3v4P8qCLWTaQ9nYW/e+IR1BCy3MM3Uqg21dlBkw==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" + "@testing-library/dom": "^9.3.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 10" + }, + "peerDependencies": { + "svelte": "^3 || ^4 || ^5" } }, - "node_modules/@rspack/dev-server/node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/@testing-library/svelte/node_modules/@testing-library/dom": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", + "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", "dev": true, "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, "engines": { - "node": ">= 0.6" + "node": ">=14" } }, - "node_modules/@rspack/lite-tapable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz", - "integrity": "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==", + "node_modules/@testing-library/svelte/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } }, - "node_modules/@rspack/plugin-react-refresh": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.6.1.tgz", - "integrity": "sha512-eqqW5645VG3CzGzFgNg5HqNdHVXY+567PGjtDhhrM8t67caxmsSzRmT5qfoEIfBcGgFkH9vEg7kzXwmCYQdQDw==", + "node_modules/@testing-library/svelte/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "dev": true, "license": "MIT", "dependencies": { - "error-stack-parser": "^2.1.4", - "html-entities": "^2.6.0" + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" }, - "peerDependencies": { - "react-refresh": ">=0.10.0 <1.0.0", - "webpack-hot-middleware": "2.x" + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "webpack-hot-middleware": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "node_modules/@testing-library/svelte/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, - "node_modules/@rushstack/node-core-library": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.3.tgz", - "integrity": "sha512-95JgEPq2k7tHxhF9/OJnnyHDXfC9cLhhta0An/6MlkDsX2A6dTzDrTUG18vx4vjc280V0fi0xDH9iQczpSuWsw==", + "node_modules/@testing-library/user-event": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", "dev": true, "license": "MIT", - "dependencies": { - "ajv": "~8.18.0", - "ajv-draft-04": "~1.0.0", - "ajv-formats": "~3.0.1", - "fs-extra": "~11.3.0", - "import-lazy": "~4.0.0", - "jju": "~1.4.0", - "resolve": "~1.22.1", - "semver": "~7.5.4" + "engines": { + "node": ">=12", + "npm": ">=6" }, "peerDependencies": { - "@types/node": "*" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "@testing-library/dom": ">=7.21.4" } }, - "node_modules/@rushstack/node-core-library/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "node_modules/@tokenizer/inflate": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz", + "integrity": "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "debug": "^4.4.0", + "fflate": "^0.8.2", + "token-types": "^6.0.0" + }, + "engines": { + "node": ">=18" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/@rushstack/node-core-library/node_modules/fs-extra": { - "version": "11.3.4", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", - "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "dev": true, "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, "engines": { - "node": ">=14.14" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@rushstack/node-core-library/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@tufjs/models": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.1.0.tgz", + "integrity": "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^10.1.1" }, "engines": { - "node": ">=10" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@rushstack/node-core-library/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "tslib": "^2.4.0" } }, - "node_modules/@rushstack/node-core-library/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/@rushstack/problem-matcher": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz", - "integrity": "sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==", + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "license": "MIT", - "peerDependencies": { - "@types/node": "*" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@rushstack/rig-package": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.2.tgz", - "integrity": "sha512-9XbFWuqMYcHUso4mnETfhGVUSaADBRj6HUAAEYk50nMPn8WRICmBuCphycQGNB3duIR6EEZX3Xj3SYc2XiP+9A==", - "dev": true, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "license": "MIT", "dependencies": { - "resolve": "~1.22.1", - "strip-json-comments": "~3.1.1" + "@babel/types": "^7.0.0" } }, - "node_modules/@rushstack/terminal": { - "version": "0.22.3", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.3.tgz", - "integrity": "sha512-gHC9pIMrUPzAbBiI4VZMU7Q+rsCzb8hJl36lFIulIzoceKotyKL3Rd76AZ2CryCTKEg+0bnTj406HE5YY5OQvw==", - "dev": true, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.20.3", - "@rushstack/problem-matcher": "0.2.1", - "supports-color": "~8.1.1" - }, - "peerDependencies": { - "@types/node": "*" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@rushstack/terminal/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "@babel/types": "^7.28.2" } }, - "node_modules/@rushstack/ts-command-line": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.3.tgz", - "integrity": "sha512-c+ltdcvC7ym+10lhwR/vWiOhsrm/bP3By2VsFcs5qTKv+6tTmxgbVrtJ5NdNjANiV5TcmOZgUN+5KYQ4llsvEw==", + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.22.3", - "@types/argparse": "1.0.38", - "argparse": "~1.0.9", - "string-argv": "~0.3.1" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@rushstack/ts-command-line/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@types/node": "*" } }, - "node_modules/@schematics/angular": { - "version": "20.1.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.1.5.tgz", - "integrity": "sha512-+bgbujb9F6cgP/hz0L8IEJy16aXIsgypTcHdckozbjDRUMtqjjmCNjutep0t6hfe9La/4hF8pKiOx9KLBFG+rw==", + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "20.1.5", - "@angular-devkit/schematics": "20.1.5", - "jsonc-parser": "3.3.1" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" } }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@semantic-release/commit-analyzer": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", - "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", - "debug": "^4.0.0", - "import-from-esm": "^1.0.3", - "lodash-es": "^4.17.21", - "micromatch": "^4.0.2" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/@semantic-release/error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", - "dev": true, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@types/ms": "*" } }, - "node_modules/@semantic-release/github": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-12.0.2.tgz", - "integrity": "sha512-qyqLS+aSGH1SfXIooBKjs7mvrv0deg8v+jemegfJg1kq6ji+GJV8CO08VJDEsvjp3O8XJmTTIAjjZbMzagzsdw==", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/core": "^7.0.0", - "@octokit/plugin-paginate-rest": "^14.0.0", - "@octokit/plugin-retry": "^8.0.0", - "@octokit/plugin-throttling": "^11.0.0", - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "debug": "^4.3.4", - "dir-glob": "^3.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "issue-parser": "^7.0.0", - "lodash-es": "^4.17.21", - "mime": "^4.0.0", - "p-filter": "^4.0.0", - "tinyglobby": "^0.2.14", - "undici": "^7.0.0", - "url-join": "^5.0.0" - }, - "engines": { - "node": "^22.14.0 || >= 24.10.0" - }, - "peerDependencies": { - "semantic-release": ">=24.1.0" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@semantic-release/github/node_modules/mime": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", - "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, - "funding": [ - "https://github.com/sponsors/broofa" - ], "license": "MIT", - "bin": { - "mime": "bin/cli.js" - }, - "engines": { - "node": ">=16" + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@semantic-release/github/node_modules/url-join": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", - "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "node_modules/@types/esquery": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/esquery/-/esquery-1.5.4.tgz", + "integrity": "sha512-yYO4Q8H+KJHKW1rEeSzHxcZi90durqYgWVfnh5K6ZADVBjBv2e1NEveYX5yT2bffgN7RqzH3k9930m+i2yBoMA==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dependencies": { + "@types/estree": "*" } }, - "node_modules/@semantic-release/npm": { - "version": "13.1.5", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-13.1.5.tgz", - "integrity": "sha512-Hq5UxzoatN3LHiq2rTsWS54nCdqJHlsssGERCo8WlvdfFA9LoN0vO+OuKVSjtNapIc/S8C2LBj206wKLHg62mg==", - "dev": true, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", "license": "MIT", "dependencies": { - "@actions/core": "^3.0.0", - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "env-ci": "^11.2.0", - "execa": "^9.0.0", - "fs-extra": "^11.0.0", - "lodash-es": "^4.17.21", - "nerf-dart": "^1.0.0", - "normalize-url": "^9.0.0", - "npm": "^11.6.2", - "rc": "^1.2.8", - "read-pkg": "^10.0.0", - "registry-auth-token": "^5.0.0", - "semver": "^7.1.2", - "tempy": "^3.0.0" - }, - "engines": { - "node": "^22.14.0 || >= 24.10.0" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" + "@types/estree": "*" } }, - "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", - "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" } }, - "node_modules/@semantic-release/npm/node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "node_modules/@types/express-serve-static-core": { + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "dev": true, "license": "MIT", "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/@semantic-release/npm/node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" + "@types/node": "*" } }, - "node_modules/@semantic-release/npm/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dev": true, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "license": "MIT", "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/unist": "*" } }, - "node_modules/@semantic-release/npm/node_modules/human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "node_modules/@types/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } + "license": "MIT" }, - "node_modules/@semantic-release/npm/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/@semantic-release/npm/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/@types/http-proxy": { + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/node": "*" } }, - "node_modules/@semantic-release/npm/node_modules/normalize-package-data": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-8.0.0.tgz", - "integrity": "sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^9.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@semantic-release/npm/node_modules/normalize-url": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-9.0.0.tgz", - "integrity": "sha512-z9nC87iaZXXySbWWtTHfCFJyFvKaUAW6lODhikG7ILSbVgmwuFjUqkgnheHvAUcGedO29e2QGBRXMUD64aurqQ==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/istanbul-lib-report": "*" } }, - "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/parse-json": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", - "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "index-to-position": "^1.1.0", - "type-fest": "^4.39.1" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/parse-json/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/@semantic-release/npm/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@semantic-release/npm/node_modules/read-pkg": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.0.0.tgz", - "integrity": "sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==", + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.4", - "normalize-package-data": "^8.0.0", - "parse-json": "^8.3.0", - "type-fest": "^5.2.0", - "unicorn-magic": "^0.3.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/type-fest": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.3.1.tgz", - "integrity": "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg==", + "node_modules/@types/jsdom/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "dependencies": { - "tagged-tag": "^1.0.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=20" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/@semantic-release/npm/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "node_modules/@types/jsdom/node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "entities": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/@semantic-release/release-notes-generator": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", - "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-changelog-writer": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", - "debug": "^4.0.0", - "get-stream": "^7.0.0", - "import-from-esm": "^1.0.3", - "into-stream": "^7.0.0", - "lodash-es": "^4.17.21", - "read-pkg-up": "^11.0.0" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" + "@types/unist": "*" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", - "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/unist": "*" } }, - "node_modules/@shikijs/core": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.21.0.tgz", - "integrity": "sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==", + "node_modules/@types/node": { + "version": "20.19.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.35.tgz", + "integrity": "sha512-Uarfe6J91b9HAUXxjvSOdiO2UPOKLm07Q1oh0JHxoZ1y8HoqxDAu3gVrsrOHeiio0kSsoVBt4wFrKOm0dKxVPQ==", + "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.21.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" + "undici-types": "~6.21.0" } }, - "node_modules/@shikijs/engine-javascript": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.21.0.tgz", - "integrity": "sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==", + "node_modules/@types/node-forge": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.21.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.4" + "@types/node": "*" } }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.21.0.tgz", - "integrity": "sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.21.0", - "@shikijs/vscode-textmate": "^10.0.2" - } + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/pug": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz", + "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" }, - "node_modules/@shikijs/langs": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.21.0.tgz", - "integrity": "sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.21.0" - } + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" }, - "node_modules/@shikijs/themes": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.21.0.tgz", - "integrity": "sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==", + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.21.0" + "csstype": "^3.2.2" } }, - "node_modules/@shikijs/types": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.21.0.tgz", - "integrity": "sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==", + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "peerDependencies": { + "@types/react": "^19.2.0" } }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "license": "MIT" - }, - "node_modules/@sigstore/bundle": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz", - "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==", + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.5.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } + "license": "MIT" }, - "node_modules/@sigstore/core": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.1.0.tgz", - "integrity": "sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==", + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } + "license": "MIT" }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", - "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } + "license": "MIT" }, - "node_modules/@sigstore/sign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.0.tgz", - "integrity": "sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==", + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.1.0", - "@sigstore/protobuf-specs": "^0.5.0", - "make-fetch-happen": "^15.0.3", - "proc-log": "^6.1.0", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@types/node": "*" } }, - "node_modules/@sigstore/tuf": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.1.tgz", - "integrity": "sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==", + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@sigstore/protobuf-specs": "^0.5.0", - "tuf-js": "^4.1.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@types/express": "*" } }, - "node_modules/@sigstore/verify": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.0.tgz", - "integrity": "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==", + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.1.0", - "@sigstore/protobuf-specs": "^0.5.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" } }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "license": "MIT" - }, - "node_modules/@sindresorhus/is": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", - "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "license": "BSD-3-Clause", "dependencies": { - "type-detect": "4.0.8" + "@types/node": "*" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", "dev": true, "license": "MIT" }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", - "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "license": "MIT", "dependencies": { - "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", - "debug": "^4.3.4", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.10", - "svelte-hmr": "^0.16.0", - "vitefu": "^0.2.5" - }, - "engines": { - "node": "^18.0.0 || >=20" - }, - "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.0", - "vite": "^5.0.0" + "@types/node": "*" } }, - "node_modules/@sveltejs/vite-plugin-svelte-inspector": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", - "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.0.0 || >=20" - }, - "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte": "^4.0.0 || ^5.0.0-next.0", - "vite": "^5.0.0" + "@types/yargs-parser": "*" } }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "dev": true, "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, "engines": { - "node": ">=14" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", - "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, "engines": { - "node": ">=14" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", - "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, "engines": { - "node": ">=14" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", - "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", + "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.56.1", + "@typescript-eslint/types": "^8.56.1", + "debug": "^4.4.3" + }, "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", - "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", "dev": true, "license": "MIT", "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", - "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, "engines": { - "node": ">=14" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", - "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", + "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@svgr/babel-preset": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", - "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", + "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", "dev": true, "license": "MIT", "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", - "@svgr/babel-plugin-transform-svg-component": "8.0.0" + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/utils": "8.56.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@svgr/core": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", - "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", + "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^8.1.3", - "snake-case": "^3.0.4" + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1" }, "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", - "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.21.3", - "entities": "^4.4.0" - }, "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@svgr/plugin-jsx": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", - "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", + "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "@svgr/hast-util-to-babel-ast": "8.0.0", - "svg-parser": "^2.0.4" + "@typescript-eslint/project-service": "8.56.1", + "@typescript-eslint/tsconfig-utils": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@svgr/core": "*" - } - }, - "node_modules/@svgr/plugin-svgo": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", - "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", + "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", "dev": true, "license": "MIT", "dependencies": { - "cosmiconfig": "^8.1.3", - "deepmerge": "^4.3.1", - "svgo": "^3.0.2" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1" }, "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@svgr/core": "*" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@svgr/webpack": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", - "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", + "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.21.3", - "@babel/plugin-transform-react-constant-elements": "^7.21.3", - "@babel/preset-env": "^7.20.2", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.21.0", - "@svgr/core": "8.1.0", - "@svgr/plugin-jsx": "8.1.0", - "@svgr/plugin-svgo": "8.1.0" + "@typescript-eslint/types": "8.56.1", + "eslint-visitor-keys": "^5.0.0" }, "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@swc-node/core": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@swc-node/core/-/core-1.14.1.tgz", - "integrity": "sha512-jrt5GUaZUU6cmMS+WTJEvGvaB6j1YNKPHPzC2PUi2BjaFbtxURHj6641Az6xN7b665hNniAIdvjxWcRml5yCnw==", + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">= 10" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@swc/core": ">= 1.13.3", - "@swc/types": ">= 0.1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@swc-node/register": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.11.1.tgz", - "integrity": "sha512-VQ0hJ5jX31TVv/fhZx4xJRzd8pwn6VvzYd2tGOHHr2TfXGCBixZoqdPDXTiEoJLCTS2MmvBf6zyQZZ0M8aGQCQ==", + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "@swc-node/core": "^1.14.1", - "@swc-node/sourcemap-support": "^0.6.1", - "colorette": "^2.0.20", - "debug": "^4.4.1", - "oxc-resolver": "^11.6.1", - "pirates": "^4.0.7", - "tslib": "^2.8.1" + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" }, "peerDependencies": { - "@swc/core": ">= 1.4.13", - "typescript": ">= 4.3" + "typescript": ">=4.8.4" } }, - "node_modules/@swc-node/sourcemap-support": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.6.1.tgz", - "integrity": "sha512-ovltDVH5QpdHXZkW138vG4+dgcNsxfwxHVoV6BtmTbz2KKl1A8ZSlbdtxzzfNjCjbpayda8Us9eMtcHobm38dA==", + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", "dev": true, "license": "MIT", - "dependencies": { - "source-map-support": "^0.5.21", - "tslib": "^2.8.1" + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@swc/cli": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.7.10.tgz", - "integrity": "sha512-QQ36Q1VwGTT2YzvMeNe/j1x4DKS277DscNhWc57dIwQn//C+zAgvuSupMB/XkmYqPKQX+8hjn5/cHRJrMvWy0Q==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@swc/counter": "^0.1.3", - "@xhmikosr/bin-wrapper": "^13.0.5", - "commander": "^8.3.0", - "minimatch": "^9.0.3", - "piscina": "^4.3.1", - "semver": "^7.3.8", - "slash": "3.0.0", - "source-map": "^0.7.3", - "tinyglobby": "^0.2.13" - }, - "bin": { - "spack": "bin/spack.js", - "swc": "bin/swc.js", - "swcx": "bin/swcx.js" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": ">= 16.14.0" + "node": "^18.18.0 || >=20.0.0" }, - "peerDependencies": { - "@swc/core": "^1.2.66", - "chokidar": "^4.0.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependenciesMeta": { - "chokidar": { + "typescript": { "optional": true } } }, - "node_modules/@swc/cli/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 12" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/@swc/cli/node_modules/piscina": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.9.2.tgz", - "integrity": "sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, - "license": "MIT", - "optionalDependencies": { - "@napi-rs/nice": "^1.0.1" + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@swc/core": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.8.tgz", - "integrity": "sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw==", + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.25" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.8", - "@swc/core-darwin-x64": "1.15.8", - "@swc/core-linux-arm-gnueabihf": "1.15.8", - "@swc/core-linux-arm64-gnu": "1.15.8", - "@swc/core-linux-arm64-musl": "1.15.8", - "@swc/core-linux-x64-gnu": "1.15.8", - "@swc/core-linux-x64-musl": "1.15.8", - "@swc/core-win32-arm64-msvc": "1.15.8", - "@swc/core-win32-ia32-msvc": "1.15.8", - "@swc/core-win32-x64-msvc": "1.15.8" + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@swc/helpers": ">=0.5.17" + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.8.tgz", - "integrity": "sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg==", + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", "cpu": [ "arm64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ - "darwin" + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" ], - "engines": { - "node": ">=10" - } + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.8.tgz", - "integrity": "sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ==", + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", "cpu": [ "x64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" ], - "engines": { - "node": ">=10" - } + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.8.tgz", - "integrity": "sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg==", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", "cpu": [ "arm" ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", "optional": true, "os": [ "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" ], - "engines": { - "node": ">=10" - } + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.8.tgz", - "integrity": "sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q==", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", "cpu": [ "arm64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">=10" - } + ] }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.8.tgz", - "integrity": "sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw==", + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", "cpu": [ "arm64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" ], - "engines": { - "node": ">=10" - } + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.8.tgz", - "integrity": "sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ==", + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", "cpu": [ - "x64" + "riscv64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" ], - "engines": { - "node": ">=10" - } + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.8.tgz", - "integrity": "sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA==", + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", "cpu": [ "x64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, "engines": { - "node": ">=10" + "node": ">=14.0.0" } }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.8.tgz", - "integrity": "sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ==", + "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", "cpu": [ "arm64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "win32" - ], - "engines": { - "node": ">=10" - } + ] }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.8.tgz", - "integrity": "sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ==", + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", "cpu": [ "ia32" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "win32" - ], - "engines": { - "node": ">=10" - } + ] }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.8.tgz", - "integrity": "sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA==", + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", "cpu": [ "x64" ], "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "optional": true, "os": [ "win32" - ], - "engines": { - "node": ">=10" - } + ] }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.0.tgz", + "integrity": "sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==", "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@swc/helpers": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", - "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" + "license": "MIT", + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "peerDependencies": { + "vite": "^6.0.0 || ^7.0.0" } }, - "node_modules/@swc/types": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", - "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "license": "MIT", "dependencies": { - "@swc/counter": "^0.1.3" + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.11.0.tgz", + "integrity": "sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==", "dev": true, "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.1" + "@rolldown/pluginutils": "1.0.0-beta.27", + "@swc/core": "^1.12.11" }, - "engines": { - "node": ">=14.16" + "peerDependencies": { + "vite": "^4 || ^5 || ^6 || ^7" } }, - "node_modules/@testing-library/dom": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", - "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "node_modules/@vitest/browser": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.0.18.tgz", + "integrity": "sha512-gVQqh7paBz3gC+ZdcCmNSWJMk70IUjDeVqi+5m5vYpEHsIwRgw3Y545jljtajhkekIpIp5Gg8oK7bctgY0E2Ng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.3.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "picocolors": "1.1.1", - "pretty-format": "^27.0.2" + "@vitest/mocker": "4.0.18", + "@vitest/utils": "4.0.18", + "magic-string": "^0.30.21", + "pixelmatch": "7.1.0", + "pngjs": "^7.0.0", + "sirv": "^3.0.2", + "tinyrainbow": "^3.0.3", + "ws": "^8.18.3" }, - "engines": { - "node": ">=18" + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "4.0.18" } }, - "node_modules/@testing-library/jest-dom": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", - "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "node_modules/@vitest/browser-playwright": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.0.18.tgz", + "integrity": "sha512-gfajTHVCiwpxRj1qh0Sh/5bbGLG4F/ZH/V9xvFVoFddpITfMta9YGow0W6ZpTTORv2vdJuz9TnrNSmjKvpOf4g==", "dev": true, "license": "MIT", "dependencies": { - "@adobe/css-tools": "^4.4.0", - "aria-query": "^5.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.6.3", - "picocolors": "^1.1.1", - "redent": "^3.0.0" + "@vitest/browser": "4.0.18", + "@vitest/mocker": "4.0.18", + "tinyrainbow": "^3.0.3" }, - "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1" + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "playwright": "*", + "vitest": "4.0.18" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": false + } } }, - "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@testing-library/react": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", - "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", + "node_modules/@vitest/browser/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5" - }, "engines": { - "node": ">=18" + "node": ">=10.0.0" }, "peerDependencies": { - "@testing-library/dom": "^10.0.0", - "@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" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { - "@types/react": { + "bufferutil": { "optional": true }, - "@types/react-dom": { + "utf-8-validate": { "optional": true } } }, - "node_modules/@testing-library/svelte": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@testing-library/svelte/-/svelte-4.2.3.tgz", - "integrity": "sha512-8vM2+JSPc6wZWkO9ICPmHvzacjy8jBw+iVjmNs+0VsPV3AO3v4P8qCLWTaQ9nYW/e+IR1BCy3MM3Uqg21dlBkw==", + "node_modules/@vitest/coverage-v8": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.18.tgz", + "integrity": "sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==", "dev": true, "license": "MIT", "dependencies": { - "@testing-library/dom": "^9.3.1" + "@bcoe/v8-coverage": "^1.0.2", + "@vitest/utils": "4.0.18", + "ast-v8-to-istanbul": "^0.3.10", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.2.0", + "magicast": "^0.5.1", + "obug": "^2.1.1", + "std-env": "^3.10.0", + "tinyrainbow": "^3.0.3" }, - "engines": { - "node": ">= 10" + "funding": { + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "svelte": "^3 || ^4 || ^5" + "@vitest/browser": "4.0.18", + "vitest": "4.0.18" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, - "node_modules/@testing-library/svelte/node_modules/@testing-library/dom": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", - "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", + "node_modules/@vitest/coverage-v8/node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, "engines": { - "node": ">=14" - } - }, - "node_modules/@testing-library/svelte/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "deep-equal": "^2.0.5" + "node": ">=18" } }, - "node_modules/@testing-library/svelte/node_modules/deep-equal": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "node_modules/@vitest/expect": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", + "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.5", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.2", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@testing-library/svelte/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@testing-library/user-event": { - "version": "14.6.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", - "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", + "node_modules/@vitest/mocker": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", + "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" + "dependencies": { + "@vitest/spy": "4.0.18", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@testing-library/dom": ">=7.21.4" + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/@tokenizer/inflate": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz", - "integrity": "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==", + "node_modules/@vitest/pretty-format": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "fflate": "^0.8.2", - "token-types": "^6.0.0" - }, - "engines": { - "node": ">=18" + "tinyrainbow": "^3.0.3" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "license": "MIT" - }, - "node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", - "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "node_modules/@vitest/runner": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", + "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", "dev": true, "license": "MIT", - "engines": { - "node": "^16.14.0 || >=18.0.0" + "dependencies": { + "@vitest/utils": "4.0.18", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@tufjs/models": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.1.0.tgz", - "integrity": "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==", + "node_modules/@vitest/snapshot": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", + "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", "dev": true, "license": "MIT", "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^10.1.1" + "@vitest/pretty-format": "4.0.18", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@tufjs/models/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "node_modules/@vitest/spy": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", "dev": true, "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "node_modules/@vitest/ui": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.18.tgz", + "integrity": "sha512-CGJ25bc8fRi8Lod/3GHSvXRKi7nBo3kxh0ApW4yCjmrWmRmlT53B5E08XRSZRliygG0aVNxLrBEqPYdz/KcCtQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "@vitest/utils": "4.0.18", + "fflate": "^0.8.2", + "flatted": "^3.3.3", + "pathe": "^2.0.3", + "sirv": "^3.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3" }, - "engines": { - "node": "18 || 20 || >=22" + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "4.0.18" } }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "node_modules/@vitest/utils": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "@vitest/pretty-format": "4.0.18", + "tinyrainbow": "^3.0.3" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "node_modules/@volar/kit": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.28.tgz", + "integrity": "sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "tslib": "^2.4.0" + "@volar/language-service": "2.4.28", + "@volar/typescript": "2.4.28", + "typesafe-path": "^0.2.2", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "typescript": "*" } }, - "node_modules/@types/argparse": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", - "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "node_modules/@volar/language-core": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz", + "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "@volar/source-map": "2.4.28" } }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "node_modules/@volar/language-server": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.28.tgz", + "integrity": "sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.0.0" + "@volar/language-core": "2.4.28", + "@volar/language-service": "2.4.28", + "@volar/typescript": "2.4.28", + "path-browserify": "^1.0.1", + "request-light": "^0.7.0", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" } }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "node_modules/@volar/language-service": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.28.tgz", + "integrity": "sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@volar/language-core": "2.4.28", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" } }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "node_modules/@volar/source-map": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz", + "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.28.tgz", + "integrity": "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.2" + "@volar/language-core": "2.4.28", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" } }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "node_modules/@vscode/emmet-helper": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.11.0.tgz", + "integrity": "sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==", "dev": true, "license": "MIT", "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "emmet": "^2.4.3", + "jsonc-parser": "^2.3.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-uri": "^3.0.8" } }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "node_modules/@vscode/emmet-helper/node_modules/jsonc-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", + "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vscode/l10n": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", + "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.29.tgz", + "integrity": "sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/parser": "^7.29.0", + "@vue/shared": "3.5.29", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" } }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "node_modules/@vue/compiler-core/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "node_modules/@vue/compiler-core/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.29.tgz", + "integrity": "sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@vue/compiler-core": "3.5.29", + "@vue/shared": "3.5.29" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", "dev": true, "license": "MIT", "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "de-indent": "^1.0.2", + "he": "^1.2.0" } }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "node_modules/@vue/language-core": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.0.tgz", + "integrity": "sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/ms": "*" + "@volar/language-core": "~2.4.11", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^0.4.9", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "node_modules/@vue/language-core/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "node_modules/@vue/language-core/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "balanced-match": "^1.0.0" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "node_modules/@vue/language-core/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@types/esquery": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/esquery/-/esquery-1.5.4.tgz", - "integrity": "sha512-yYO4Q8H+KJHKW1rEeSzHxcZi90durqYgWVfnh5K6ZADVBjBv2e1NEveYX5yT2bffgN7RqzH3k9930m+i2yBoMA==", + "node_modules/@vue/shared": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.29.tgz", + "integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "*" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, "license": "MIT" }, - "node_modules/@types/estree-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" }, - "node_modules/@types/express": { - "version": "4.17.25", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", - "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "^1" + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", - "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "license": "MIT", + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/unist": "*" + "@xtuc/long": "4.2.2" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, "license": "MIT" }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } }, - "node_modules/@types/http-proxy": { - "version": "1.17.17", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", - "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "*" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-report": "*" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/@xhmikosr/archive-type": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-7.1.0.tgz", + "integrity": "sha512-xZEpnGplg1sNPyEgFh0zbHxqlw5dtYg6viplmWSxUj12+QjU9SKu3U/2G73a15pEjLaOqTefNSZ1fOPUOT4Xgg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "file-type": "^20.5.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=18" } }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/@xhmikosr/bin-check": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/bin-check/-/bin-check-7.1.0.tgz", + "integrity": "sha512-y1O95J4mnl+6MpVmKfMYXec17hMEwE/yeCglFNdx+QvLLtP0yN4rSYcbkXnth+lElBuKKek2NbvOfOGPpUXCvw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "execa": "^5.1.1", + "isexe": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/jsdom": { - "version": "21.1.7", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", - "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", + "node_modules/@xhmikosr/bin-wrapper": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/bin-wrapper/-/bin-wrapper-13.2.0.tgz", + "integrity": "sha512-t9U9X0sDPRGDk5TGx4dv5xiOvniVJpXnfTuynVKwHgtib95NYEw4MkZdJqhoSiz820D9m0o6PCqOPMXz0N9fIw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" + "@xhmikosr/bin-check": "^7.1.0", + "@xhmikosr/downloader": "^15.2.0", + "@xhmikosr/os-filter-obj": "^3.0.0", + "bin-version-check": "^5.1.0" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@types/jsdom/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "node_modules/@xhmikosr/decompress": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress/-/decompress-10.2.0.tgz", + "integrity": "sha512-MmDBvu0+GmADyQWHolcZuIWffgfnuTo4xpr2I/Qw5Ox0gt+e1Be7oYqJM4te5ylL6mzlcoicnHVDvP27zft8tg==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" + "license": "MIT", + "dependencies": { + "@xhmikosr/decompress-tar": "^8.1.0", + "@xhmikosr/decompress-tarbz2": "^8.1.0", + "@xhmikosr/decompress-targz": "^8.1.0", + "@xhmikosr/decompress-unzip": "^7.1.0", + "graceful-fs": "^4.2.11", + "strip-dirs": "^3.0.0" }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "engines": { + "node": ">=18" } }, - "node_modules/@types/jsdom/node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "node_modules/@xhmikosr/decompress-tar": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tar/-/decompress-tar-8.1.0.tgz", + "integrity": "sha512-m0q8x6lwxenh1CrsTby0Jrjq4vzW/QU1OLhTHMQLEdHpmjR1lgahGz++seZI0bXF3XcZw3U3xHfqZSz+JPP2Gg==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^6.0.0" + "file-type": "^20.5.0", + "is-stream": "^2.0.1", + "tar-stream": "^3.1.7" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "engines": { + "node": ">=18" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "node_modules/@xhmikosr/decompress-tarbz2": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tarbz2/-/decompress-tarbz2-8.1.0.tgz", + "integrity": "sha512-aCLfr3A/FWZnOu5eqnJfme1Z1aumai/WRw55pCvBP+hCGnTFrcpsuiaVN5zmWTR53a8umxncY2JuYsD42QQEbw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@xhmikosr/decompress-tar": "^8.0.1", + "file-type": "^20.5.0", + "is-stream": "^2.0.1", + "seek-bzip": "^2.0.0", + "unbzip2-stream": "^1.4.3" + }, + "engines": { + "node": ">=18" + } }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "node_modules/@xhmikosr/decompress-targz": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-targz/-/decompress-targz-8.1.0.tgz", + "integrity": "sha512-fhClQ2wTmzxzdz2OhSQNo9ExefrAagw93qaG1YggoIz/QpI7atSRa7eOHv4JZkpHWs91XNn8Hry3CwUlBQhfPA==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "license": "MIT", "dependencies": { - "@types/unist": "*" + "@xhmikosr/decompress-tar": "^8.0.1", + "file-type": "^20.5.0", + "is-stream": "^2.0.1" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@types/mdx": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", - "license": "MIT" - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "node_modules/@xhmikosr/decompress-unzip": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-unzip/-/decompress-unzip-7.1.0.tgz", + "integrity": "sha512-oqTYAcObqTlg8owulxFTqiaJkfv2SHsxxxz9Wg4krJAHVzGWlZsU8tAB30R6ow+aHrfv4Kub6WQ8u04NWVPUpA==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "license": "MIT" - }, - "node_modules/@types/nlcst": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", - "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", "license": "MIT", "dependencies": { - "@types/unist": "*" + "file-type": "^20.5.0", + "get-stream": "^6.0.1", + "yauzl": "^3.1.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@types/node": { - "version": "20.19.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", - "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", + "node_modules/@xhmikosr/downloader": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-15.2.0.tgz", + "integrity": "sha512-lAqbig3uRGTt0sHNIM4vUG9HoM+mRl8K28WuYxyXLCUT6pyzl4Y4i0LZ3jMEsCYZ6zjPZbO9XkG91OSTd4si7g==", + "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "@xhmikosr/archive-type": "^7.1.0", + "@xhmikosr/decompress": "^10.2.0", + "content-disposition": "^0.5.4", + "defaults": "^2.0.2", + "ext-name": "^5.0.0", + "file-type": "^20.5.0", + "filenamify": "^6.0.0", + "get-stream": "^6.0.1", + "got": "^13.0.0" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@types/node-forge": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", - "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "node_modules/@xhmikosr/os-filter-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/os-filter-obj/-/os-filter-obj-3.0.0.tgz", + "integrity": "sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "arch": "^3.0.0" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "license": "MIT" + "license": "BSD-3-Clause" }, - "node_modules/@types/pug": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz", - "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==", + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, - "license": "MIT" + "license": "Apache-2.0" }, - "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause" }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "node_modules/@yarnpkg/parsers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz", + "integrity": "sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause", + "dependencies": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=18.12.0" + } }, - "node_modules/@types/react": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", - "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "node_modules/@yarnpkg/parsers/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", "dependencies": { - "csstype": "^3.2.2" + "sprintf-js": "~1.0.2" } }, - "node_modules/@types/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", - "peerDependencies": { - "@types/react": "^19.2.0" + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true, - "license": "MIT" + "node_modules/@zip.js/zip.js": { + "version": "2.8.22", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.22.tgz", + "integrity": "sha512-0KlzbVR6r8irIX2o3zvUlosBDef62VDl47oUfa1U/qgEs67h4/eGBrX/6HWa1RQbt+J6sAeVmtyFKbTHNdF8qQ==", + "license": "BSD-3-Clause", + "engines": { + "bun": ">=0.7.0", + "deno": ">=1.0.0", + "node": ">=18.0.0" + } }, - "node_modules/@types/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", - "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "node_modules/@zkochan/js-yaml": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", + "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "node_modules/abbrev": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", + "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*" + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@types/serve-static": { - "version": "1.15.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", - "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "<1" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/@types/serve-static/node_modules/@types/send": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", - "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "node_modules/accepts/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "engines": { + "node": ">= 0.6" } }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "dev": true, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", - "dependencies": { - "@types/node": "*" + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "license": "MIT", - "optional": true + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT" + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/type-utils": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8.9" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8.9.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "node_modules/adm-zip": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4" - }, + "license": "MIT", "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=12.0" } }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz", - "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==", + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.47.0", - "@typescript-eslint/types": "^8.47.0", - "debug": "^4.3.4" + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", - "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", + "node_modules/aggregate-error/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz", - "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==", + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.47.0.tgz", - "integrity": "sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==", + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0", - "@typescript-eslint/utils": "8.47.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" + "ajv": "^8.0.0" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "peerDependencies": { + "ajv": "^8.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "ajv": "^8.8.2" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", - "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", + "node_modules/algoliasearch": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.46.2.tgz", + "integrity": "sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0" + "@algolia/abtesting": "1.12.2", + "@algolia/client-abtesting": "5.46.2", + "@algolia/client-analytics": "5.46.2", + "@algolia/client-common": "5.46.2", + "@algolia/client-insights": "5.46.2", + "@algolia/client-personalization": "5.46.2", + "@algolia/client-query-suggestions": "5.46.2", + "@algolia/client-search": "5.46.2", + "@algolia/ingestion": "1.46.2", + "@algolia/monitoring": "1.46.2", + "@algolia/recommend": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 14.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", - "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", + "node_modules/alien-signals": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-0.4.14.tgz", + "integrity": "sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==", "dev": true, + "license": "MIT" + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", - "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", - "dev": true, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.47.0", - "@typescript-eslint/tsconfig-utils": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "node": ">=8" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", - "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "node": ">=6" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", - "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "eslint-visitor-keys": "^4.2.1" + "type-fest": "^0.21.3" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "Apache-2.0", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" + "node": ">=8" } }, - "node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.2" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 8" } }, - "node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", - "dev": true, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" - }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=8.6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "node_modules/arch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-3.0.0.tgz", + "integrity": "sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==", "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], + "node_modules/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">=8" + } }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=14.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "node_modules/asn1js": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", + "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", "license": "MIT", - "optional": true, "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" } }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": ">=12" + } }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.12.tgz", + "integrity": "sha512-BRRC8VRZY2R4Z4lFIL35MwNXmwVqBityvOIwETtsCSwvjl0IdgFsy9NhdaA6j74nUdtJJlIypeRhpDam19Wq3g==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^10.0.0" + } }, - "node_modules/@vitejs/plugin-basic-ssl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.0.tgz", - "integrity": "sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==", + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", "dev": true, + "license": "MIT" + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", "license": "MIT", - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "peerDependencies": { - "vite": "^6.0.0 || ^7.0.0" + "bin": { + "astring": "bin/astring" } }, - "node_modules/@vitejs/plugin-react": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", - "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "node_modules/astro": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.18.0.tgz", + "integrity": "sha512-CHiohwJIS4L0G6/IzE1Fx3dgWqXBCXus/od0eGUfxrZJD2um2pE7ehclMmgL/fXqbU7NfE1Ze2pq34h2QaA6iQ==", "license": "MIT", "dependencies": { - "@babel/core": "^7.28.0", - "@babel/plugin-transform-react-jsx-self": "^7.27.1", - "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-beta.27", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.17.0" + "@astrojs/compiler": "^2.13.0", + "@astrojs/internal-helpers": "0.7.5", + "@astrojs/markdown-remark": "6.3.10", + "@astrojs/telemetry": "3.3.0", + "@capsizecss/unpack": "^4.0.0", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.3.0", + "acorn": "^8.15.0", + "aria-query": "^5.3.2", + "axobject-query": "^4.1.0", + "boxen": "8.0.1", + "ci-info": "^4.3.1", + "clsx": "^2.1.1", + "common-ancestor-path": "^1.0.1", + "cookie": "^1.1.1", + "cssesc": "^3.0.0", + "debug": "^4.4.3", + "deterministic-object-hash": "^2.0.2", + "devalue": "^5.6.2", + "diff": "^8.0.3", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "es-module-lexer": "^1.7.0", + "esbuild": "^0.27.3", + "estree-walker": "^3.0.3", + "flattie": "^1.1.1", + "fontace": "~0.4.0", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.2.0", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.1", + "magic-string": "^0.30.21", + "magicast": "^0.5.1", + "mrmime": "^2.0.1", + "neotraverse": "^0.6.18", + "p-limit": "^6.2.0", + "p-queue": "^8.1.1", + "package-manager-detector": "^1.6.0", + "piccolore": "^0.1.3", + "picomatch": "^4.0.3", + "prompts": "^2.4.2", + "rehype": "^13.0.2", + "semver": "^7.7.3", + "shiki": "^3.21.0", + "smol-toml": "^1.6.0", + "svgo": "^4.0.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tsconfck": "^3.1.6", + "ultrahtml": "^1.6.0", + "unifont": "~0.7.3", + "unist-util-visit": "^5.0.0", + "unstorage": "^1.17.4", + "vfile": "^6.0.3", + "vite": "^6.4.1", + "vitefu": "^1.1.1", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^21.1.1", + "yocto-spinner": "^0.2.3", + "zod": "^3.25.76", + "zod-to-json-schema": "^3.25.1", + "zod-to-ts": "^1.2.0" + }, + "bin": { + "astro": "astro.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, + "optionalDependencies": { + "sharp": "^0.34.0" } }, - "node_modules/@vitejs/plugin-react-swc": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.11.0.tgz", - "integrity": "sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==", - "dev": true, - "license": "MIT", + "node_modules/astro/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/astro/node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/astro/node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", "dependencies": { - "@rolldown/pluginutils": "1.0.0-beta.27", - "@swc/core": "^1.12.11" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "peerDependencies": { - "vite": "^4 || ^5 || ^6 || ^7" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/@vitest/browser": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.0.13.tgz", - "integrity": "sha512-lruSgrYPVAJzKmX6EJYCg9nY+0A4VkeTLpTzf1jRD/XMjNbzD9yy7D499xmVKglwJczANYJXBvZSPGcRlon+0w==", - "dev": true, + "node_modules/astro/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "license": "MIT", "dependencies": { - "@vitest/mocker": "4.0.13", - "@vitest/utils": "4.0.13", - "magic-string": "^0.30.21", - "pixelmatch": "7.1.0", - "pngjs": "^7.0.0", - "sirv": "^3.0.2", - "tinyrainbow": "^3.0.3", - "ws": "^8.18.3" + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/astro/node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" }, - "peerDependencies": { - "vitest": "4.0.13" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/@vitest/browser-playwright": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.0.13.tgz", - "integrity": "sha512-oaRY+/pvwS4/sN2rE2aZh9jdli8EkXm5AidmXEbWRu2wW0omG9PmgChWCX2jsD9qRLQxXTSLl5oKezANNF6LnQ==", - "dev": true, + "node_modules/astro/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, + "node_modules/astro/node_modules/svgo": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", + "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", "license": "MIT", "dependencies": { - "@vitest/browser": "4.0.13", - "@vitest/mocker": "4.0.13", - "tinyrainbow": "^3.0.3" + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.5.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "bin": { + "svgo": "bin/svgo.js" }, - "peerDependencies": { - "playwright": "*", - "vitest": "4.0.13" + "engines": { + "node": ">=16" }, - "peerDependenciesMeta": { - "playwright": { - "optional": false - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, - "node_modules/@vitest/browser/node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, + "node_modules/astro/node_modules/vite": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/@vitest/browser/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "dev": true, - "license": "MIT", + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, "engines": { - "node": ">=10.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { - "bufferutil": { + "@types/node": { "optional": true }, - "utf-8-validate": { + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { "optional": true } } }, - "node_modules/@vitest/coverage-v8": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.18.tgz", - "integrity": "sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==", - "dev": true, + "node_modules/astro/node_modules/vitefu": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.2.tgz", + "integrity": "sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==", "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.0.18", - "ast-v8-to-istanbul": "^0.3.10", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.2.0", - "magicast": "^0.5.1", - "obug": "^2.1.1", - "std-env": "^3.10.0", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], "peerDependencies": { - "@vitest/browser": "4.0.18", - "vitest": "4.0.18" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0" }, "peerDependenciesMeta": { - "@vitest/browser": { + "vite": { "optional": true } } }, - "node_modules/@vitest/coverage-v8/node_modules/@bcoe/v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "node_modules/astro/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 0.4" } }, - "node_modules/@vitest/coverage-v8/node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/@vitest/coverage-v8/node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "node_modules/autoprefixer": { + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", - "tinyrainbow": "^3.0.3" + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@vitest/expect": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", - "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", - "dev": true, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "license": "MIT", "dependencies": { - "@standard-schema/spec": "^1.0.0", - "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "chai": "^6.2.1", - "tinyrainbow": "^3.0.3" + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "node_modules/axe-core": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz", + "integrity": "sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==", "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "license": "MPL-2.0", + "engines": { + "node": ">=4" } }, - "node_modules/@vitest/expect/node_modules/@vitest/spy": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", - "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "node_modules/axios": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", "dev": true, "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" } }, - "node_modules/@vitest/expect/node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "node_modules/axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@vitest/pretty-format": "4.0.18", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "dequal": "^2.0.3" } }, - "node_modules/@vitest/mocker": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.13.tgz", - "integrity": "sha512-eNCwzrI5djoauklwP1fuslHBjrbR8rqIVbvNlAnkq1OTa6XT+lX68mrtPirNM9TnR69XUPt4puBCx2Wexseylg==", + "node_modules/b4a": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "4.0.13", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, + "license": "Apache-2.0", "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" + "react-native-b4a": "*" }, "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { + "react-native-b4a": { "optional": true } } }, - "node_modules/@vitest/mocker/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/@vitest/mocker/node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/@vitest/pretty-format": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.13.tgz", - "integrity": "sha512-ooqfze8URWbI2ozOeLDMh8YZxWDpGXoeY3VOgcDnsUxN0jPyPWSUvjPQWqDGCBks+opWlN1E4oP1UYl3C/2EQA==", + "node_modules/babel-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^3.0.3" + "@jest/transform": "30.2.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" } }, - "node_modules/@vitest/runner": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", - "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "node_modules/babel-loader": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.18", - "pathe": "^2.0.3" + "find-up": "^5.0.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5.61.0" } }, - "node_modules/@vitest/runner/node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "node_modules/babel-plugin-const-enum": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", + "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^3.0.3" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.3.3", + "@babel/traverse": "^7.16.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@vitest/runner/node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "@vitest/pretty-format": "4.0.18", - "tinyrainbow": "^3.0.3" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=12" } }, - "node_modules/@vitest/snapshot": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", - "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "node_modules/babel-plugin-jest-hoist": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", - "magic-string": "^0.30.21", - "pathe": "^2.0.3" + "@types/babel__core": "^7.20.5" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^3.0.3" + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=10", + "npm": ">=6" } }, - "node_modules/@vitest/snapshot/node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@vitest/spy": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.13.tgz", - "integrity": "sha512-hSu+m4se0lDV5yVIcNWqjuncrmBgwaXa2utFLIrBkQCQkt+pSwyZTPFQAZiiF/63j8jYa8uAeUZ3RSfcdWaYWw==", + "node_modules/babel-plugin-macros/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" + "license": "ISC", + "engines": { + "node": ">= 6" } }, - "node_modules/@vitest/ui": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.18.tgz", - "integrity": "sha512-CGJ25bc8fRi8Lod/3GHSvXRKi7nBo3kxh0ApW4yCjmrWmRmlT53B5E08XRSZRliygG0aVNxLrBEqPYdz/KcCtQ==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.18", - "fflate": "^0.8.2", - "flatted": "^3.3.3", - "pathe": "^2.0.3", - "sirv": "^3.0.2", - "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", + "semver": "^6.3.1" }, "peerDependencies": { - "vitest": "4.0.18" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@vitest/ui/node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@vitest/ui/node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", - "tinyrainbow": "^3.0.3" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@vitest/ui/node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "@babel/helper-define-polyfill-provider": "^0.6.6" }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@vitest/utils": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.13.tgz", - "integrity": "sha512-ydozWyQ4LZuu8rLp47xFUWis5VOKMdHjXCWhs1LuJsTNKww+pTHQNK4e0assIB9K80TxFyskENL6vCu3j34EYA==", + "node_modules/babel-plugin-transform-typescript-metadata": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", + "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.13", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "node_modules/@volar/kit": { - "version": "2.4.28", - "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.28.tgz", - "integrity": "sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-service": "2.4.28", - "@volar/typescript": "2.4.28", - "typesafe-path": "^0.2.2", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "typescript": "*" - } - }, - "node_modules/@volar/language-core": { - "version": "2.4.28", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz", - "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@volar/source-map": "2.4.28" - } - }, - "node_modules/@volar/language-server": { - "version": "2.4.28", - "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.28.tgz", - "integrity": "sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@volar/language-core": "2.4.28", - "@volar/language-service": "2.4.28", - "@volar/typescript": "2.4.28", - "path-browserify": "^1.0.1", - "request-light": "^0.7.0", - "vscode-languageserver": "^9.0.1", - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/@volar/language-service": { - "version": "2.4.28", - "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.28.tgz", - "integrity": "sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==", + "node_modules/babel-preset-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.28", - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, - "node_modules/@volar/source-map": { - "version": "2.4.28", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz", - "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@volar/typescript": { - "version": "2.4.28", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.28.tgz", - "integrity": "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==", - "dev": true, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", "license": "MIT", - "dependencies": { - "@volar/language-core": "2.4.28", - "path-browserify": "^1.0.1", - "vscode-uri": "^3.0.8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@vscode/emmet-helper": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.11.0.tgz", - "integrity": "sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==", - "dev": true, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "license": "MIT", - "dependencies": { - "emmet": "^2.4.3", - "jsonc-parser": "^2.3.0", - "vscode-languageserver-textdocument": "^1.0.1", - "vscode-languageserver-types": "^3.15.1", - "vscode-uri": "^3.0.8" + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/@vscode/emmet-helper/node_modules/jsonc-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", - "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vscode/l10n": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", - "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/compiler-core": { - "version": "3.5.24", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.24.tgz", - "integrity": "sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==", + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@vue/shared": "3.5.24", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.1" + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } } }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.24", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.24.tgz", - "integrity": "sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==", + "node_modules/bare-fs": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.5.tgz", + "integrity": "sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@vue/compiler-core": "3.5.24", - "@vue/shared": "3.5.24" + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } } }, - "node_modules/@vue/compiler-vue2": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", - "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "node_modules/bare-os": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.7.1.tgz", + "integrity": "sha512-ebvMaS5BgZKmJlvuWh14dg9rbUI84QeV3WlWn6Ph6lFI8jJoh7ADtVTyD2c93euwbe+zgi0DVrl4YmqXeM9aIA==", "dev": true, - "license": "MIT", - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" + "license": "Apache-2.0", + "engines": { + "bare": ">=1.14.0" } }, - "node_modules/@vue/language-core": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.0.tgz", - "integrity": "sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==", + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "dev": true, - "license": "MIT", - "dependencies": { - "@volar/language-core": "~2.4.11", - "@vue/compiler-dom": "^3.5.0", - "@vue/compiler-vue2": "^2.7.16", - "@vue/shared": "^3.5.0", - "alien-signals": "^0.4.9", - "minimatch": "^9.0.3", - "muggle-string": "^0.4.1", - "path-browserify": "^1.0.1" + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.8.0.tgz", + "integrity": "sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "streamx": "^2.21.0", + "teex": "^1.0.1" }, "peerDependencies": { - "typescript": "*" + "bare-buffer": "*", + "bare-events": "*" }, "peerDependenciesMeta": { - "typescript": { + "bare-buffer": { + "optional": true + }, + "bare-events": { "optional": true } } }, - "node_modules/@vue/shared": { - "version": "3.5.24", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.24.tgz", - "integrity": "sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==", + "node_modules/bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } + }, + "node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", "license": "MIT" }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", + "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "node_modules/beasties": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.5.tgz", + "integrity": "sha512-NaWu+f4YrJxEttJSm16AzMIFtVldCvaJ68b1L098KpqXmxt9xOLtKoLkKxb8ekhOrLqEJAbvT6n6SEvB/sac7A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" + "css-select": "^6.0.0", + "css-what": "^7.0.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "htmlparser2": "^10.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-media-query-parser": "^0.2.3" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "node_modules/before-after-hook": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", "dev": true, - "license": "MIT" + "license": "Apache-2.0" }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" + "engines": { + "node": "*" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "node_modules/bin-version": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", + "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", "dev": true, "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "execa": "^5.0.0", + "find-versions": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "node_modules/bin-version-check": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz", + "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@xtuc/long": "4.2.2" + "bin-version": "^6.0.0", + "semver": "^7.5.3", + "semver-truncate": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, - "node_modules/@xhmikosr/archive-type": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-7.1.0.tgz", - "integrity": "sha512-xZEpnGplg1sNPyEgFh0zbHxqlw5dtYg6viplmWSxUj12+QjU9SKu3U/2G73a15pEjLaOqTefNSZ1fOPUOT4Xgg==", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", "dev": true, + "license": "MIT" + }, + "node_modules/boxen": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", "license": "MIT", "dependencies": { - "file-type": "^20.5.0" + "ansi-align": "^3.0.1", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", + "cli-boxes": "^3.0.0", + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" }, "engines": { "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@xhmikosr/bin-check": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/bin-check/-/bin-check-7.1.0.tgz", - "integrity": "sha512-y1O95J4mnl+6MpVmKfMYXec17hMEwE/yeCglFNdx+QvLLtP0yN4rSYcbkXnth+lElBuKKek2NbvOfOGPpUXCvw==", - "dev": true, + "node_modules/boxen/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", - "dependencies": { - "execa": "^5.1.1", - "isexe": "^2.0.0" - }, "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@xhmikosr/bin-wrapper": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/bin-wrapper/-/bin-wrapper-13.2.0.tgz", - "integrity": "sha512-t9U9X0sDPRGDk5TGx4dv5xiOvniVJpXnfTuynVKwHgtib95NYEw4MkZdJqhoSiz820D9m0o6PCqOPMXz0N9fIw==", - "dev": true, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "license": "MIT", - "dependencies": { - "@xhmikosr/bin-check": "^7.1.0", - "@xhmikosr/downloader": "^15.2.0", - "@xhmikosr/os-filter-obj": "^3.0.0", - "bin-version-check": "^5.1.0" - }, "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@xhmikosr/decompress": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/decompress/-/decompress-10.2.0.tgz", - "integrity": "sha512-MmDBvu0+GmADyQWHolcZuIWffgfnuTo4xpr2I/Qw5Ox0gt+e1Be7oYqJM4te5ylL6mzlcoicnHVDvP27zft8tg==", - "dev": true, + "node_modules/boxen/node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", "license": "MIT", - "dependencies": { - "@xhmikosr/decompress-tar": "^8.1.0", - "@xhmikosr/decompress-tarbz2": "^8.1.0", - "@xhmikosr/decompress-targz": "^8.1.0", - "@xhmikosr/decompress-unzip": "^7.1.0", - "graceful-fs": "^4.2.11", - "strip-dirs": "^3.0.0" + "engines": { + "node": ">=16" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", "engines": { - "node": ">=18" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@xhmikosr/decompress-tar": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tar/-/decompress-tar-8.1.0.tgz", - "integrity": "sha512-m0q8x6lwxenh1CrsTby0Jrjq4vzW/QU1OLhTHMQLEdHpmjR1lgahGz++seZI0bXF3XcZw3U3xHfqZSz+JPP2Gg==", - "dev": true, + "node_modules/boxen/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "file-type": "^20.5.0", - "is-stream": "^2.0.1", - "tar-stream": "^3.1.7" + "ansi-regex": "^6.2.2" }, "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@xhmikosr/decompress-tarbz2": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tarbz2/-/decompress-tarbz2-8.1.0.tgz", - "integrity": "sha512-aCLfr3A/FWZnOu5eqnJfme1Z1aumai/WRw55pCvBP+hCGnTFrcpsuiaVN5zmWTR53a8umxncY2JuYsD42QQEbw==", - "dev": true, + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "license": "MIT", "dependencies": { - "@xhmikosr/decompress-tar": "^8.0.1", - "file-type": "^20.5.0", - "is-stream": "^2.0.1", - "seek-bzip": "^2.0.0", - "unbzip2-stream": "^1.4.3" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@xhmikosr/decompress-targz": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-targz/-/decompress-targz-8.1.0.tgz", - "integrity": "sha512-fhClQ2wTmzxzdz2OhSQNo9ExefrAagw93qaG1YggoIz/QpI7atSRa7eOHv4JZkpHWs91XNn8Hry3CwUlBQhfPA==", - "dev": true, + "node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { - "@xhmikosr/decompress-tar": "^8.0.1", - "file-type": "^20.5.0", - "is-stream": "^2.0.1" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=18" + "node": "18 || 20 || >=22" } }, - "node_modules/@xhmikosr/decompress-unzip": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-unzip/-/decompress-unzip-7.1.0.tgz", - "integrity": "sha512-oqTYAcObqTlg8owulxFTqiaJkfv2SHsxxxz9Wg4krJAHVzGWlZsU8tAB30R6ow+aHrfv4Kub6WQ8u04NWVPUpA==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "file-type": "^20.5.0", - "get-stream": "^6.0.1", - "yauzl": "^3.1.2" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/@xhmikosr/downloader": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-15.2.0.tgz", - "integrity": "sha512-lAqbig3uRGTt0sHNIM4vUG9HoM+mRl8K28WuYxyXLCUT6pyzl4Y4i0LZ3jMEsCYZ6zjPZbO9XkG91OSTd4si7g==", - "dev": true, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "@xhmikosr/archive-type": "^7.1.0", - "@xhmikosr/decompress": "^10.2.0", - "content-disposition": "^0.5.4", - "defaults": "^2.0.2", - "ext-name": "^5.0.0", - "file-type": "^20.5.0", - "filenamify": "^6.0.0", - "get-stream": "^6.0.1", - "got": "^13.0.0" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=18" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } - }, - "node_modules/@xhmikosr/os-filter-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/os-filter-obj/-/os-filter-obj-3.0.0.tgz", - "integrity": "sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A==", + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, "license": "MIT", "dependencies": { - "arch": "^3.0.0" + "fast-json-stable-stringify": "2.x" }, "engines": { - "node": "^14.14.0 || >=16.0.0" + "node": ">= 6" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "license": "BSD-2-Clause" - }, - "node_modules/@yarnpkg/parsers": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz", - "integrity": "sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "Apache-2.0", "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=18.12.0" + "node-int64": "^0.4.0" } }, - "node_modules/@zip.js/zip.js": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.10.tgz", - "integrity": "sha512-WVywWK8HSttmFFYSih7lUjjaV4zGzMxy992y0tHrZY4Wf9x/uNBA/XJ50RvfGjuuJKti4yueEHA2ol2pOq6VDg==", - "license": "BSD-3-Clause", + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "btoa": "bin/btoa.js" + }, "engines": { - "bun": ">=0.7.0", - "deno": ">=1.0.0", - "node": ">=18.0.0" + "node": ">= 0.4.0" } }, - "node_modules/@zkochan/js-yaml": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", - "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/abbrev": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", - "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=8.0.0" } }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" + "run-applescript": "^7.0.0" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "node": ">=18" }, - "engines": { - "node": ">=0.4.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" + "node": ">= 0.8" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "license": "MIT", + "node_modules/cacache": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", + "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", + "dev": true, + "license": "ISC", "dependencies": { - "acorn": "^8.11.0" + "@npmcli/fs": "^5.0.0", + "fs-minipass": "^3.0.0", + "glob": "^13.0.0", + "lru-cache": "^11.1.0", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^13.0.0", + "unique-filename": "^5.0.0" }, "engines": { - "node": ">=0.4.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", - "license": "MIT", + "node_modules/cacache/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">= 10.0.0" + "node": "20 || >=22" } }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "dev": true, "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, "engines": { - "node": ">=8.9" + "node": ">=14.16" } }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", "dev": true, "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=8.9.0" + "node": ">=14.16" } }, - "node_modules/adm-zip": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", - "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", - "dev": true, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, "engines": { - "node": ">=12.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "node": ">= 14" + "node": ">= 0.4" } }, - "node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", - "dev": true, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/aggregate-error/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "engines": { + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true + "node_modules/caniuse-lite": { + "version": "1.0.30001776", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001776.tgz", + "integrity": "sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } - } + ], + "license": "CC-BY-4.0" }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/algoliasearch": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.48.1.tgz", - "integrity": "sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==", + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", - "dependencies": { - "@algolia/abtesting": "1.14.1", - "@algolia/client-abtesting": "5.48.1", - "@algolia/client-analytics": "5.48.1", - "@algolia/client-common": "5.48.1", - "@algolia/client-insights": "5.48.1", - "@algolia/client-personalization": "5.48.1", - "@algolia/client-query-suggestions": "5.48.1", - "@algolia/client-search": "5.48.1", - "@algolia/ingestion": "1.48.1", - "@algolia/monitoring": "1.48.1", - "@algolia/recommend": "5.48.1", - "@algolia/requester-browser-xhr": "5.48.1", - "@algolia/requester-fetch": "5.48.1", - "@algolia/requester-node-http": "5.48.1" - }, "engines": { - "node": ">= 14.0.0" + "node": ">=18" } }, - "node_modules/alien-signals": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-0.4.14.tgz", - "integrity": "sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT" - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^4.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ansi-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", "license": "MIT" }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "license": "MIT", - "engines": { - "node": ">=6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", "license": "MIT", - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "readdirp": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">= 20.19.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": ">= 8" + "node": ">=18" } }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=6.0" } }, - "node_modules/arch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-3.0.0.tgz", - "integrity": "sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==", - "dev": true, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/argv-formatter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", "dev": true, "license": "MIT" }, - "node_modules/aria-query": { + "node_modules/clean-stack": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz", + "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" + "escape-string-regexp": "5.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true, - "license": "MIT" - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-iterate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", - "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "license": "MIT", + "engines": { + "node": ">=10" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "highlight": "bin/highlight" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-highlight/node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "node_modules/cli-highlight/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "node_modules/cli-highlight/node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-highlight/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "node_modules/cli-highlight/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/ast-v8-to-istanbul": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.10.tgz", - "integrity": "sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==", + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.31", - "estree-walker": "^3.0.3", - "js-tokens": "^9.0.1" + "license": "ISC", + "engines": { + "node": ">=10" } }, - "node_modules/ast-v8-to-istanbul/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true, "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, - "license": "MIT" - }, - "node_modules/astring": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", - "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", - "license": "MIT", - "bin": { - "astring": "bin/astring" - } - }, - "node_modules/astro": { - "version": "5.16.16", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.16.tgz", - "integrity": "sha512-MFlFvQ84ixaHyqB3uGwMhNHdBLZ3vHawyq3PqzQS2TNWiNfQrxp5ag6S3lX+Cvnh0MUcXX+UnJBPMBHjP1/1ZQ==", "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.13.0", - "@astrojs/internal-helpers": "0.7.5", - "@astrojs/markdown-remark": "6.3.10", - "@astrojs/telemetry": "3.3.0", - "@capsizecss/unpack": "^4.0.0", - "@oslojs/encoding": "^1.1.0", - "@rollup/pluginutils": "^5.3.0", - "acorn": "^8.15.0", - "aria-query": "^5.3.2", - "axobject-query": "^4.1.0", - "boxen": "8.0.1", - "ci-info": "^4.3.1", - "clsx": "^2.1.1", - "common-ancestor-path": "^1.0.1", - "cookie": "^1.1.1", - "cssesc": "^3.0.0", - "debug": "^4.4.3", - "deterministic-object-hash": "^2.0.2", - "devalue": "^5.6.2", - "diff": "^8.0.3", - "dlv": "^1.1.3", - "dset": "^3.1.4", - "es-module-lexer": "^1.7.0", - "esbuild": "^0.25.0", - "estree-walker": "^3.0.3", - "flattie": "^1.1.1", - "fontace": "~0.4.0", - "github-slugger": "^2.0.0", - "html-escaper": "3.0.3", - "http-cache-semantics": "^4.2.0", - "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.1", - "magic-string": "^0.30.21", - "magicast": "^0.5.1", - "mrmime": "^2.0.1", - "neotraverse": "^0.6.18", - "p-limit": "^6.2.0", - "p-queue": "^8.1.1", - "package-manager-detector": "^1.6.0", - "piccolore": "^0.1.3", - "picomatch": "^4.0.3", - "prompts": "^2.4.2", - "rehype": "^13.0.2", - "semver": "^7.7.3", - "shiki": "^3.21.0", - "smol-toml": "^1.6.0", - "svgo": "^4.0.0", - "tinyexec": "^1.0.2", - "tinyglobby": "^0.2.15", - "tsconfck": "^3.1.6", - "ultrahtml": "^1.6.0", - "unifont": "~0.7.3", - "unist-util-visit": "^5.0.0", - "unstorage": "^1.17.4", - "vfile": "^6.0.3", - "vite": "^6.4.1", - "vitefu": "^1.1.1", - "xxhash-wasm": "^1.1.0", - "yargs-parser": "^21.1.1", - "yocto-spinner": "^0.2.3", - "zod": "^3.25.76", - "zod-to-json-schema": "^3.25.1", - "zod-to-ts": "^1.2.0" - }, - "bin": { - "astro": "astro.js" + "string-width": "^4.2.0" }, "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/astrodotbuild" + "node": "10.* || >= 12.*" }, "optionalDependencies": { - "sharp": "^0.34.0" + "@colors/colors": "1.5.0" } }, - "node_modules/astro/node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" }, - "node_modules/astro/node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "license": "Apache-2.0", + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/astro/node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/astro/node_modules/cookie": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", - "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "node_modules/cli-truncate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", + "dev": true, "license": "MIT", + "dependencies": { + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" + }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/astro/node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/astro/node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "node_modules/cli-truncate/node_modules/string-width": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", + "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/astro/node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, "engines": { - "node": ">= 6" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/astro/node_modules/diff": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", - "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", - "license": "BSD-3-Clause", + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=0.3.1" + "node": ">= 12" } }, - "node_modules/astro/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", "dependencies": { - "@types/estree": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/astro/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, "license": "MIT" }, - "node_modules/astro/node_modules/html-escaper": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", - "license": "MIT" + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/astro/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, - "node_modules/astro/node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/astro/node_modules/mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", - "license": "CC0-1.0" + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } }, - "node_modules/astro/node_modules/p-limit": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", - "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.1.1" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/astro/node_modules/p-queue": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", - "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, "license": "MIT", "dependencies": { - "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" + "isobject": "^3.0.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/astro/node_modules/p-timeout": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", - "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/astro/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/astro/node_modules/svgo": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", - "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "dev": true, "license": "MIT", "dependencies": { - "commander": "^11.1.0", - "css-select": "^5.1.0", - "css-tree": "^3.0.1", - "css-what": "^6.1.0", - "csso": "^5.0.5", - "picocolors": "^1.1.1", - "sax": "^1.5.0" - }, - "bin": { - "svgo": "bin/svgo.js" - }, - "engines": { - "node": ">=16" - }, + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/svgo" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/astro/node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" + "node": ">=7.0.0" } }, - "node_modules/astro/node_modules/vite": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "license": "MIT" + }, + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } + "node": ">=8.0.0" } }, - "node_modules/astro/node_modules/vitefu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", - "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "license": "MIT", - "workspaces": [ - "tests/deps/*", - "tests/projects/*", - "tests/projects/workspace/packages/*" - ], - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + "dependencies": { + "delayed-stream": "~1.0.0" }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } + "engines": { + "node": ">= 0.8" } }, - "node_modules/astro/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", "license": "MIT", - "engines": { - "node": ">=12.20" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/astro/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "engines": { + "node": ">=16" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "license": "ISC" }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } + "license": "ISC" }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, "license": "MIT" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/autoprefixer": { - "version": "10.4.22", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", - "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", + "node_modules/compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "license": "MIT" + }, + "node_modules/component-emitter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-2.0.0.tgz", + "integrity": "sha512-4m5s3Me2xxlVKG9PkZpQqHQR7bgpnN7joDMJ4yvVkVXngjoITG76IaZmzmywSeRTeTpc6N6r3H3+KyUurV8OYw==", "license": "MIT", - "dependencies": { - "browserslist": "^4.27.0", - "caniuse-lite": "^1.0.30001754", - "fraction.js": "^5.3.4", - "normalize-range": "^0.1.2", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=18" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, "license": "MIT", "dependencies": { - "possible-typed-array-names": "^1.0.0" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/axe-core": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", - "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, - "license": "MPL-2.0", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, "engines": { - "node": ">=4" + "node": ">= 0.8.0" } }, - "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "ms": "2.0.0" } }, - "node_modules/axobject-query": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", - "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "Apache-2.0", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "license": "ISC", "dependencies": { - "dequal": "^2.0.3" + "source-map": "^0.6.1" } }, - "node_modules/b4a": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", - "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "node_modules/concat-with-sourcemaps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "react-native-b4a": "*" - }, - "peerDependenciesMeta": { - "react-native-b4a": { - "optional": true - } + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "node_modules/confbox": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/babel-loader": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", - "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true, + "license": "MIT" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, "license": "MIT", - "dependencies": { - "find-up": "^5.0.0" - }, "engines": { - "node": "^18.20.0 || ^20.10.0 || >=22.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5.61.0" + "node": ">=0.8" } }, - "node_modules/babel-plugin-const-enum": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", - "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-typescript": "^7.3.3", - "@babel/traverse": "^7.16.0" + "safe-buffer": "5.2.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "license": "BSD-3-Clause", + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "license": "ISC", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "compare-func": "^2.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=16" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "node_modules/conventional-changelog-writer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", + "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "conventional-commits-filter": "^4.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^12.0.1", + "semver": "^7.5.2", + "split2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.mjs" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=16" } }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, "engines": { - "node": ">=10", - "npm": ">=6" + "node": ">=16" } }, - "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", "dev": true, "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" }, "engines": { - "node": ">=10" + "node": ">=16" } }, - "node_modules/babel-plugin-macros/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", - "semver": "^6.3.1" + "engines": { + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" + "engines": { + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "node_modules/cookie-es": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "license": "MIT" + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=6.6.0" } }, - "node_modules/babel-plugin-transform-typescript-metadata": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", - "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", + "node_modules/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" + "is-what": "^3.14.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" + "funding": { + "url": "https://github.com/sponsors/mesqueeb" } }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "node_modules/copy-webpack-plugin": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", + "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", + "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "glob-parent": "^6.0.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2", + "tinyglobby": "^0.2.12" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "webpack": "^5.1.0" } }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "dev": true, "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, "license": "MIT" }, - "node_modules/bare-events": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", - "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "bare-abort-controller": "*" + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" }, - "peerDependenciesMeta": { - "bare-abort-controller": { - "optional": true - } + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/base-64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", - "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" } }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "5.1.2" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/beasties": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.5.tgz", - "integrity": "sha512-NaWu+f4YrJxEttJSm16AzMIFtVldCvaJ68b1L098KpqXmxt9xOLtKoLkKxb8ekhOrLqEJAbvT6n6SEvB/sac7A==", + "node_modules/create-jest/node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "css-select": "^6.0.0", - "css-what": "^7.0.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "htmlparser2": "^10.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.49", - "postcss-media-query-parser": "^0.2.3" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=14.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/before-after-hook": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", - "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", + "node_modules/create-jest/node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, - "license": "Apache-2.0" + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/create-jest/node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, "engines": { - "node": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/bin-version": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", - "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", + "node_modules/create-jest/node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.0.0", - "find-versions": "^5.0.0" + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/bin-version-check": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz", - "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==", + "node_modules/create-jest/node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "license": "MIT", "dependencies": { - "bin-version": "^6.0.0", - "semver": "^7.5.3", - "semver-truncate": "^3.0.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "node_modules/create-jest/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@sinclair/typebox": "^0.27.8" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/create-jest/node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "license": "MIT", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/create-jest/node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, "license": "MIT", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/create-jest/node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "node_modules/create-jest/node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/bonjour-service": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", - "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "node_modules/create-jest/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "node_modules/create-jest/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, "license": "MIT" }, - "node_modules/boxen": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", - "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", - "license": "MIT", + "node_modules/create-jest/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^8.0.0", - "chalk": "^5.3.0", - "cli-boxes": "^3.0.0", - "string-width": "^7.2.0", - "type-fest": "^4.21.0", - "widest-line": "^5.0.0", - "wrap-ansi": "^9.0.0" - }, + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "node_modules/create-jest/node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "license": "MIT", + "node_modules/create-jest/node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, "engines": { - "node": ">=12" + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/boxen/node_modules/camelcase": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", - "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "node_modules/create-jest/node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/create-jest/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "node_modules/create-jest/node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, "license": "MIT" }, - "node_modules/boxen/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/create-jest/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-jest/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/create-jest/node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" + "detect-newline": "^3.0.0" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "node_modules/create-jest/node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/create-jest/node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/create-jest/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "node_modules/create-jest/node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "license": "MIT", "dependencies": { - "fast-json-stable-stringify": "2.x" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "node_modules/create-jest/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, - "license": "(MIT OR Apache-2.0)", - "bin": { - "btoa": "bin/btoa.js" + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">= 0.4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/create-jest/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, "license": "MIT", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "node_modules/create-jest/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "node_modules/create-jest/node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "license": "MIT", "dependencies": { - "run-applescript": "^7.0.0" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/create-jest/node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, "engines": { - "node": ">= 0.8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cacache": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", - "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", + "node_modules/create-jest/node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@npmcli/fs": "^5.0.0", - "fs-minipass": "^3.0.0", - "glob": "^13.0.0", - "lru-cache": "^11.1.0", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^7.0.2", - "ssri": "^13.0.0", - "unique-filename": "^5.0.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "node_modules/create-jest/node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, "engines": { - "node": "20 || >=22" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "node_modules/create-jest/node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "license": "MIT", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=14.16" + "node": ">=10" } }, - "node_modules/cacheable-request": { - "version": "10.2.14", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", - "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "node_modules/create-jest/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", "dependencies": { - "@types/http-cache-semantics": "^4.0.2", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=14.16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "node_modules/create-jest/node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/create-jest/node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/create-jest/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/callsites": { + "node_modules/create-jest/node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001763", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001763.tgz", - "integrity": "sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chai": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", - "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "node_modules/create-jest/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/create-jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/change-case": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", - "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "node_modules/create-jest/node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], "license": "MIT" }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "license": "MIT", - "engines": { - "node": ">=10" - } + "node_modules/create-jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/create-jest/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/create-jest/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/create-jest/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "node_modules/create-jest/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "node_modules/create-jest/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "node_modules/create-jest/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "node_modules/create-jest/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, "engines": { - "node": ">= 14.16.0" + "node": ">=10" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", "dev": true, "license": "MIT", + "dependencies": { + "luxon": "^3.2.1" + }, "engines": { - "node": ">=6.0" + "node": ">=12.0.0" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "license": "MIT" + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } }, - "node_modules/clean-stack": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz", - "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==", + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "5.0.0" + "type-fest": "^1.0.1" }, "engines": { - "node": ">=14.16" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clean-stack/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -23919,575 +23680,711 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", "dev": true, - "license": "MIT", + "license": "CC0-1.0", "dependencies": { - "restore-cursor": "^5.0.0" + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" }, "engines": { - "node": ">=18" + "node": "^12 || ^14 || >=16" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/cli-highlight": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", - "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "node_modules/css-declaration-sorter": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.1.tgz", + "integrity": "sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==", "dev": true, "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dev": true, + "license": "CC0-1.0", "dependencies": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" + "postcss-selector-parser": "^6.0.9" }, "bin": { - "highlight": "bin/highlight" + "css-has-pseudo": "dist/cli.cjs" }, "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/cli-highlight/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/cli-highlight/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } }, - "node_modules/cli-highlight/node_modules/highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "node_modules/css-minimizer-webpack-plugin/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, "engines": { - "node": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cli-highlight/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/css-minimizer-webpack-plugin/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cli-highlight/node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "node_modules/css-minimizer-webpack-plugin/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, "license": "MIT" }, - "node_modules/cli-highlight/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/css-minimizer-webpack-plugin/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { "node": ">=8" } }, - "node_modules/cli-highlight/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/css-minimizer-webpack-plugin/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cli-highlight/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cli-highlight/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/css-minimizer-webpack-plugin/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "node_modules/css-minimizer-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "string-width": "^4.2.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "10.* || >= 12.*" + "node": ">=10" }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/cli-table3/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", "dev": true, - "license": "MIT", + "license": "CC0-1.0", + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, "engines": { - "node": ">=8" + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/cli-table3/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/css-select": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", + "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "boolbase": "^1.0.0", + "css-what": "^7.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "nth-check": "^2.1.1" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "node_modules/css-what": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", + "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=12" + "node": ">= 6" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", "dev": true, "license": "MIT" }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/cssdb": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", + "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", "dev": true, + "license": "CC0-1.0", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "node_modules/cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.2.2" + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" }, "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18.0" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" }, "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "css-tree": "~2.2.0" }, "engines": { - "node": ">=8" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/cssstyle": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", + "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", "dev": true, "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" }, "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/code-red": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", - "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15", - "@types/estree": "^1.0.1", - "acorn": "^8.10.0", - "estree-walker": "^3.0.3", - "periscopic": "^3.1.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" } }, - "node_modules/code-red/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/collapse-white-space": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", - "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", "license": "MIT", "funding": { "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/kossnocorp" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "license": "MIT" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=4.0" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", "dev": true, "license": "MIT" }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } }, - "node_modules/colorjs.io": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", - "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", "dev": true, "license": "MIT" }, - "node_modules/columnify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", "license": "MIT", "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" + "character-entities": "^2.0.0" }, - "engines": { - "node": ">=8.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", + "node": ">=10" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "license": "ISC" - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "dev": true, - "license": "ISC" + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } }, - "node_modules/commondir": { + "node_modules/deep-equal": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", "dev": true, "license": "MIT" }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "license": "MIT", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "engines": { + "node": ">=4.0.0" } }, - "node_modules/compare-versions": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", - "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, - "node_modules/component-emitter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-2.0.0.tgz", - "integrity": "sha512-4m5s3Me2xxlVKG9PkZpQqHQR7bgpnN7joDMJ4yvVkVXngjoITG76IaZmzmywSeRTeTpc6N6r3H3+KyUurV8OYw==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "dev": true, "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, "engines": { "node": ">=18" }, @@ -24495,3829 +24392,3928 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "dev": true, "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-2.0.2.tgz", + "integrity": "sha512-cuIw0PImdp76AOfgkjbW4VhQODRmNNcKR73vdCH5cLd/ifj7aamfoXvYgfGkEAjNJZ3ozMIy9Gu2LutUkGEPbA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "license": "MIT" }, - "node_modules/compression/node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=0.4.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true, "license": "MIT" }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "license": "ISC", - "dependencies": { - "source-map": "^0.6.1" + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "node_modules/concat-with-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/dependency-graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "license": "MIT", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "engines": { + "node": ">=6" } }, - "node_modules/config-chain/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", "license": "MIT" }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "optional": true, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/conventional-changelog-writer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", - "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", "dev": true, "license": "MIT", "dependencies": { - "conventional-commits-filter": "^4.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^12.0.1", - "semver": "^7.5.2", - "split2": "^4.0.0" + "address": "^1.0.1", + "debug": "4" }, "bin": { - "conventional-changelog-writer": "cli.mjs" + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" }, "engines": { - "node": ">=16" + "node": ">= 4.0.0" } }, - "node_modules/conventional-commits-filter": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", - "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", - "dev": true, + "node_modules/deterministic-object-hash": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", + "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", "license": "MIT", + "dependencies": { + "base-64": "^1.0.0" + }, "engines": { - "node": ">=16" + "node": ">=18" } }, - "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", - "dev": true, + "node_modules/devalue": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz", + "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "license": "MIT", "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.mjs" + "dequal": "^2.0.0" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", + "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", + "license": "BSD-3-Clause", "engines": { - "node": ">=16" + "node": ">=0.3.1" } }, - "node_modules/convert-hrtime": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", - "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/cookie-es": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", - "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "license": "MIT" }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, "engines": { - "node": ">=6.6.0" + "node": ">=6" } }, - "node_modules/cookies": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", - "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 0.8" + "node": ">=6.0.0" } }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true, + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { - "is-what": "^3.14.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/copy-webpack-plugin": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", - "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", - "dev": true, - "license": "MIT", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { - "glob-parent": "^6.0.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2", - "tinyglobby": "^0.2.12" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">= 18.12.0" + "node": ">= 4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.2.tgz", + "integrity": "sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "engines": { + "node": ">=20" }, - "peerDependencies": { - "webpack": "^5.1.0" + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" } }, - "node_modules/core-js-compat": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", - "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", - "license": "MIT", + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", "dependencies": { - "browserslist": "^4.26.3" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "license": "MIT", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "is-obj": "^2.0.0" }, "engines": { - "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">=8" } }, - "node_modules/corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4.0" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "dotenv": "^16.4.5" }, "engines": { - "node": ">=14" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://dotenvx.com" } }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=4" } }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/create-require": { + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/ee-first": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, "license": "MIT" }, - "node_modules/cron-parser": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", - "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "luxon": "^3.2.1" + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" }, "engines": { - "node": ">=12.0.0" + "node": ">=0.10.0" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/electron-to-chromium": { + "version": "1.5.307", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz", + "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==", + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, "engines": { - "node": ">= 8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/crossws": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", - "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "node_modules/emmet": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz", + "integrity": "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==", + "dev": true, "license": "MIT", + "workspaces": [ + "./packages/scanner", + "./packages/abbreviation", + "./packages/css-abbreviation", + "./" + ], "dependencies": { - "uncrypto": "^0.1.3" + "@emmetio/abbreviation": "^2.3.3", + "@emmetio/css-abbreviation": "^2.1.8" } }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^1.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4" } }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-blank-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "iconv-lite": "^0.6.2" } }, - "node_modules/css-declaration-sorter": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.1.tgz", - "integrity": "sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "license": "ISC", - "engines": { - "node": "^14 || ^16 || >=18" + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "peerDependencies": { - "postcss": "^8.0.9" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-has-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "once": "^1.4.0" } }, - "node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "node_modules/enhanced-resolve": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz", + "integrity": "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==", "dev": true, "license": "MIT", "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" }, "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.27.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "node": ">=10.13.0" } }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", - "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "cssnano": "^6.0.1", - "jest-worker": "^29.4.3", - "postcss": "^8.4.24", - "schema-utils": "^4.0.1", - "serialize-javascript": "^6.0.1" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@parcel/css": { - "optional": true - }, - "@swc/css": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "lightningcss": { - "optional": true - } + "node": ">=8.6" } }, - "node_modules/css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "license": "CC0-1.0", - "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" - }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=0.12" }, - "peerDependencies": { - "postcss": "^8.4" + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/css-select": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", - "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", + "node_modules/env-ci": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.2.0.tgz", + "integrity": "sha512-D5kWfzkmaOQDioPmiviWAVtKmpPT4/iJmMVQxWxMPJTFyTkdc5JQUfc5iXEeWxcOdsYTKSAiA/Age4NUOqKsRA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^7.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "nth-check": "^2.1.1" + "execa": "^8.0.0", + "java-properties": "^1.0.2" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": "^18.17 || >=20.6.1" } }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "node_modules/env-ci/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/css-what": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", - "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", + "node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=16" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "node_modules/env-ci/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } }, - "node_modules/cssdb": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", - "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", + "node_modules/env-ci/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", - "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "license": "MIT", "dependencies": { - "cssnano-preset-default": "^6.1.2", - "lilconfig": "^3.1.1" + "path-key": "^4.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano-preset-default": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", - "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "node_modules/env-ci/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "css-declaration-sorter": "^7.2.0", - "cssnano-utils": "^4.0.2", - "postcss-calc": "^9.0.1", - "postcss-colormin": "^6.1.0", - "postcss-convert-values": "^6.1.0", - "postcss-discard-comments": "^6.0.2", - "postcss-discard-duplicates": "^6.0.3", - "postcss-discard-empty": "^6.0.3", - "postcss-discard-overridden": "^6.0.2", - "postcss-merge-longhand": "^6.0.5", - "postcss-merge-rules": "^6.1.1", - "postcss-minify-font-values": "^6.1.0", - "postcss-minify-gradients": "^6.0.3", - "postcss-minify-params": "^6.1.0", - "postcss-minify-selectors": "^6.0.4", - "postcss-normalize-charset": "^6.0.2", - "postcss-normalize-display-values": "^6.0.2", - "postcss-normalize-positions": "^6.0.2", - "postcss-normalize-repeat-style": "^6.0.2", - "postcss-normalize-string": "^6.0.2", - "postcss-normalize-timing-functions": "^6.0.2", - "postcss-normalize-unicode": "^6.1.0", - "postcss-normalize-url": "^6.0.2", - "postcss-normalize-whitespace": "^6.0.2", - "postcss-ordered-values": "^6.0.2", - "postcss-reduce-initial": "^6.1.0", - "postcss-reduce-transforms": "^6.0.2", - "postcss-svgo": "^6.0.3", - "postcss-unique-selectors": "^6.0.4" + "mimic-fn": "^4.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=12" }, - "peerDependencies": { - "postcss": "^8.4.31" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano-utils": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", - "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "node_modules/env-ci/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "license": "MIT", "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=12" }, - "peerDependencies": { - "postcss": "^8.4.31" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "node_modules/env-ci/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, "license": "MIT", - "dependencies": { - "css-tree": "~2.2.0" - }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/csso/node_modules/css-tree": { + "node_modules/env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, "license": "MIT", - "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" - }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": ">=6" } }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "license": "CC0-1.0" - }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" - }, "engines": { "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true, "license": "MIT" }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" + "is-arrayish": "^0.2.1" } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "stackframe": "^1.3.4" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/inspect-js" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/data-view-byte-offset": { + "node_modules/es-define-property": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/date-fns": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", - "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" + "engines": { + "node": ">= 0.4" } }, - "node_modules/date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4.0" + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/es-iterator-helpers": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "safe-array-concat": "^1.1.3" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 0.4" } }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "license": "MIT" }, - "node_modules/decode-named-character-reference": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", - "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { - "character-entities": "^2.0.0" + "es-errors": "^1.3.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">= 0.4" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { - "mimic-response": "^3.1.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "hasown": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.4" } }, - "node_modules/dedent": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", - "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", "dev": true, "license": "MIT" }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", "license": "MIT", - "engines": { - "node": ">=4.0.0" + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/default-browser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", - "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", - "dev": true, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, - "node_modules/default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "node_modules/esbuild-wasm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.27.3.tgz", + "integrity": "sha512-AUXuOxZ145/5Az+lIqk6TdJbxKTyDGkXMJpTExmBdbnHR6n6qAFx+F4oG9ORpVYJ9dQYeQAqzv51TO4DFKsbXw==", "dev": true, "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defaults": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-2.0.2.tgz", - "integrity": "sha512-cuIw0PImdp76AOfgkjbW4VhQODRmNNcKR73vdCH5cLd/ifj7aamfoXvYgfGkEAjNJZ3ozMIy9Gu2LutUkGEPbA==", - "dev": true, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "node_modules/eslint-config-prettier": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", + "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "bin": { + "eslint-config-prettier": "bin/cli.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "license": "MIT" - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=0.4.0" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, "engines": { - "node": ">= 0.8" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/dependency-graph": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", - "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, "engines": { - "node": ">=6" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/destr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", - "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "node_modules/eslint-plugin-import/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, "license": "MIT" }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/detect-node": { + "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "MIT" - }, - "node_modules/detect-port": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", - "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "address": "^1.0.1", - "debug": "4" - }, - "bin": { - "detect": "bin/detect-port.js", - "detect-port": "bin/detect-port.js" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 4.0.0" + "node": ">=0.10.0" } }, - "node_modules/deterministic-object-hash": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", - "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, "license": "MIT", "dependencies": { - "base-64": "^1.0.0" + "minimist": "^1.2.0" }, - "engines": { - "node": ">=18" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/devalue": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz", - "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==", - "license": "MIT" - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "license": "MIT", + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", "dependencies": { - "dequal": "^2.0.0" + "brace-expansion": "^1.1.7" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": "*" } }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "license": "MIT", "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "license": "MIT" - }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.1.tgz", + "integrity": "sha512-zHByM9WTUMnfsDTafGXRiqxp6lFtNoSOWBY6FonVRn3A+BUwN1L/tdBXT40BcBJi0cZjOGTXZ0eD/rTG9fEJ0g==", "dev": true, "license": "MIT", "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.1.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" } }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "license": "MIT" - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/dompurify": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.2.tgz", - "integrity": "sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==", - "license": "(MPL-2.0 OR Apache-2.0)", + "license": "Apache-2.0", "engines": { - "node": ">=20" - }, - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "is-obj": "^2.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" + "node": "*" } }, - "node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", - "license": "BSD-2-Clause", + "node_modules/eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "license": "MIT", "dependencies": { - "dotenv": "^16.4.5" + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" }, "engines": { - "node": ">=12" + "node": ">=4" }, - "funding": { - "url": "https://dotenvx.com" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/dset": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", - "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "node_modules/eslint-plugin-react-hooks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", + "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "node": ">=10" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "node_modules/eslint-plugin-react/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, "license": "MIT" }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "readable-stream": "^2.0.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "MIT" - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "license": "Apache-2.0", "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "esutils": "^2.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", - "license": "ISC" + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", + "dev": true, "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/emmet": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz", - "integrity": "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==", + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "workspaces": [ - "./packages/scanner", - "./packages/abbreviation", - "./packages/css-abbreviation", - "./" - ], - "dependencies": { - "@emmetio/abbreviation": "^2.3.3", - "@emmetio/css-abbreviation": "^2.1.8" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/emojilib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", - "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">= 4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { - "iconv-lite": "^0.6.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "license": "MIT", "dependencies": { - "once": "^1.4.0" + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/enhanced-resolve": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", - "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10.13.0" + "node": "*" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1" - }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { - "node": ">=0.12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/env-ci": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.2.0.tgz", - "integrity": "sha512-D5kWfzkmaOQDioPmiviWAVtKmpPT4/iJmMVQxWxMPJTFyTkdc5JQUfc5iXEeWxcOdsYTKSAiA/Age4NUOqKsRA==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^8.0.0", - "java-properties": "^1.0.2" + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=4" } }, - "node_modules/env-ci/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=0.10" } }, - "node_modules/env-ci/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4.0" } }, - "node_modules/env-ci/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "Apache-2.0", + "license": "BSD-2-Clause", "engines": { - "node": ">=16.17.0" + "node": ">=4.0" } }, - "node_modules/env-ci/node_modules/is-stream": { + "node_modules/estree-util-attach-comments": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dependencies": { + "@types/estree": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/env-ci/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/env-ci/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/env-ci/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/env-ci/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/env-ci/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/estree": "^1.0.0" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true, "license": "MIT" }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" + "engines": { + "node": ">=0.8.x" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "stackframe": "^1.3.4" + "bare-events": "^2.7.0" } }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" + "eventsource-parser": "^3.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=18.0.0" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=18.0.0" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/es-get-iterator/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, "engines": { - "node": ">= 0.4" + "node": ">= 0.8.0" } }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, "engines": { - "node": ">= 0.4" + "node": ">= 0.8.0" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "homedir-polyfill": "^1.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/es-to-primitive": { + "node_modules/expect-type": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12.0.0" } }, - "node_modules/es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "node_modules/expect/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, - "license": "MIT" - }, - "node_modules/esast-util-from-estree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", - "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-visit": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/esast-util-from-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", - "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "acorn": "^8.0.0", - "esast-util-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/esbuild-wasm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.25.9.tgz", - "integrity": "sha512-Jpv5tCSwQg18aCqCRD3oHIX/prBhXMDapIoG//A+6+dV0e7KQMGFg85ihJ5T1EeMjbZjON3TqFy0VrGAnIHLDA==", + "node_modules/expect/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": ">=18" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "node_modules/expect/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "node_modules/expect/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/expect/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint-config-prettier": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", - "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", + "node_modules/expect/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "node_modules/expect/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/expect/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "node_modules/expect/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7" + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { - "node": ">=4" + "node": ">= 18" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/express-rate-limit": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", + "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "ip-address": "10.0.1" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" } }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "node_modules/express/node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", "dev": true, "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, "engines": { - "node": ">=4" + "node": ">=18" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/express/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">= 0.6" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/eslint-plugin-import/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-content-type-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", + "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">=8.6.0" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "is-glob": "^4.0.1" }, "engines": { - "node": "*" + "node": ">= 6" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/eslint-plugin-import/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, "engines": { - "node": ">=4" + "node": ">=0.8.0" } }, - "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "bser": "2.1.1" } }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.1.tgz", - "integrity": "sha512-zHByM9WTUMnfsDTafGXRiqxp6lFtNoSOWBY6FonVRn3A+BUwN1L/tdBXT40BcBJi0cZjOGTXZ0eD/rTG9fEJ0g==", - "dev": true, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "license": "MIT", - "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.1.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" - }, "engines": { - "node": ">=4.0" + "node": ">=12.0.0" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } + "license": "MIT" }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, "engines": { - "node": ">= 0.4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "flat-cache": "^3.0.4" }, "engines": { - "node": "*" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "node_modules/file-type": { + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-20.5.0.tgz", + "integrity": "sha512-BfHZtG/l9iMm4Ecianu7P8HRD2tBHLtjXinm4X62XBOYzi7CYA7jyqfJzOvXHqzVrVPYqBo2/GvbARMaaJkKVg==", "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" + "@tokenizer/inflate": "^0.2.6", + "strtok3": "^10.2.0", + "token-types": "^6.0.0", + "uint8array-extras": "^1.4.0" }, "engines": { - "node": ">=4" + "node": ">=18" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", - "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "node_modules/filelist": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", + "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" } }, - "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/filelist/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "esutils": "^2.0.2" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "node_modules/filename-reserved-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", + "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "node_modules/filenamify": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-6.0.0.tgz", + "integrity": "sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "filename-reserved-regex": "^3.0.0" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">=16" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 18.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/find-cache-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/find-cache-directory": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/find-cache-directory/-/find-cache-directory-6.0.0.tgz", + "integrity": "sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^8.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=20" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/find-cache-directory/node_modules/pkg-dir": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-8.0.0.tgz", + "integrity": "sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "find-up-simple": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "node_modules/find-file-up": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", + "integrity": "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "resolve-dir": "^1.0.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/find-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", + "integrity": "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "find-file-up": "^2.0.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/find-versions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "semver-regex": "^4.0.5" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "flat": "cli.js" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "license": "BSD-3-Clause", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=0.10" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/flatted": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.4.tgz", + "integrity": "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, + "license": "ISC" + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", + "node_modules/flexsearch": { + "version": "0.8.212", + "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.8.212.tgz", + "integrity": "sha512-wSyJr1GUWoOOIISRu+X2IXiOcVfg9qqBRyCPRUdLMIGJqPzMo+jMRlvE83t14v1j0dRMEaBbER/adQjp6Du2pw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/ts-thomas" + }, + { + "type": "paypal", + "url": "https://www.paypal.com/donate/?hosted_button_id=GEVR88FC9BWRW" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/flexsearch" + }, + { + "type": "patreon", + "url": "https://patreon.com/user?u=96245532" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/ts-thomas" + } + ], + "license": "Apache-2.0" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", "engines": { "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/estree-util-attach-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", - "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "node_modules/fontace": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.1.tgz", + "integrity": "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==", "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "fontkitten": "^1.0.2" } }, - "node_modules/estree-util-build-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", - "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "node_modules/fontkitten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.2.tgz", + "integrity": "sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==", "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-walker": "^3.0.0" + "tiny-inflate": "^1.0.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=20" } }, - "node_modules/estree-util-build-jsx/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/estree-util-is-identifier-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", - "license": "MIT", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/estree-util-scope": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", - "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", - "license": "MIT", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/estree-util-to-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", - "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", + "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=12.13.0", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "vue-template-compiler": "*", + "webpack": "^5.11.0" + }, + "peerDependenciesMeta": { + "vue-template-compiler": { + "optional": true + } } }, - "node_modules/estree-util-visit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", - "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^3.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=0.8.x" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/events-universal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", - "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "bare-events": "^2.7.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/eventsource": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", - "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "license": "MIT", "dependencies": { - "eventsource-parser": "^3.0.1" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=10" } }, - "node_modules/eventsource-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", - "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=18.0.0" + "node": ">=12" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">= 6" } }, - "node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 0.8.0" + "node": "*" } }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { - "homedir-polyfill": "^1.0.1" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.10.0" } }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/expect-type": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", - "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "engines": { - "node": ">=12.0.0" + "node": ">= 6" } }, - "node_modules/exponential-backoff": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">= 6" } }, - "node_modules/express-rate-limit": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", - "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { - "ip-address": "10.0.1" + "mime-db": "1.52.0" }, "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/express-rate-limit" - }, - "peerDependencies": { - "express": ">= 4.11" + "node": ">= 0.6" } }, - "node_modules/express-rate-limit/node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "license": "MIT", "engines": { - "node": ">= 12" + "node": ">= 0.6" } }, - "node_modules/express/node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": "*" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "type": "github", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/exsolve": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", - "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "^1.28.0" - }, - "engines": { - "node": ">=0.10.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", "dev": true, "license": "MIT", "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - }, - "engines": { - "node": ">=4" + "js-yaml": "^3.13.1" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, - "node_modules/fast-content-type-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", - "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", + "node_modules/front-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "node_modules/front-matter/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true, "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=10" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "minipass": "^7.0.3" }, "engines": { - "node": ">= 6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", "dev": true, - "license": "MIT" + "license": "Unlicense" }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" ], - "license": "BSD-3-Clause" + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "node_modules/function-timeout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", + "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", "dependencies": { - "websocket-driver": ">=0.5.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { - "node": ">=0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", "license": "MIT", "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "node": ">= 0.4" } }, - "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "node_modules/generic-names": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", + "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", "dev": true, - "license": "MIT" - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "loader-utils": "^3.2.0" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-type": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-20.5.0.tgz", - "integrity": "sha512-BfHZtG/l9iMm4Ecianu7P8HRD2tBHLtjXinm4X62XBOYzi7CYA7jyqfJzOvXHqzVrVPYqBo2/GvbARMaaJkKVg==", - "dev": true, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "@tokenizer/inflate": "^0.2.6", - "strtok3": "^10.2.0", - "token-types": "^6.0.0", - "uint8array-extras": "^1.4.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "license": "ISC", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/filename-reserved-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", - "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/filenamify": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-6.0.0.tgz", - "integrity": "sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==", + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "license": "MIT", "dependencies": { - "filename-reserved-regex": "^3.0.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=16" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/git-log-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", + "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", + "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "0.6.8" } }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" + "through2": "~2.0.0" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-12.0.0.tgz", + "integrity": "sha512-5Qcll1z7IKgHr5g485ePDdHcNQY0k2dtv/bjYy0iuyGxQw2qSOiiXUXJ+AYQpg3HNoUMHqAruX478Jeev7UULw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">= 18.0.0" + "node": "20 || >=22" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/find-cache-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, "bin": { - "semver": "bin/semver.js" + "which": "bin/which" } }, - "node_modules/find-cache-directory": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/find-cache-directory/-/find-cache-directory-6.0.0.tgz", - "integrity": "sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==", + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, "license": "MIT", - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^8.0.0" - }, "engines": { - "node": ">=20" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-cache-directory/node_modules/pkg-dir": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-8.0.0.tgz", - "integrity": "sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", "dependencies": { - "find-up-simple": "^1.0.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-file-up": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", - "integrity": "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { - "resolve-dir": "^1.0.1" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", - "integrity": "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==", - "dev": true, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", - "dependencies": { - "find-file-up": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/got": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", + "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/find-up-simple": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", - "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, + "license": "MIT" + }, + "node_modules/h3": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.5.tgz", + "integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==", "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "cookie-es": "^1.2.2", + "crossws": "^0.3.5", + "defu": "^6.1.4", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" } }, - "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "license": "MIT", "dependencies": { - "semver-regex": "^4.0.5" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=12" + "node": ">=0.4.7" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true, + "license": "(Apache-2.0 OR MPL-1.1)" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "ISC" - }, - "node_modules/flattie": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", - "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/flexsearch": { - "version": "0.8.212", - "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.8.212.tgz", - "integrity": "sha512-wSyJr1GUWoOOIISRu+X2IXiOcVfg9qqBRyCPRUdLMIGJqPzMo+jMRlvE83t14v1j0dRMEaBbER/adQjp6Du2pw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/ts-thomas" - }, - { - "type": "paypal", - "url": "https://www.paypal.com/donate/?hosted_button_id=GEVR88FC9BWRW" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/flexsearch" - }, - { - "type": "patreon", - "url": "https://patreon.com/user?u=96245532" - }, - { - "type": "liberapay", - "url": "https://liberapay.com/ts-thomas" - } - ], - "license": "Apache-2.0" - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", - "engines": { - "node": ">=4.0" + "dependencies": { + "es-define-property": "^1.0.0" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fontace": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.0.tgz", - "integrity": "sha512-moThBCItUe2bjZip5PF/iZClpKHGLwMvR79Kp8XpGRBrvoRSnySN4VcILdv3/MJzbhvUA5WeiUXF5o538m5fvg==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, "license": "MIT", "dependencies": { - "fontkitten": "^1.0.0" + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fontkitten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.2.tgz", - "integrity": "sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", - "dependencies": { - "tiny-inflate": "^1.0.3" - }, "engines": { - "node": ">=20" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "license": "MIT", "dependencies": { - "is-callable": "^1.2.7" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -28326,3021 +28322,3041 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.4" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", - "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", - "dev": true, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "vue-template-compiler": "*", - "webpack": "^5.11.0" + "node": ">=0.12" }, - "peerDependenciesMeta": { - "vue-template-compiler": { - "optional": true - } + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, + "node_modules/hast-util-from-html/node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "entities": "^6.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" + "@types/hast": "^3.0.0" }, "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, + "node_modules/hast-util-raw/node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "entities": "^6.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" }, - "engines": { - "node": "*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", "license": "MIT", - "engines": { - "node": ">=8.6" + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": ">=8.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/unified" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } - }, - "node_modules/form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 14.17" + "bin": { + "he": "bin/he" } }, - "node_modules/form-data/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", + "node_modules/highlight.js": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.6" + "node": ">=12.0.0" } }, - "node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "parse-passwd": "^1.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "node_modules/hono": { + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.5.tgz", + "integrity": "sha512-3qq+FUBtlTHhtYxbxheZgY8NIFnkkC/MR8u5TTsr7YZ3wixryQ3cCwn3iZbg8p8B88iDBBAYSfZDS75t8MN7Vg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=16.9.0" } }, - "node_modules/fraction.js": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", - "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "node_modules/hook-std": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-4.0.0.tgz", + "integrity": "sha512-IHI4bEVOt3vRUDJ+bFA9VUJlo7SzvFARPNLw75pqSmAOP2HmTWfFJtPvLBrDrlgjEYXY9zs7SFdHPQaJShkSCQ==", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">=20" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "node_modules/hosted-git-info": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", + "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "lru-cache": "^11.1.0" + }, "engines": { - "node": ">= 0.8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, - "node_modules/front-matter": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", - "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, "license": "MIT", "dependencies": { - "js-yaml": "^3.13.1" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "whatwg-encoding": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" }, - "node_modules/fs-monkey": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", - "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "dev": true, - "license": "Unlicense" + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" } }, - "node_modules/function-timeout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", - "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", + "node_modules/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=18" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/http-assert/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 0.6" } }, - "node_modules/generic-names": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", - "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "license": "MIT", "dependencies": { - "loader-utils": "^3.2.0" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/http-assert/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">= 0.6" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" }, - "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true, + "license": "MIT" }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "dev": true, + "license": "MIT" }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 14" } }, - "node_modules/git-log-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", - "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", + "node_modules/http-proxy-middleware": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", + "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", "dev": true, "license": "MIT", "dependencies": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "0.6.8" - } - }, - "node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", - "dev": true, - "license": "ISC", - "dependencies": { - "through2": "~2.0.0" - } - }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "license": "ISC" - }, - "node_modules/glob": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-12.0.0.tgz", - "integrity": "sha512-5Qcll1z7IKgHr5g485ePDdHcNQY0k2dtv/bjYy0iuyGxQw2qSOiiXUXJ+AYQpg3HNoUMHqAruX478Jeev7UULw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regex.js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", - "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "bin": { + "http-server": "bin/http-server" }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", "engines": { - "node": "18 || 20 || >=22" + "node": ">=12" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=10.19.0" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "license": "BlueOak-1.0.0", + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.2" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 14" } }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "license": "MIT", - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10.18" } }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/global-prefix/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "harmony-reflect": "^1.4.6" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=4" } }, - "node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/ignore-walk": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", + "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "minimatch": "^10.0.3" }, "engines": { - "node": ">= 0.4" + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/immutable": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/got": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", - "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", + "node_modules/import-from-esm": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", + "integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==", "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" }, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "node": ">=16.20" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, - "license": "MIT" - }, - "node_modules/h3": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.5.tgz", - "integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==", "license": "MIT", - "dependencies": { - "cookie-es": "^1.2.2", - "crossws": "^0.3.5", - "defu": "^6.1.4", - "destr": "^2.0.5", - "iron-webcrypto": "^1.2.1", - "node-mock-http": "^1.0.4", - "radix3": "^1.1.2", - "ufo": "^1.6.3", - "uncrypto": "^0.1.3" + "engines": { + "node": ">=8" } }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true, - "license": "MIT" - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { - "handlebars": "bin/handlebars" + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=0.4.7" + "node": ">=8" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "license": "(Apache-2.0 OR MPL-1.1)" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.8.19" } }, - "node_modules/has-flag": { + "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { + "node_modules/index-to-position": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", + "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", "dev": true, "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", + "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", + "dev": true, + "license": "ISC", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/injection-js": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.6.1.tgz", + "integrity": "sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==", + "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "tslib": "^2.0.0" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/inspect-with-kind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/inspect-with-kind/-/inspect-with-kind-1.0.5.tgz", + "integrity": "sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==", + "dev": true, + "license": "ISC", + "dependencies": { + "kind-of": "^6.0.2" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, - "node_modules/hast-util-from-html": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", - "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "node_modules/into-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", + "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "devlop": "^1.1.0", - "hast-util-from-parse5": "^8.0.0", - "parse5": "^7.0.0", - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-html/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" + "node": ">=12" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hast-util-from-html/node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "node_modules/ip-address": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "dev": true, "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "engines": { + "node": ">= 12" } }, - "node_modules/hast-util-from-parse5": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", - "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "hastscript": "^9.0.0", - "property-information": "^7.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 10" } }, - "node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/brc-dd" } }, - "node_modules/hast-util-parse-selector": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/hast-util-raw": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", - "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-from-parse5": "^8.0.0", - "hast-util-to-parse5": "^8.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "parse5": "^7.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/hast-util-raw/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=0.12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hast-util-raw/node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, "license": "MIT", "dependencies": { - "entities": "^6.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hast-util-to-estree": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", - "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-attach-comments": "^3.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "zwitch": "^2.0.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hast-util-to-html": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", - "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "vfile-message": "^4.0.0" + "binary-extensions": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/hast-util-to-parse5": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", - "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hast-util-to-parse5/node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hast-util-to-text": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", - "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "hast-util-is-element": "^3.0.0", - "unist-util-find-after": "^5.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hastscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", - "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/highlight.js": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", - "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "license": "MIT", - "dependencies": { - "parse-passwd": "^1.0.0" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hono": { - "version": "4.12.4", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.4.tgz", - "integrity": "sha512-ooiZW1Xy8rQ4oELQ++otI2T9DsKpV0M6c6cO6JGx4RTfav9poFFLlet9UMXHZnoM1yG0HWGlQLswBGX3RZmHtg==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=16.9.0" + "node": ">=0.10.0" } }, - "node_modules/hook-std": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-4.0.0.tgz", - "integrity": "sha512-IHI4bEVOt3vRUDJ+bFA9VUJlo7SzvFARPNLw75pqSmAOP2HmTWfFJtPvLBrDrlgjEYXY9zs7SFdHPQaJShkSCQ==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, "engines": { - "node": ">=20" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hosted-git-info": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", - "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", + "node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^11.1.0" + "get-east-asian-width": "^1.3.1" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "20 || >=22" + "node": ">=6" } }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "license": "MIT" - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/htmlparser2": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", - "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "entities": "^7.0.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", - "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", - "dev": true, - "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" + "node": ">=20" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", - "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-equal": "~1.0.1", - "http-errors": "~1.8.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-assert/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-assert/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "license": "MIT", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-assert/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-cache-semantics": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "license": "BSD-2-Clause" - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { + "node_modules/is-interactive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", "dev": true, "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, "engines": { - "node": ">= 0.8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-parser-js": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", - "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true, "license": "MIT" }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, "engines": { - "node": ">= 14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-proxy-middleware": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", - "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", + "node_modules/is-network-error": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.1.tgz", + "integrity": "sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==", "dev": true, "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.15", - "debug": "^4.3.6", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.3", - "is-plain-object": "^5.0.0", - "micromatch": "^4.0.8" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-server": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", - "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", - "dependencies": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - }, - "bin": { - "http-server": "bin/http-server" - }, "engines": { - "node": ">=12" + "node": ">=0.12.0" } }, - "node_modules/http2-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", - "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "license": "MIT", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=10.19.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, "engines": { - "node": ">= 14" + "node": ">=8" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": ">=10.17.0" + "node": ">=8" } }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10.18" + "node": ">=0.10.0" } }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, "engines": { "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "license": "MIT" + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" } }, - "node_modules/identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "license": "MIT", "dependencies": { - "harmony-reflect": "^1.4.6" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ignore-walk": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", - "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minimatch": "^10.0.3" + "call-bound": "^1.0.3" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ignore-walk/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", "engines": { - "node": "18 || 20 || >=22" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dev": true, "license": "MIT", - "optional": true, - "bin": { - "image-size": "bin/image-size.js" + "dependencies": { + "text-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/immutable": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", - "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", - "dev": true, - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-from-esm": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", - "integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==", + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "import-meta-resolve": "^4.0.0" - }, "engines": { - "node": ">=16.20" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-meta-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", - "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, + "license": "MIT" }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/index-to-position": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", - "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", - "dev": true, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, "engines": { - "node": ">=18" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, - "node_modules/ini": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", - "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=0.10.0" } }, - "node_modules/injection-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.6.1.tgz", - "integrity": "sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==", + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" + "peerDependencies": { + "ws": "*" } }, - "node_modules/inline-style-parser": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", - "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", - "license": "MIT" - }, - "node_modules/inspect-with-kind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/inspect-with-kind/-/inspect-with-kind-1.0.5.tgz", - "integrity": "sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==", + "node_modules/issue-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", + "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "kind-of": "^6.0.2" + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": "^18.17 || >=20.6.1" } }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/into-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", - "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 12" + "node": ">=10" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=10" } }, - "node_modules/iron-webcrypto": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", - "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/brc-dd" + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/istanbul-reports/node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, "license": "MIT", "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">= 0.4" } }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "license": "MIT", + "node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "license": "BlueOak-1.0.0", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "@isaacs/cliui": "^9.0.0" }, "engines": { - "node": ">= 0.4" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "jake": "bin/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "license": "MIT" + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "license": "MIT", "dependencies": { - "has-bigints": "^1.0.2" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/jest-changed-files/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "node_modules/jest-changed-files/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-changed-files/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/jest-changed-files/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "node_modules/jest-changed-files/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "node_modules/jest-changed-files/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/jest-circus": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", + "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "p-limit": "^3.1.0", + "pretty-format": "30.2.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "node_modules/jest-circus/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/jest-circus/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" + }, "engines": { - "node": ">=6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-circus/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=10" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, "license": "MIT", "dependencies": { - "is-docker": "^3.0.0" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" }, "bin": { - "is-inside-container": "cli.js" + "jest": "bin/jest.js" }, "engines": { - "node": ">=14.16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "node_modules/jest-cli/node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/jest-cli/node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "node_modules/jest-cli/node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, - "license": "MIT" - }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/jest-cli/node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-network-error": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", - "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "node_modules/jest-cli/node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=16" + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/jest-cli/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, "engines": { - "node": ">=0.12.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "node_modules/jest-cli/node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/jest-cli/node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/jest-cli/node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "node_modules/jest-cli/node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/jest-cli/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "node_modules/jest-cli/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, "license": "MIT" }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "node_modules/jest-cli/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@types/estree": "*" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/jest-cli/node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "node_modules/jest-cli/node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "call-bound": "^1.0.3" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/jest-cli/node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "node_modules/jest-cli/node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "node_modules/jest-cli/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-text-path": { + "node_modules/jest-cli/node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", - "dependencies": { - "text-extensions": "^2.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", + "node_modules/jest-cli/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "which-typed-array": "^1.1.16" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "node_modules/jest-cli/node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/jest-cli/node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "node_modules/jest-cli/node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "node_modules/jest-cli/node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "node_modules/jest-cli/node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "node_modules/jest-cli/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, "license": "MIT", "dependencies": { - "is-inside-container": "^1.0.0" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/jest-cli/node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isomorphic-ws": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", - "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ws": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/issue-parser": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", - "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", + "node_modules/jest-cli/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": "^18.17 || >=20.6.1" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "license": "BSD-3-Clause", + "node_modules/jest-cli/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, + "node_modules/jest-cli/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "license": "BSD-3-Clause", + "node_modules/jest-cli/node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "license": "BSD-3-Clause", + "node_modules/jest-cli/node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "node_modules/jest-cli/node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "license": "BlueOak-1.0.0", + "node_modules/jest-cli/node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jake": { - "version": "10.9.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", - "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.6", - "filelist": "^1.0.4", - "picocolors": "^1.1.1" - }, + "node_modules/jest-cli/node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", "bin": { - "jake": "bin/cli.js" + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "node_modules/jest-cli/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, "engines": { - "node": ">= 0.6.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest": { + "node_modules/jest-cli/node_modules/jest-validate": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } } }, - "node_modules/jest-changed-files": { + "node_modules/jest-cli/node_modules/jest-watcher": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.0.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", "jest-util": "^29.7.0", - "p-limit": "^3.1.0" + "string-length": "^4.0.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus": { + "node_modules/jest-cli/node_modules/jest-worker": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-cli/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-circus/node_modules/pretty-format": { + "node_modules/jest-cli/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-cli/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -31351,61 +31367,66 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/react-is": { + "node_modules/jest-cli/node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node_modules/jest-cli/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/jest-cli/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/jest-cli/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/jest-cli/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/jest-cli/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" + } + }, + "node_modules/jest-cli/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "node_modules/jest-cli/node_modules/string-width": { @@ -31423,6 +31444,36 @@ "node": ">=8" } }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/jest-cli/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -31442,46 +31493,66 @@ "node": ">=12" } }, + "node_modules/jest-cli/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", + "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.2.0", + "@jest/types": "30.2.0", + "babel-jest": "30.2.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-circus": "30.2.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-runner": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "micromatch": "^4.0.8", "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", + "pretty-format": "30.2.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "@types/node": "*", + "esbuild-register": ">=3.4.0", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "esbuild-register": { + "optional": true + }, "ts-node": { "optional": true } @@ -31491,6 +31562,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -31500,29 +31572,32 @@ } }, "node_modules/jest-config/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-config/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -31534,10 +31609,31 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-diff/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -31550,6 +31646,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -31564,40 +31661,44 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "detect-newline": "^3.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", + "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "jest-util": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -31607,23 +31708,25 @@ } }, "node_modules/jest-each/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-each/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, "node_modules/jest-environment-jsdom": { @@ -31651,90 +31754,146 @@ } } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { + "node_modules/jest-environment-node": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", - "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", "dev": true, "license": "MIT", "dependencies": { + "@jest/environment": "30.2.0", "@jest/fake-timers": "30.2.0", "@jest/types": "30.2.0", "@types/node": "*", - "jest-mock": "30.2.0" + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", - "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.2.0", - "@sinonjs/fake-timers": "^13.0.0", "@types/node": "*", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/jest-leak-detector": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", + "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@jest/get-type": "30.1.0", + "pretty-format": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, - "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^3.0.1" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { + "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", @@ -31747,23 +31906,29 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-message-util": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", @@ -31784,7 +31949,42 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-mock": { + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-mock": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", @@ -31799,25 +31999,68 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-preset-angular": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-16.1.1.tgz", + "integrity": "sha512-yrvV/86IO2mj3H33xWVEPwmLW9CJIOM7YcMBcwDWa9OXEAW9XM+47no8R06oine9+wH+QWXfFzFR3TG6nX7QRA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" + "@jest/environment-jsdom-abstract": "^30.0.0", + "bs-logger": "^0.2.6", + "esbuild-wasm": ">=0.23.0", + "jest-util": "^30.0.0", + "pretty-format": "^30.0.0", + "ts-jest": "^29.4.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "optionalDependencies": { + "esbuild": ">=0.23.0" + }, + "peerDependencies": { + "@angular/compiler-cli": ">=19.0.0 <22.0.0", + "@angular/core": ">=19.0.0 <22.0.0", + "@angular/platform-browser": ">=19.0.0 <22.0.0", + "@angular/platform-browser-dynamic": ">=19.0.0 <22.0.0", + "jest": "^30.0.0", + "jsdom": ">=26.0.0", + "typescript": ">=5.5" + } + }, + "node_modules/jest-preset-angular/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/pretty-format": { + "node_modules/jest-preset-angular/node_modules/pretty-format": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", @@ -31832,81 +32075,127 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/react-is": { + "node_modules/jest-preset-angular/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, - "node_modules/jest-environment-node": { + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", + "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-get-type": { + "node_modules/jest-resolve-dependencies/node_modules/@jest/schemas": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-haste-map": { + "node_modules/jest-resolve-dependencies/node_modules/@jest/transform": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, "license": "MIT", "dependencies": { + "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", "jest-regex-util": "^29.6.3", "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", "micromatch": "^4.0.4", - "walker": "^1.0.8" + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" } }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "node_modules/jest-resolve-dependencies/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -31915,77 +32204,104 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "license": "MIT", + "node_modules/jest-resolve-dependencies/node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/jest-resolve-dependencies/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, "license": "MIT" }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "license": "MIT", + "node_modules/jest-resolve-dependencies/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node_modules/jest-resolve-dependencies/node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "node_modules/jest-resolve-dependencies/node_modules/jest-haste-map": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/jest-message-util": { + "node_modules/jest-resolve-dependencies/node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -32002,447 +32318,444 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { + "node_modules/jest-resolve-dependencies/node_modules/jest-snapshot": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/jest-mock": { + "node_modules/jest-resolve-dependencies/node_modules/jest-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.7.0" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-preset-angular": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-16.1.1.tgz", - "integrity": "sha512-yrvV/86IO2mj3H33xWVEPwmLW9CJIOM7YcMBcwDWa9OXEAW9XM+47no8R06oine9+wH+QWXfFzFR3TG6nX7QRA==", + "node_modules/jest-resolve-dependencies/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment-jsdom-abstract": "^30.0.0", - "bs-logger": "^0.2.6", - "esbuild-wasm": ">=0.23.0", - "jest-util": "^30.0.0", - "pretty-format": "^30.0.0", - "ts-jest": "^29.4.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "optionalDependencies": { - "esbuild": ">=0.23.0" - }, - "peerDependencies": { - "@angular/compiler-cli": ">=19.0.0 <22.0.0", - "@angular/core": ">=19.0.0 <22.0.0", - "@angular/platform-browser": ">=19.0.0 <22.0.0", - "@angular/platform-browser-dynamic": ">=19.0.0 <22.0.0", - "jest": "^30.0.0", - "jsdom": ">=26.0.0", - "typescript": ">=5.5" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-preset-angular/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/jest-resolve-dependencies/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/jest-preset-angular/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "node_modules/jest-resolve-dependencies/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-preset-angular/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "node_modules/jest-resolve-dependencies/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, - "node_modules/jest-preset-angular/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-resolve-dependencies/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-resolve-dependencies/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-preset-angular/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "node_modules/jest-resolve-dependencies/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/jest-preset-angular/node_modules/jest-util": { + "node_modules/jest-runner": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", + "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", "dev": true, "license": "MIT", "dependencies": { + "@jest/console": "30.2.0", + "@jest/environment": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", "@jest/types": "30.2.0", "@types/node": "*", "chalk": "^4.1.2", - "ci-info": "^4.2.0", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-leak-detector": "30.2.0", + "jest-message-util": "30.2.0", + "jest-resolve": "30.2.0", + "jest-runtime": "30.2.0", + "jest-util": "30.2.0", + "jest-watcher": "30.2.0", + "jest-worker": "30.2.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-preset-angular/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "yocto-queue": "^0.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-preset-angular/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "MIT" - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runner/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "node_modules/jest-runtime": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", + "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", "dev": true, "license": "MIT", "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/globals": "30.2.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runner/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", + "node_modules/jest-snapshot/node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "node_modules/jest-snapshot/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-snapshot/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", "leven": "^3.1.0", - "pretty-format": "^29.7.0" + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-validate/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -32452,63 +32765,69 @@ } }, "node_modules/jest-validate/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-validate/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", + "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "jest-util": "30.2.0", + "string-length": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", - "jest-util": "^29.7.0", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "supports-color": "^8.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -32520,6 +32839,44 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jest/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, "node_modules/jiti": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", @@ -32554,27 +32911,17 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, - "node_modules/js-yaml/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/jsdom": { "version": "26.1.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", @@ -32671,6 +33018,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, "license": "MIT", "dependencies": { @@ -32744,6 +33092,13 @@ "dev": true, "license": "ISC" }, + "node_modules/json-with-bigint": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.7.tgz", + "integrity": "sha512-7ei3MdAI5+fJPVnKlW77TKNKwQ5ppSzWvhPuSuINT/GYW9ZOC1eRKOuhV9yHG5aEsUPj9BBx5JIekkmoLHxZOw==", + "dev": true, + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -32757,9 +33112,9 @@ } }, "node_modules/jsonc-eslint-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.1.tgz", - "integrity": "sha512-uuPNLJkKN8NXAlZlQ6kmUF9qO+T6Kyd7oV4+/7yy8Jz6+MZNyhPq8EdLpdfnPVzUC8qSf1b4j1azKaGnFsjmsw==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.2.tgz", + "integrity": "sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==", "dev": true, "license": "MIT", "dependencies": { @@ -32786,6 +33141,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -33022,9 +33378,9 @@ } }, "node_modules/launch-editor": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", - "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.1.tgz", + "integrity": "sha512-lPSddlAAluRKJ7/cjRFoXUFzaX7q/YKI7yPHuEvSJVqoXvFnJov1/Ud87Aa4zULIbA9Nja4mSPK8l0z/7eV2wA==", "dev": true, "license": "MIT", "dependencies": { @@ -33033,9 +33389,9 @@ } }, "node_modules/less": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/less/-/less-4.4.0.tgz", - "integrity": "sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/less/-/less-4.4.2.tgz", + "integrity": "sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -33138,6 +33494,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -33192,19 +33549,20 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/listr2": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.1.tgz", - "integrity": "sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", + "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", "dev": true, "license": "MIT", "dependencies": { - "cli-truncate": "^4.0.0", + "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", @@ -33241,13 +33599,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, "node_modules/listr2/node_modules/eventemitter3": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", @@ -33255,24 +33606,6 @@ "dev": true, "license": "MIT" }, - "node_modules/listr2/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/listr2/node_modules/strip-ansi": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", @@ -33308,9 +33641,9 @@ } }, "node_modules/lmdb": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.2.tgz", - "integrity": "sha512-nwVGUfTBUwJKXd6lRV8pFNfnrCC1+l49ESJRM19t/tFb/97QfJEixe5DYRvug5JO7DSFKoKaVy7oGMt5rVqZvg==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.4.tgz", + "integrity": "sha512-+Y2DqovevLkb6DrSQ6SXTYLEd6kvlRbhsxzgJrk7BUfOVA/mt21ak6pFDZDKxiAczHMWxrb02kXBTSTIA0O94A==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -33326,13 +33659,13 @@ "download-lmdb-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.4.2", - "@lmdb/lmdb-darwin-x64": "3.4.2", - "@lmdb/lmdb-linux-arm": "3.4.2", - "@lmdb/lmdb-linux-arm64": "3.4.2", - "@lmdb/lmdb-linux-x64": "3.4.2", - "@lmdb/lmdb-win32-arm64": "3.4.2", - "@lmdb/lmdb-win32-x64": "3.4.2" + "@lmdb/lmdb-darwin-arm64": "3.4.4", + "@lmdb/lmdb-darwin-x64": "3.4.4", + "@lmdb/lmdb-linux-arm": "3.4.4", + "@lmdb/lmdb-linux-arm64": "3.4.4", + "@lmdb/lmdb-linux-x64": "3.4.4", + "@lmdb/lmdb-win32-arm64": "3.4.4", + "@lmdb/lmdb-win32-x64": "3.4.4" } }, "node_modules/load-json-file": { @@ -33489,6 +33822,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, "license": "MIT" }, "node_modules/lodash.escaperegexp": { @@ -33541,14 +33875,14 @@ "license": "MIT" }, "node_modules/log-symbols": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", + "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" + "is-unicode-supported": "^2.0.0", + "yoctocolors": "^2.1.1" }, "engines": { "node": ">=18" @@ -33557,32 +33891,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", @@ -33604,9 +33912,9 @@ } }, "node_modules/log-update/node_modules/ansi-escapes": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", - "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", "dev": true, "license": "MIT", "dependencies": { @@ -33645,29 +33953,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/log-update/node_modules/slice-ansi": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", @@ -33685,32 +33970,14 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/log-update/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -33837,36 +34104,35 @@ } }, "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/magicast": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", - "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", + "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } }, "node_modules/make-asynchronous": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-asynchronous/-/make-asynchronous-1.0.1.tgz", - "integrity": "sha512-T9BPOmEOhp6SmV25SwLVcHK4E6JyG/coH3C6F1NjNXSziv/fd4GmsqMk8YR6qpPOswfaOCApSNkZv6fxoaYFcQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-asynchronous/-/make-asynchronous-1.1.0.tgz", + "integrity": "sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==", "dev": true, "license": "MIT", "dependencies": { "p-event": "^6.0.0", "type-fest": "^4.6.0", - "web-worker": "1.2.0" + "web-worker": "^1.5.0" }, "engines": { "node": ">=18" @@ -33875,23 +34141,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-asynchronous/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -33907,6 +34161,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, "license": "ISC" }, "node_modules/make-fetch-happen": { @@ -33932,10 +34187,21 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/make-fetch-happen/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" @@ -33999,9 +34265,9 @@ } }, "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", - "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", "dev": true, "license": "MIT", "dependencies": { @@ -34093,9 +34359,9 @@ } }, "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -34423,12 +34689,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -35165,6 +35433,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -35178,6 +35447,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -35230,6 +35500,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -35310,15 +35581,15 @@ "license": "ISC" }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "license": "ISC", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -35328,16 +35599,17 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -35479,16 +35751,16 @@ } }, "node_modules/mlly": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", - "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.1.tgz", + "integrity": "sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.15.0", + "acorn": "^8.16.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", - "ufo": "^1.6.1" + "ufo": "^1.6.3" } }, "node_modules/mlly/node_modules/confbox": { @@ -35650,6 +35922,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, "license": "MIT" }, "node_modules/needle": { @@ -35685,9 +35958,9 @@ } }, "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, "license": "MIT", "engines": { @@ -35718,9 +35991,9 @@ "license": "MIT" }, "node_modules/ng-packagr": { - "version": "20.1.0", - "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-20.1.0.tgz", - "integrity": "sha512-objHk39HWnSSv54KD0Ct4A02rug6HiqbmXo1KJW39npzuVc37QWfiZy94afltH1zIx+mQqollmGaCmwibmagvQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-21.2.0.tgz", + "integrity": "sha512-ASlXEboqt+ZgKzNPx3YCr924xqQRFA5qgm77GHf0Fm13hx7gVFYVm6WCdYZyeX/p9NJjFWAL+mIMfhsx2SHKoA==", "dev": true, "license": "MIT", "dependencies": { @@ -35729,16 +36002,16 @@ "@rollup/wasm-node": "^4.24.0", "ajv": "^8.17.1", "ansi-colors": "^4.1.3", - "browserslist": "^4.22.1", - "chokidar": "^4.0.1", + "browserslist": "^4.26.0", + "chokidar": "^5.0.0", "commander": "^14.0.0", "dependency-graph": "^1.0.0", - "esbuild": "^0.25.0", + "esbuild": "^0.27.0", "find-cache-directory": "^6.0.0", "injection-js": "^2.4.0", "jsonc-parser": "^3.3.1", "less": "^4.2.0", - "ora": "^8.2.0", + "ora": "^9.0.0", "piscina": "^5.0.0", "postcss": "^8.4.47", "rollup-plugin-dts": "^6.2.0", @@ -35756,10 +36029,10 @@ "rollup": "^4.24.0" }, "peerDependencies": { - "@angular/compiler-cli": "^20.0.0 || ^20.1.0-next.0 || ^20.2.0-next.0", + "@angular/compiler-cli": "^21.0.0 || ^21.2.0-next", "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", "tslib": "^2.3.0", - "typescript": ">=5.8 <5.9" + "typescript": ">=5.9 <6.0" }, "peerDependenciesMeta": { "tailwindcss": { @@ -35768,9 +36041,9 @@ } }, "node_modules/ng-packagr/node_modules/commander": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", - "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", "dev": true, "license": "MIT", "engines": { @@ -35845,6 +36118,35 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/node-exports-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", + "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-exports-info/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -35898,9 +36200,9 @@ } }, "node_modules/node-forge": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.2.tgz", - "integrity": "sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", "dev": true, "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { @@ -35978,12 +36280,14 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, "license": "MIT" }, "node_modules/node-machine-id": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true, "license": "MIT" }, "node_modules/node-mock-http": { @@ -35993,9 +36297,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", "license": "MIT" }, "node_modules/node-schedule": { @@ -36073,20 +36377,10 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/normalize-url": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.0.tgz", - "integrity": "sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", "dev": true, "license": "MIT", "engines": { @@ -36357,6 +36651,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -38213,9 +38508,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", "dev": true, "license": "MIT" }, @@ -38293,19 +38588,6 @@ } } }, - "node_modules/nx/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/nx/node_modules/@napi-rs/wasm-runtime": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", @@ -38318,13 +38600,6 @@ "@tybys/wasm-util": "^0.9.0" } }, - "node_modules/nx/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, "node_modules/nx/node_modules/@tybys/wasm-util": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", @@ -38348,29 +38623,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/nx/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/nx/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/nx/node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -38513,22 +38765,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/minimatch": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", - "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/nx/node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -38905,6 +39141,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -38914,6 +39151,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -38943,19 +39181,21 @@ } }, "node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", "dev": true, "license": "MIT", "dependencies": { - "default-browser": "^5.2.1", + "default-browser": "^5.4.0", "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -38990,24 +39230,24 @@ } }, "node_modules/ora": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", - "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-9.0.0.tgz", + "integrity": "sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.3.0", + "chalk": "^5.6.2", "cli-cursor": "^5.0.0", - "cli-spinners": "^2.9.2", + "cli-spinners": "^3.2.0", "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.0.0", - "log-symbols": "^6.0.0", + "is-unicode-supported": "^2.1.0", + "log-symbols": "^7.0.1", "stdin-discarder": "^0.2.2", - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0" + "string-width": "^8.1.0", + "strip-ansi": "^7.1.2" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -39040,51 +39280,43 @@ } }, "node_modules/ora/node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz", + "integrity": "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, "node_modules/ora/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ora/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -39190,19 +39422,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-event/node_modules/p-timeout": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", - "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-filter": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", @@ -39230,15 +39449,15 @@ } }, "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "yocto-queue": "^1.1.1" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -39260,6 +39479,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-map": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", @@ -39273,6 +39521,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-queue": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", + "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, "node_modules/p-reduce": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", @@ -39304,10 +39574,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -39326,9 +39609,9 @@ "license": "MIT" }, "node_modules/pacote": { - "version": "21.3.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.3.1.tgz", - "integrity": "sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==", + "version": "21.0.4", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.4.tgz", + "integrity": "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==", "dev": true, "license": "ISC", "dependencies": { @@ -39361,6 +39644,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -39398,6 +39682,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -39416,12 +39701,14 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, "license": "MIT" }, "node_modules/parse-json/node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, "license": "MIT" }, "node_modules/parse-latin": { @@ -39610,6 +39897,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -39628,29 +39916,30 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", - "license": "ISC", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } @@ -39670,6 +39959,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -39722,16 +40012,6 @@ "is-reference": "^3.0.0" } }, - "node_modules/periscopic/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/periscopic/node_modules/is-reference": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", @@ -39780,15 +40060,16 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/piscina": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.1.3.tgz", - "integrity": "sha512-0u3N7H4+hbr40KjuVn2uNhOcthu/9usKhnw5vT3J7ply79v3D3M8naI00el9Klcy16x557VsEkkUQaHCWFXC/g==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.1.4.tgz", + "integrity": "sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==", "dev": true, "license": "MIT", "engines": { @@ -39989,14 +40270,32 @@ "pathe": "^2.0.3" } }, + "node_modules/pkijs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", + "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/playwright": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", - "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", + "version": "1.58.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", + "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.56.1" + "playwright-core": "1.58.2" }, "bin": { "playwright": "cli.js" @@ -40009,9 +40308,9 @@ } }, "node_modules/playwright-core": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", - "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", + "version": "1.58.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", + "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -40070,9 +40369,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "funding": [ { "type": "opencollective", @@ -40544,15 +40843,15 @@ } }, "node_modules/postcss-loader": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", - "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.2.0.tgz", + "integrity": "sha512-tHX+RkpsXVcc7st4dSdDGliI+r4aAQDuv+v3vFYHixb6YgjreG5AG4SEB0kDK8u2s6htqEEpKlkhSBUTvWKYnA==", "dev": true, "license": "MIT", "dependencies": { "cosmiconfig": "^9.0.0", - "jiti": "^1.20.0", - "semver": "^7.5.4" + "jiti": "^2.5.1", + "semver": "^7.6.2" }, "engines": { "node": ">= 18.12.0" @@ -40576,9 +40875,9 @@ } }, "node_modules/postcss-loader/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -40603,26 +40902,13 @@ } }, "node_modules/postcss-loader/node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/postcss-loader/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, "bin": { - "js-yaml": "bin/js-yaml.js" + "jiti": "lib/jiti-cli.mjs" } }, "node_modules/postcss-logical": { @@ -40814,9 +41100,9 @@ } }, "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -40844,9 +41130,9 @@ } }, "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -41283,6 +41569,13 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-selector-not/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/postcss-selector-parser": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", @@ -41349,6 +41642,13 @@ "postcss": "^8.0.0" } }, + "node_modules/postcss-url/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/postcss-url/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -41419,6 +41719,19 @@ "dev": true, "license": "MIT" }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -41430,9 +41743,9 @@ } }, "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -41445,9 +41758,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.4.0.tgz", - "integrity": "sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.5.1.tgz", + "integrity": "sha512-65+fr5+cgIKWKiqM1Doum4uX6bY8iFCdztvvp2RcF+AJoieaw9kJOFMNcJo/bkmKYsxFaM9OsVZK/gWauG/5mg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -41630,10 +41943,21 @@ "node": ">= 0.10" } }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, "license": "MIT" }, "node_modules/prr": { @@ -41651,9 +41975,10 @@ "license": "MIT" }, "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, "funding": [ { "type": "individual", @@ -41666,10 +41991,30 @@ ], "license": "MIT" }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -41702,6 +42047,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -41780,27 +42126,6 @@ "node": ">= 0.10" } }, - "node_modules/raw-body/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -41978,17 +42303,17 @@ } }, "node_modules/read-package-up/node_modules/read-pkg": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.0.0.tgz", - "integrity": "sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.1.0.tgz", + "integrity": "sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==", "dev": true, "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.4", "normalize-package-data": "^8.0.0", "parse-json": "^8.3.0", - "type-fest": "^5.2.0", - "unicorn-magic": "^0.3.0" + "type-fest": "^5.4.4", + "unicorn-magic": "^0.4.0" }, "engines": { "node": ">=20" @@ -41998,9 +42323,9 @@ } }, "node_modules/read-package-up/node_modules/type-fest": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.3.1.tgz", - "integrity": "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg==", + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.4.tgz", + "integrity": "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==", "dev": true, "license": "(MIT OR CC0-1.0)", "dependencies": { @@ -42014,13 +42339,13 @@ } }, "node_modules/read-package-up/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -42065,19 +42390,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/read-pkg/node_modules/parse-json": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", @@ -42096,19 +42408,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -42133,13 +42432,12 @@ "license": "MIT" }, "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", "license": "MIT", "engines": { - "node": ">= 14.18.0" + "node": ">= 20.19.0" }, "funding": { "type": "individual", @@ -42261,12 +42559,14 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2" @@ -42331,6 +42631,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", @@ -42345,13 +42646,13 @@ } }, "node_modules/registry-auth-token": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", - "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz", + "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==", "dev": true, "license": "MIT", "dependencies": { - "@pnpm/npm-conf": "^2.1.0" + "@pnpm/npm-conf": "^3.0.2" }, "engines": { "node": ">=14" @@ -42361,12 +42662,14 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, "license": "MIT" }, "node_modules/regjsparser": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "jsesc": "~3.1.0" @@ -42557,6 +42860,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -42583,6 +42887,7 @@ "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.1", @@ -42637,6 +42942,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -42688,6 +42994,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -42817,6 +43124,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -42847,6 +43155,45 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rolldown": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.58.tgz", + "integrity": "sha512-v1FCjMZCan7f+xGAHBi+mqiE4MlH7I+SXEHSQSJoMOGNNB2UYtvMiejsq9YuUOiZjNeUeV/a21nSFbrUR+4ZCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.106.0", + "@rolldown/pluginutils": "1.0.0-beta.58" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-beta.58", + "@rolldown/binding-darwin-arm64": "1.0.0-beta.58", + "@rolldown/binding-darwin-x64": "1.0.0-beta.58", + "@rolldown/binding-freebsd-x64": "1.0.0-beta.58", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.58", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.58", + "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.58", + "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.58", + "@rolldown/binding-linux-x64-musl": "1.0.0-beta.58", + "@rolldown/binding-openharmony-arm64": "1.0.0-beta.58", + "@rolldown/binding-wasm32-wasi": "1.0.0-beta.58", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.58", + "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.58" + } + }, + "node_modules/rolldown/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.58", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.58.tgz", + "integrity": "sha512-qWhDs6yFGR5xDfdrwiSa3CWGIHxD597uGE/A9xGqytBjANvh4rLCTTkq7szhMV4+Ygh+PMS90KVJ8xWG/TkX4w==", + "dev": true, + "license": "MIT" + }, "node_modules/rollup": { "version": "4.59.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", @@ -42892,13 +43239,13 @@ } }, "node_modules/rollup-plugin-dts": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.2.3.tgz", - "integrity": "sha512-UgnEsfciXSPpASuOelix7m4DrmyQgiaWBnvI0TM4GxuDh5FkqW8E5hu57bCxXB90VvR1WNfLV80yEDN18UogSA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.3.0.tgz", + "integrity": "sha512-d0UrqxYd8KyZ6i3M2Nx7WOMy708qsV/7fTHMHxCMCBOAe3V/U7OMPu5GkX8hC+cmkHhzGnfeYongl1IgiooddA==", "dev": true, "license": "LGPL-3.0-only", "dependencies": { - "magic-string": "^0.30.17" + "magic-string": "^0.30.21" }, "engines": { "node": ">=16" @@ -42946,6 +43293,13 @@ "node": ">= 8.0.0" } }, + "node_modules/rollup-plugin-typescript2/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, "node_modules/rollup-plugin-typescript2/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -43015,6 +43369,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -43179,9 +43534,9 @@ } }, "node_modules/sass": { - "version": "1.90.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", - "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", + "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", "dev": true, "license": "MIT", "dependencies": { @@ -43258,28 +43613,6 @@ "sass": "1.97.3" } }, - "node_modules/sass-embedded-all-unknown/node_modules/sass": { - "version": "1.97.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", - "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, "node_modules/sass-embedded-android-arm": { "version": "1.97.3", "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.97.3.tgz", @@ -43535,28 +43868,6 @@ "sass": "1.97.3" } }, - "node_modules/sass-embedded-unknown-all/node_modules/sass": { - "version": "1.97.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", - "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, "node_modules/sass-embedded-win32-arm64": { "version": "1.97.3", "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.97.3.tgz", @@ -43608,9 +43919,9 @@ } }, "node_modules/sass-loader": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", - "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", + "version": "16.0.7", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.7.tgz", + "integrity": "sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==", "dev": true, "license": "MIT", "dependencies": { @@ -43624,7 +43935,7 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", @@ -43648,6 +43959,36 @@ } } }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sax": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/sax/-/sax-1.5.0.tgz", @@ -43889,9 +44230,9 @@ } }, "node_modules/semantic-release/node_modules/conventional-changelog-angular": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz", - "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.3.0.tgz", + "integrity": "sha512-DOuBwYSqWzfwuRByY9O4oOIvDlkUCTDzfbOgcSbkY+imXXj+4tmrEFao3K+FxemClYfYnZzsvudbwrhje9VHDA==", "dev": true, "license": "ISC", "dependencies": { @@ -43902,12 +44243,13 @@ } }, "node_modules/semantic-release/node_modules/conventional-changelog-writer": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.2.0.tgz", - "integrity": "sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.4.0.tgz", + "integrity": "sha512-HHBFkk1EECxxmCi4CTu091iuDpQv5/OavuCUAuZmrkWpmYfyD816nom1CvtfXJ/uYfAAjavgHvXHX291tSLK8g==", "dev": true, "license": "MIT", "dependencies": { + "@simple-libs/stream-utils": "^1.2.0", "conventional-commits-filter": "^5.0.0", "handlebars": "^4.7.7", "meow": "^13.0.0", @@ -43931,12 +44273,13 @@ } }, "node_modules/semantic-release/node_modules/conventional-commits-parser": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.1.tgz", - "integrity": "sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.3.0.tgz", + "integrity": "sha512-RfOq/Cqy9xV9bOA8N+ZH6DlrDR+5S3Mi0B5kACEjESpE+AviIpAptx9a9cFpWCCvgRtWT+0BbUw+e1BZfts9jg==", "dev": true, "license": "MIT", "dependencies": { + "@simple-libs/stream-utils": "^1.2.0", "meow": "^13.0.0" }, "bin": { @@ -43947,9 +44290,9 @@ } }, "node_modules/semantic-release/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -43974,9 +44317,9 @@ } }, "node_modules/semantic-release/node_modules/execa": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", - "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", "dev": true, "license": "MIT", "dependencies": { @@ -44100,19 +44443,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/semantic-release/node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", @@ -44169,19 +44499,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/semantic-release/node_modules/unicorn-magic": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", @@ -44196,9 +44513,9 @@ } }, "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -44263,27 +44580,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/send/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -44295,22 +44591,26 @@ } }, "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.4", + "accepts": "~1.3.8", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" }, "engines": { "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/serve-index/node_modules/accepts": { @@ -44348,28 +44648,22 @@ } }, "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "license": "MIT", "dependencies": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "license": "ISC" - }, "node_modules/serve-index/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -44410,13 +44704,6 @@ "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true, - "license": "ISC" - }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -44560,19 +44847,6 @@ "@img/sharp-win32-x64": "0.34.5" } }, - "node_modules/sharp/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -44608,17 +44882,17 @@ } }, "node_modules/shiki": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.21.0.tgz", - "integrity": "sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.23.0.tgz", + "integrity": "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==", "license": "MIT", "dependencies": { - "@shikijs/core": "3.21.0", - "@shikijs/engine-javascript": "3.21.0", - "@shikijs/engine-oniguruma": "3.21.0", - "@shikijs/langs": "3.21.0", - "@shikijs/themes": "3.21.0", - "@shikijs/types": "3.21.0", + "@shikijs/core": "3.23.0", + "@shikijs/engine-javascript": "3.23.0", + "@shikijs/engine-oniguruma": "3.23.0", + "@shikijs/langs": "3.23.0", + "@shikijs/themes": "3.23.0", + "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } @@ -44876,23 +45150,24 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" }, "engines": { - "node": ">=12" + "node": ">=20" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" @@ -45037,12 +45312,12 @@ "license": "MIT" }, "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">= 12" } }, "node_modules/source-map-js": { @@ -45137,6 +45412,17 @@ "spdx-license-ids": "^3.0.0" } }, + "node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", @@ -45145,9 +45431,9 @@ "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, "license": "MIT", "dependencies": { @@ -45156,9 +45442,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "dev": true, "license": "CC0-1.0" }, @@ -45223,6 +45509,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/ssri": { @@ -45242,6 +45529,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" @@ -45254,6 +45542,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -45403,6 +45692,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" @@ -45412,6 +45702,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, "license": "MIT" }, "node_modules/string-argv": { @@ -45435,6 +45726,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, "license": "MIT", "dependencies": { "char-regex": "^1.0.2", @@ -45445,52 +45737,22 @@ } }, "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", @@ -45503,13 +45765,19 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -45646,23 +45914,11 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -45706,6 +45962,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -45714,23 +45971,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strong-log-transformer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", - "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", - "license": "Apache-2.0", - "dependencies": { - "duplexer": "^0.1.1", - "minimist": "^1.2.0", - "through": "^2.3.4" - }, - "bin": { - "sl-log-transformer": "bin/sl-log-transformer.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/strtok3": { "version": "10.3.4", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", @@ -45749,17 +45989,18 @@ } }, "node_modules/style-dictionary": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-5.1.1.tgz", - "integrity": "sha512-scRFwr2VrerXy6BzO2Ym8AI0dRGkAIoS2YhooagytxCFkoXPYCLhvIxg3VO/yD2i4VeU4aGmHG80+ZLdPDb0uw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-5.3.3.tgz", + "integrity": "sha512-NSeYkVYttoko/TPiH82F6EewyL3eDEVQPLnh8ofRgA0EG5kYEkcMhu5/Wqkfpfpyq1tlPP1t1yePnBZm11sA/Q==", "license": "Apache-2.0", "dependencies": { "@bundled-es-modules/deepmerge": "^4.3.1", - "@bundled-es-modules/glob": "^11.0.3", - "@bundled-es-modules/memfs": "^4.9.4", + "@bundled-es-modules/glob": "^13.0.6", + "@bundled-es-modules/memfs": "^4.17.0", "@zip.js/zip.js": "^2.7.44", "chalk": "^5.3.0", "change-case": "^5.3.0", + "colorjs.io": "^0.5.2", "commander": "^12.1.0", "is-plain-obj": "^4.1.0", "json5": "^2.2.2", @@ -45881,6 +46122,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -45910,6 +46152,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -46111,16 +46354,6 @@ "integrity": "sha512-/NTxqTwLc7Dq306hARJrH2HLXOBtKd7hu8nxgoFDlK0AC4SOKnzisiX/9m8Uksei1QAWtlAEdF91YphNM8iDMg==", "license": "MIT" }, - "node_modules/svelte/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/svelte/node_modules/is-reference": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", @@ -46264,9 +46497,9 @@ } }, "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -46307,9 +46540,9 @@ } }, "node_modules/tar": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", - "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.10.tgz", + "integrity": "sha512-8mOPs1//5q/rlkNSPcCegA6hiHJYDmSLEI8aMH/CdSQJNWztHC9WHNam5zdQlfpTwB9Xp7IBEsHfV5LKMJGVAw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -46324,13 +46557,14 @@ } }, "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", "dev": true, "license": "MIT", "dependencies": { "b4a": "^1.6.4", + "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } @@ -46345,6 +46579,16 @@ "node": ">=18" } }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, "node_modules/temp-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", @@ -46356,9 +46600,9 @@ } }, "node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.2.0.tgz", + "integrity": "sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -46401,14 +46645,14 @@ } }, "node_modules/terser": { - "version": "5.43.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", - "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.14.0", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -46495,6 +46739,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", @@ -46505,10 +46750,18 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/test-exclude/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -46519,6 +46772,7 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -46528,9 +46782,9 @@ } }, "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -46600,6 +46854,7 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, "license": "MIT" }, "node_modules/through2": { @@ -46665,13 +46920,13 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -46714,6 +46969,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.14" @@ -46723,12 +46979,14 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -46748,13 +47006,13 @@ } }, "node_modules/token-types": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz", - "integrity": "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", "dev": true, "license": "MIT", "dependencies": { - "@borewit/text-codec": "^0.1.0", + "@borewit/text-codec": "^0.2.1", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" }, @@ -46945,20 +47203,20 @@ } }, "node_modules/ts-checker-rspack-plugin/node_modules/memfs": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.10.tgz", - "integrity": "sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==", + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.11.tgz", + "integrity": "sha512-/GodtwVeKVIHZKLUSr2ZdOxKBC5hHki4JNCU22DoCGPEHr5o2PD5U721zvESKyWwCfTfavFl9WZYgA13OAYK0g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-fsa": "4.56.10", - "@jsonjoy.com/fs-node": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-to-fsa": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/fs-print": "4.56.10", - "@jsonjoy.com/fs-snapshot": "4.56.10", + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-to-fsa": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", @@ -47053,32 +47311,6 @@ } } }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ts-loader": { "version": "9.5.4", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", @@ -47104,6 +47336,7 @@ "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -47143,6 +47376,16 @@ } } }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/tsconfck": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", @@ -47167,6 +47410,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, "license": "MIT", "dependencies": { "json5": "^2.2.2", @@ -47197,6 +47441,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -47218,6 +47463,26 @@ "node": ">=0.6.x" } }, + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tsyringe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/tuf-js": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.1.0.tgz", @@ -47260,18 +47525,19 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -47385,9 +47651,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -47509,9 +47775,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "7.19.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.19.2.tgz", - "integrity": "sha512-4VQSpGEGsWzk0VYxyB/wVX/Q7qf9t5znLRgs0dzszr9w9Fej/8RVNQ+S20vdXSAyra/bJ7ZQfGv6ZMj7UEbzSg==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz", + "integrity": "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==", "dev": true, "license": "MIT", "engines": { @@ -47522,12 +47788,14 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -47547,6 +47815,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", @@ -47560,6 +47829,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -47569,6 +47839,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -47619,9 +47890,9 @@ } }, "node_modules/unifont": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.3.tgz", - "integrity": "sha512-b0GtQzKCyuSHGsfj5vyN8st7muZ6VCI4XD4vFlr7Uy1rlWVYxC3npnfk8MyreHxJYrz1ooLDqDzFe9XqQTlAhA==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.4.tgz", + "integrity": "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==", "license": "MIT", "dependencies": { "css-tree": "^3.1.0", @@ -47797,9 +48068,9 @@ } }, "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -47849,6 +48120,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" @@ -47995,43 +48267,15 @@ } } }, - "node_modules/unstorage/node_modules/chokidar": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", - "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", - "license": "MIT", - "dependencies": { - "readdirp": "^5.0.0" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/unstorage/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, - "node_modules/unstorage/node_modules/readdirp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", - "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", - "license": "MIT", - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -48130,6 +48374,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, "license": "MIT" }, "node_modules/utils-merge": { @@ -48156,12 +48401,14 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -48176,6 +48423,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, "license": "MIT" }, "node_modules/validate-npm-package-license": { @@ -48189,6 +48437,17 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/validate-npm-package-name": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", @@ -48548,115 +48807,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitest/node_modules/@vitest/mocker": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", - "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "4.0.18", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest/node_modules/@vitest/spy": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", - "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest/node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.0.18", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/vitest/node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/vitest/node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, "node_modules/vitest/node_modules/vite": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", - "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.25.0", + "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", @@ -48868,9 +49026,9 @@ } }, "node_modules/vscode-css-languageservice": { - "version": "6.3.9", - "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.9.tgz", - "integrity": "sha512-1tLWfp+TDM5ZuVWht3jmaY5y7O6aZmpeXLoHl5bv1QtRsRKt4xYGRMmdJa5Pqx/FTkgRbsna9R+Gn2xE+evVuA==", + "version": "6.3.10", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.10.tgz", + "integrity": "sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA==", "dev": true, "license": "MIT", "dependencies": { @@ -48881,9 +49039,9 @@ } }, "node_modules/vscode-html-languageservice": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.6.1.tgz", - "integrity": "sha512-5Mrqy5CLfFZUgkyhNZLA1Ye5g12Cb/v6VM7SxUzZUaRKWMDz4md+y26PrfRTSU0/eQAl3XpO9m2og+GGtDMuaA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.6.2.tgz", + "integrity": "sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg==", "dev": true, "license": "MIT", "dependencies": { @@ -48989,15 +49147,16 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, "license": "MIT", "dependencies": { @@ -49022,6 +49181,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, "license": "MIT", "dependencies": { "defaults": "^1.0.3" @@ -49031,6 +49191,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, "license": "MIT", "dependencies": { "clone": "^1.0.2" @@ -49058,9 +49219,9 @@ } }, "node_modules/web-worker": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", - "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz", + "integrity": "sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==", "dev": true, "license": "Apache-2.0" }, @@ -49075,9 +49236,9 @@ } }, "node_modules/webpack": { - "version": "5.105.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz", - "integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==", + "version": "5.105.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", + "integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==", "dev": true, "license": "MIT", "dependencies": { @@ -49124,15 +49285,15 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", - "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "dev": true, "license": "MIT", "dependencies": { "colorette": "^2.0.10", - "memfs": "^4.6.0", - "mime-types": "^2.1.31", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" @@ -49154,12 +49315,20 @@ } }, "node_modules/webpack-dev-middleware/node_modules/memfs": { - "version": "4.51.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.0.tgz", - "integrity": "sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==", + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.11.tgz", + "integrity": "sha512-/GodtwVeKVIHZKLUSr2ZdOxKBC5hHki4JNCU22DoCGPEHr5o2PD5U721zvESKyWwCfTfavFl9WZYgA13OAYK0g==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-to-fsa": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", @@ -49170,41 +49339,21 @@ "funding": { "type": "github", "url": "https://github.com/sponsors/streamich" - } - }, - "node_modules/webpack-dev-middleware/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-middleware/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" }, - "engines": { - "node": ">= 0.6" + "peerDependencies": { + "tslib": "2" } }, "node_modules/webpack-dev-server": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", - "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", "dev": true, "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", - "@types/express": "^4.17.21", + "@types/express": "^4.17.25", "@types/express-serve-static-core": "^4.17.21", "@types/serve-index": "^1.9.4", "@types/serve-static": "^1.15.5", @@ -49214,9 +49363,9 @@ "bonjour-service": "^1.2.1", "chokidar": "^3.6.0", "colorette": "^2.0.10", - "compression": "^1.7.4", + "compression": "^1.8.1", "connect-history-api-fallback": "^2.0.0", - "express": "^4.21.2", + "express": "^4.22.1", "graceful-fs": "^4.2.6", "http-proxy-middleware": "^2.0.9", "ipaddr.js": "^2.1.0", @@ -49224,7 +49373,7 @@ "open": "^10.0.3", "p-retry": "^6.2.0", "schema-utils": "^4.2.0", - "selfsigned": "^2.4.1", + "selfsigned": "^5.5.0", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", @@ -49292,37 +49441,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/webpack-dev-server/node_modules/body-parser/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/webpack-dev-server/node_modules/body-parser/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/webpack-dev-server/node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -49348,10 +49466,20 @@ "fsevents": "~2.3.2" } }, + "node_modules/webpack-dev-server/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/webpack-dev-server/node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "dev": true, "license": "MIT" }, @@ -49420,18 +49548,18 @@ } }, "node_modules/webpack-dev-server/node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -49499,16 +49627,6 @@ "node": ">=0.10.0" } }, - "node_modules/webpack-dev-server/node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/webpack-dev-server/node_modules/is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -49575,6 +49693,25 @@ "node": ">= 0.6" } }, + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/webpack-dev-server/node_modules/path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", @@ -49595,6 +49732,22 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/webpack-dev-server/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/webpack-dev-server/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", @@ -49611,111 +49764,74 @@ "node": ">= 0.8" } }, - "node_modules/webpack-dev-server/node_modules/raw-body/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" + "picomatch": "^2.2.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/webpack-dev-server/node_modules/raw-body/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=8.10.0" } }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/webpack-dev-server/node_modules/selfsigned": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", "dev": true, "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" }, "engines": { - "node": ">=8.10.0" + "node": ">=18" } }, "node_modules/webpack-dev-server/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/webpack-dev-server/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/webpack-dev-server/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "dev": true, "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/webpack-dev-server/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/webpack-dev-server/node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -49730,6 +49846,22 @@ "node": ">= 0.6" } }, + "node_modules/webpack-dev-server/node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/webpack-merge": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", @@ -49756,9 +49888,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", "dev": true, "license": "MIT", "engines": { @@ -49848,20 +49980,6 @@ "node": ">= 0.6" } }, - "node_modules/webpack/node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -49891,6 +50009,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, "license": "MIT", "dependencies": { @@ -50036,9 +50155,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -50088,56 +50207,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "license": "MIT" - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", @@ -50177,53 +50246,6 @@ "node": ">=8" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -50260,27 +50282,23 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, "node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -50304,16 +50322,17 @@ } }, "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", "dev": true, "license": "MIT", "dependencies": { - "is-wsl": "^3.1.0" + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -50366,6 +50385,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -50512,39 +50532,14 @@ "node": ">=20" } }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/yargs/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -50609,18 +50604,19 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -50667,9 +50663,9 @@ } }, "node_modules/zod": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", - "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz", + "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==", "dev": true, "license": "MIT", "funding": { diff --git a/package.json b/package.json index 4d124a137d..77a9ed2588 100644 --- a/package.json +++ b/package.json @@ -37,15 +37,15 @@ "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", "@abgov/design-tokens": "^1.10.0", "@abgov/nx-release": "^12.0.0", - "@angular-devkit/build-angular": "^20.3.17", - "@angular-devkit/core": "20.1.5", - "@angular-devkit/schematics": "20.1.5", + "@angular-devkit/build-angular": "21.1.4", + "@angular-devkit/core": "21.1.4", + "@angular-devkit/schematics": "21.1.4", "@angular-eslint/eslint-plugin": "18.0.1", "@angular-eslint/eslint-plugin-template": "18.0.1", "@angular-eslint/template-parser": "18.0.1", - "@angular/cli": "^21.1.5", - "@angular/compiler-cli": "20.1.6", - "@angular/language-service": "20.1.6", + "@angular/cli": "21.1.4", + "@angular/compiler-cli": "21.1.4", + "@angular/language-service": "21.1.4", "@astrojs/check": "^0.9.6", "@babel/core": "^7.14.5", "@babel/preset-react": "^7.14.5", @@ -60,7 +60,7 @@ "@nx/vitest": "22.5.3", "@nx/web": "22.5.3", "@nx/workspace": "22.5.3", - "@schematics/angular": "20.1.5", + "@schematics/angular": "21.1.4", "@sveltejs/vite-plugin-svelte": "^3.0.1", "@swc-node/register": "1.11.1", "@swc/cli": "0.7.10", @@ -97,7 +97,7 @@ "jiti": "2.4.2", "jsdom": "^26.1.0", "jsonc-eslint-parser": "^2.1.0", - "ng-packagr": "20.1.0", + "ng-packagr": "21.2.0", "nx": "22.5.3", "playwright": "^1.50.1", "postcss": "^8.4.5", @@ -114,7 +114,7 @@ "swc-loader": "0.1.15", "ts-jest": "29.4.6", "ts-node": "10.9.1", - "typescript": "5.8.3", + "typescript": "5.9.3", "vite": "~5.4.20", "vite-plugin-dts": "4.5.4", "vitest": "^4.0.13", @@ -122,14 +122,14 @@ "vitest-dom": "^0.1.1" }, "dependencies": { - "@angular/animations": "20.1.6", - "@angular/common": "20.3.14", - "@angular/compiler": "^20.3.16", - "@angular/core": "^20.3.17", - "@angular/forms": "20.1.6", - "@angular/platform-browser": "20.1.6", - "@angular/platform-browser-dynamic": "20.1.6", - "@angular/router": "20.1.6", + "@angular/animations": "21.1.4", + "@angular/common": "21.1.4", + "@angular/compiler": "21.1.4", + "@angular/core": "21.1.4", + "@angular/forms": "21.1.4", + "@angular/platform-browser": "21.1.4", + "@angular/platform-browser-dynamic": "21.1.4", + "@angular/router": "21.1.4", "@swc/helpers": "0.5.19", "@astrojs/mdx": "^4.3.13", "@astrojs/react": "^4.4.2", @@ -138,7 +138,6 @@ "dompurify": "^3.3.2", "flexsearch": "^0.8.212", "highlight.js": "^11.11.1", - "@nrwl/jest": "19.5.4", "react": "^19.2.3", "react-dom": "^19.2.3", "react-router-dom": "6.30.3", From 374dc315b35b5dc97f51f7cd1c9c787148e4bc0f Mon Sep 17 00:00:00 2001 From: Benji Franck Date: Thu, 12 Feb 2026 12:07:18 -0700 Subject: [PATCH 033/103] fix(#3273): keep Side Menu Group open --- apps/prs/angular/src/app/app.component.html | 1 + apps/prs/angular/src/app/app.routes.ts | 4 + .../routes/bugs/3273/bug3273-2.component.html | 25 ++++ .../routes/bugs/3273/bug3273-2.component.ts | 11 ++ .../routes/bugs/3273/bug3273.component.html | 27 ++++ .../src/routes/bugs/3273/bug3273.component.ts | 11 ++ apps/prs/react/src/app/app.tsx | 1 + apps/prs/react/src/main.tsx | 4 + apps/prs/react/src/routes/bugs/bug3273-2.tsx | 32 +++++ apps/prs/react/src/routes/bugs/bug3273.tsx | 34 ++++++ .../specs/side-menu.browser.spec.tsx | 115 ++++++++++++++++++ .../side-menu-group/SideMenuGroup.svelte | 15 +-- 12 files changed, 273 insertions(+), 7 deletions(-) create mode 100644 apps/prs/angular/src/routes/bugs/3273/bug3273-2.component.html create mode 100644 apps/prs/angular/src/routes/bugs/3273/bug3273-2.component.ts create mode 100644 apps/prs/angular/src/routes/bugs/3273/bug3273.component.html create mode 100644 apps/prs/angular/src/routes/bugs/3273/bug3273.component.ts create mode 100644 apps/prs/react/src/routes/bugs/bug3273-2.tsx create mode 100644 apps/prs/react/src/routes/bugs/bug3273.tsx create mode 100644 libs/react-components/specs/side-menu.browser.spec.tsx diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index eecb8d4564..29febdb01e 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -76,6 +76,7 @@ 3201 3215 3248 + 3273 3275 Can't unset month 3281 3337 - Autocomplete styling diff --git a/apps/prs/angular/src/app/app.routes.ts b/apps/prs/angular/src/app/app.routes.ts index 7a18f9b8af..551c7ad123 100644 --- a/apps/prs/angular/src/app/app.routes.ts +++ b/apps/prs/angular/src/app/app.routes.ts @@ -38,6 +38,8 @@ import { Bug3156Component } from "../routes/bugs/3156/bug3156.component"; import { Bug3201Component } from "../routes/bugs/3201/bug3201.component"; import { Bug3215Component } from "../routes/bugs/3215/bug3215.component"; import { Bug3248Component } from "../routes/bugs/3248/bug3248.component"; +import { Bug3273Component } from "../routes/bugs/3273/bug3273.component"; +import { Bug32732Component } from "../routes/bugs/3273/bug3273-2.component"; import { Bug3275Component } from "../routes/bugs/3275/bug3275.component"; import { Bug3281Component } from "../routes/bugs/3281/bug3281.component"; import { Bug3337Component } from "../routes/bugs/3337/bug3337.component"; @@ -116,6 +118,8 @@ export const appRoutes: Route[] = [ { path: "bugs/3201", component: Bug3201Component }, { path: "bugs/3215", component: Bug3215Component }, { path: "bugs/3248", component: Bug3248Component }, + { path: "bugs/3273", component: Bug3273Component }, + { path: "bugs/3273-2", component: Bug32732Component }, { path: "bugs/3275", component: Bug3275Component }, { path: "bugs/3281", component: Bug3281Component }, { path: "bugs/3337", component: Bug3337Component }, diff --git a/apps/prs/angular/src/routes/bugs/3273/bug3273-2.component.html b/apps/prs/angular/src/routes/bugs/3273/bug3273-2.component.html new file mode 100644 index 0000000000..97ee8a9528 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3273/bug3273-2.component.html @@ -0,0 +1,25 @@ +
    +

    Bug 3273: Keep side menu group open

    +

    This page tests a nested side menu group.

    + +

    Scenario two

    +

    + When you select the Parent Item, +
    + Then the Child Group will be closed, +
    + And the Parent Group will be open. +

    + +
    + + + Parent Item + + + Child Item + + + +
    +
    diff --git a/apps/prs/angular/src/routes/bugs/3273/bug3273-2.component.ts b/apps/prs/angular/src/routes/bugs/3273/bug3273-2.component.ts new file mode 100644 index 0000000000..c224d01903 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3273/bug3273-2.component.ts @@ -0,0 +1,11 @@ +import { Component } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { GoabSideMenu, GoabSideMenuGroup } from "@abgov/angular-components"; + +@Component({ + standalone: true, + selector: "abgov-bug3273-2", + templateUrl: "./bug3273-2.component.html", + imports: [CommonModule, GoabSideMenu, GoabSideMenuGroup], +}) +export class Bug32732Component {} diff --git a/apps/prs/angular/src/routes/bugs/3273/bug3273.component.html b/apps/prs/angular/src/routes/bugs/3273/bug3273.component.html new file mode 100644 index 0000000000..ec8d15d996 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3273/bug3273.component.html @@ -0,0 +1,27 @@ +
    +

    Bug 3273: Keep side menu group open

    +

    This page tests a nested side menu group.

    + +

    Scenario one

    +

    + When you open the Child Group, +
    + And you select the Child Item, +
    + Then the Child Group will be open, +
    + And the Parent Group will be open. +

    + +
    + + + Parent Item + + + Child Item + + + +
    +
    diff --git a/apps/prs/angular/src/routes/bugs/3273/bug3273.component.ts b/apps/prs/angular/src/routes/bugs/3273/bug3273.component.ts new file mode 100644 index 0000000000..0b587f9dd3 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3273/bug3273.component.ts @@ -0,0 +1,11 @@ +import { Component } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { GoabSideMenu, GoabSideMenuGroup } from "@abgov/angular-components"; + +@Component({ + standalone: true, + selector: "abgov-bug3273", + templateUrl: "./bug3273.component.html", + imports: [CommonModule, GoabSideMenu, GoabSideMenuGroup], +}) +export class Bug3273Component {} diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index 5d55fb0652..441917ae00 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -90,6 +90,7 @@ export function App() { 3215 Drawer Initial Height 3232 GoabText Tag Size 3248 Dropdown Dynamic Children Sync + 3273 Nested Side Menu Groups 3275 Can't unset month 3322 App Header Menu Hover 3281 GoabText p tag margin issues diff --git a/apps/prs/react/src/main.tsx b/apps/prs/react/src/main.tsx index dc4ded1b4c..eb910c1608 100644 --- a/apps/prs/react/src/main.tsx +++ b/apps/prs/react/src/main.tsx @@ -40,6 +40,8 @@ import { Bug3215Route } from "./routes/bugs/bug3215"; import { Bug3232Route } from "./routes/bugs/bug3232"; import { Bug3279Route } from "./routes/bugs/bug3279"; import { Bug3248Route } from "./routes/bugs/bug3248"; +import { Bug3273Route } from "./routes/bugs/bug3273"; +import { Bug3273Page2Route } from "./routes/bugs/bug3273-2"; import { Bug3275Route } from "./routes/bugs/bug3275"; import { Bug3322Route } from "./routes/bugs/bug3322"; import { Bug3281Route } from "./routes/bugs/bug3281"; @@ -126,6 +128,8 @@ root.render( } /> } /> } /> + } key={"bugs/3273"} /> + } /> } /> } /> } /> diff --git a/apps/prs/react/src/routes/bugs/bug3273-2.tsx b/apps/prs/react/src/routes/bugs/bug3273-2.tsx new file mode 100644 index 0000000000..67767d0c60 --- /dev/null +++ b/apps/prs/react/src/routes/bugs/bug3273-2.tsx @@ -0,0 +1,32 @@ +import { GoabSideMenu, GoabSideMenuGroup } from "@abgov/react-components"; +import { Link } from "react-router-dom"; + +export function Bug3273Page2Route() { + return ( +
    +

    Bug 3273: Keep side menu group open

    +

    This page tests a nested side menu group.

    + +

    Scenario two

    +

    + When you select the Parent Item, +
    + Then the Child Group will be closed, +
    + And the Parent Group will be open. +

    + +
    + + + Parent Item + + + Child Item + + + +
    +
    + ); +} diff --git a/apps/prs/react/src/routes/bugs/bug3273.tsx b/apps/prs/react/src/routes/bugs/bug3273.tsx new file mode 100644 index 0000000000..29758ec00c --- /dev/null +++ b/apps/prs/react/src/routes/bugs/bug3273.tsx @@ -0,0 +1,34 @@ +import { GoabSideMenu, GoabSideMenuGroup } from "@abgov/react-components"; +import { Link } from "react-router-dom"; + +export function Bug3273Route() { + return ( +
    +

    Bug 3273: Keep side menu group open

    +

    This page tests a nested side menu group.

    + +

    Scenario one

    +

    + When you open the Child Group, +
    + And you select the Child Item, +
    + Then the Child Group will be open, +
    + And the Parent Group will be open. +

    + +
    + + + Parent Item + + + Child Item + + + +
    +
    + ); +} diff --git a/libs/react-components/specs/side-menu.browser.spec.tsx b/libs/react-components/specs/side-menu.browser.spec.tsx new file mode 100644 index 0000000000..91c517beb5 --- /dev/null +++ b/libs/react-components/specs/side-menu.browser.spec.tsx @@ -0,0 +1,115 @@ +import { render } from "vitest-browser-react"; +import { GoabSideMenu, GoabSideMenuGroup } from "../src"; +import { describe, it, expect, vi } from "vitest"; + +describe("SideMenu", () => { + const Component = () => { + return ( + + + Parent Item + + + + Child Item + + + + + ); + }; + + const isGroupOpen = (groupHost: HTMLElement | null) => { + if (!groupHost) return; + const container = groupHost.shadowRoot?.querySelector('[data-testid="group"]'); + return !!container && !container.classList.contains("hidden"); + }; + + const updateURL = async (url: string) => { + window.history.pushState({}, "", url); + window.dispatchEvent(new PopStateEvent("popstate")); + }; + + beforeEach(() => { + window.history.pushState({}, "", "/"); + }); + + it("closes parent and child groups when no items are current", async () => { + const handler = vi.fn(); + + const result = render(); + + const menu = result.baseElement.querySelector("goa-side-menu"); + menu?.addEventListener("_open", handler); + + const parentGroup = result.baseElement.querySelector( + "goa-side-menu-group", + ) as HTMLElement; + const childGroup = parentGroup?.querySelector("goa-side-menu-group") as HTMLElement; + + expect(parentGroup).toBeTruthy(); + expect(childGroup).toBeTruthy(); + + await vi.waitFor(() => { + expect(handler).toHaveBeenCalled(); + expect(isGroupOpen(parentGroup)).toBe(false); + expect(isGroupOpen(childGroup)).toBe(false); + }); + }); + + it("opens parent and child group when the child item is current", async () => { + const handler = vi.fn(); + + const result = render(); + + const menu = result.baseElement.querySelector("goa-side-menu"); + menu?.addEventListener("_open", handler); + + const parentGroup = result.baseElement.querySelector( + "goa-side-menu-group", + ) as HTMLElement; + const childGroup = parentGroup?.querySelector("goa-side-menu-group") as HTMLElement; + + expect(parentGroup).toBeTruthy(); + expect(childGroup).toBeTruthy(); + + expect(isGroupOpen(parentGroup)).toBe(false); + expect(isGroupOpen(childGroup)).toBe(false); + + await updateURL("/child-item"); + + await vi.waitFor(() => { + expect(handler).toHaveBeenCalled(); + expect(isGroupOpen(parentGroup)).toBe(true); + expect(isGroupOpen(childGroup)).toBe(true); + }); + }); + + it("opens parent and closes child group when the parent item is current", async () => { + const handler = vi.fn(); + + const result = render(); + + const menu = result.baseElement.querySelector("goa-side-menu"); + menu?.addEventListener("_open", handler); + + const parentGroup = result.baseElement.querySelector( + "goa-side-menu-group", + ) as HTMLElement; + const childGroup = parentGroup?.querySelector("goa-side-menu-group") as HTMLElement; + + expect(parentGroup).toBeTruthy(); + expect(childGroup).toBeTruthy(); + + expect(isGroupOpen(parentGroup)).toBe(false); + expect(isGroupOpen(childGroup)).toBe(false); + + updateURL("/parent-item"); + + await vi.waitFor(() => { + expect(handler).toHaveBeenCalled(); + expect(isGroupOpen(childGroup)).toBe(false); + expect(isGroupOpen(parentGroup)).toBe(true); + }); + }); +}); diff --git a/libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte b/libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte index c45eb46ea6..ef495212c3 100644 --- a/libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte +++ b/libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte @@ -34,6 +34,7 @@ let _open = false; let _current = false; let _rootEl: HTMLElement; + let _senderEl: HTMLElement; $: _slug = toSlug(heading); @@ -56,7 +57,7 @@ }); setTimeout(() => { - _rootEl.dispatchEvent( + _senderEl.dispatchEvent( new CustomEvent("sidemenugroup:mounted", { detail: { el: _rootEl, @@ -78,7 +79,7 @@ // listen to events by children (if child is open the parent also has to be open) _rootEl.addEventListener("_open", (e: Event) => { - _open = _current = (e as CustomEvent).detail.current; + _open = _current = true; }); } @@ -109,7 +110,7 @@ (matchedChild as Element).classList.add("current"); } _current = _open = !!matchedChild; - notifyParent(_open); + if (_open) dispatchGroupOpen(); } function handleClick(e: Event) { @@ -117,17 +118,17 @@ e.preventDefault(); } - function notifyParent(current: boolean) { - _rootEl.dispatchEvent( + function dispatchGroupOpen() { + _senderEl.dispatchEvent( new CustomEvent("_open", { bubbles: true, - composed: true, - detail: { current }, + composed: true }), ); } +
    Date: Thu, 5 Mar 2026 15:48:20 -0700 Subject: [PATCH 034/103] chore: add lib to help in updating npm libs --- package-lock.json | 16 ++++++++++++++++ package.json | 6 ++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ea1fab8ba8..78542dd8ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -99,6 +99,7 @@ "jsdom": "^26.1.0", "jsonc-eslint-parser": "^2.1.0", "ng-packagr": "21.2.0", + "npm-check-updates": "^19.6.3", "nx": "22.5.3", "playwright": "^1.50.1", "postcss": "^8.4.5", @@ -36558,6 +36559,21 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/npm-check-updates": { + "version": "19.6.3", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-19.6.3.tgz", + "integrity": "sha512-VAt9Bp26eLaymZ0nZyh5n/by+YZIuegXlvWR0yv1zBqd984f8VnEnBbn+1lS3nN5LyEjn62BJ+yYgzNSpb6Gzg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "ncu": "build/cli.js", + "npm-check-updates": "build/cli.js" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=8.12.1" + } + }, "node_modules/npm-install-checks": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz", diff --git a/package.json b/package.json index 77a9ed2588..70738df117 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "build": "nx affected --base=dev -t build --exclude=apps/dev/**/*", "build:prod": "nx run-many -t build --all --prod --exclude=apps/dev/**/*", "build:vscode-doc": "node libs/web-components/custom-element-manifest-analyze.js", + "deps:update": "ncu -u --target minor --cooldown 5", "dev:setup": "bash ./scripts/dev-setup", "dev:watch": "vite build --watch libs/web-components", "docs:build": "npm run --prefix docs build", @@ -34,8 +35,8 @@ "validate": "npm run build && npm run lint && vitest --run" }, "devDependencies": { - "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", "@abgov/design-tokens": "^1.10.0", + "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", "@abgov/nx-release": "^12.0.0", "@angular-devkit/build-angular": "21.1.4", "@angular-devkit/core": "21.1.4", @@ -98,6 +99,7 @@ "jsdom": "^26.1.0", "jsonc-eslint-parser": "^2.1.0", "ng-packagr": "21.2.0", + "npm-check-updates": "^19.6.3", "nx": "22.5.3", "playwright": "^1.50.1", "postcss": "^8.4.5", @@ -130,9 +132,9 @@ "@angular/platform-browser": "21.1.4", "@angular/platform-browser-dynamic": "21.1.4", "@angular/router": "21.1.4", - "@swc/helpers": "0.5.19", "@astrojs/mdx": "^4.3.13", "@astrojs/react": "^4.4.2", + "@swc/helpers": "0.5.19", "astro": "^5.16.6", "date-fns": "^3.0.6", "dompurify": "^3.3.2", From be1da4fd73c2b3b376bb4b68e78be0d8474a8795 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Thu, 5 Mar 2026 15:49:17 -0700 Subject: [PATCH 035/103] chore: nx migrate --- package-lock.json | 567 +++++++++++++++++++++++++--------------------- package.json | 22 +- 2 files changed, 326 insertions(+), 263 deletions(-) diff --git a/package-lock.json b/package-lock.json index 78542dd8ce..74f67ac10e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,16 +51,16 @@ "@babel/core": "^7.14.5", "@babel/preset-react": "^7.14.5", "@faker-js/faker": "^8.3.1", - "@nx/angular": "22.5.3", - "@nx/eslint": "22.5.3", - "@nx/eslint-plugin": "22.5.3", - "@nx/jest": "22.5.3", - "@nx/js": "22.5.3", - "@nx/react": "22.5.3", - "@nx/vite": "22.5.3", - "@nx/vitest": "22.5.3", - "@nx/web": "22.5.3", - "@nx/workspace": "22.5.3", + "@nx/angular": "22.5.4", + "@nx/eslint": "22.5.4", + "@nx/eslint-plugin": "22.5.4", + "@nx/jest": "22.5.4", + "@nx/js": "22.5.4", + "@nx/react": "22.5.4", + "@nx/vite": "22.5.4", + "@nx/vitest": "22.5.4", + "@nx/web": "22.5.4", + "@nx/workspace": "22.5.4", "@schematics/angular": "21.1.4", "@sveltejs/vite-plugin-svelte": "^3.0.1", "@swc-node/register": "1.11.1", @@ -100,7 +100,7 @@ "jsonc-eslint-parser": "^2.1.0", "ng-packagr": "21.2.0", "npm-check-updates": "^19.6.3", - "nx": "22.5.3", + "nx": "22.5.4", "playwright": "^1.50.1", "postcss": "^8.4.5", "postcss-import": "~14.1.0", @@ -9483,15 +9483,15 @@ } }, "node_modules/@module-federation/node": { - "version": "2.7.32", - "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.32.tgz", - "integrity": "sha512-hUj5v2GGwpNzl2gaJS4AyzCYRzJBhN8875A+ucKF9tq3jaQb5zpy3izYMISqqbN2q9a7jz3nEUgwAh3pjri+rQ==", + "version": "2.7.33", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.33.tgz", + "integrity": "sha512-ATR5zu7qUb8wasOyIYrbVfoPb00c7wC9F66g/GeSJwV1O9SvhR5r4rsfCSQ3uB8/Y7VCeHz0w8DZSqMRkuoHYQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/enhanced": "2.0.1", - "@module-federation/runtime": "2.0.1", - "@module-federation/sdk": "2.0.1", + "@module-federation/enhanced": "2.1.0", + "@module-federation/runtime": "2.1.0", + "@module-federation/sdk": "2.1.0", "btoa": "1.2.1", "encoding": "^0.1.13", "node-fetch": "2.7.0" @@ -9506,26 +9506,26 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-2.0.1.tgz", - "integrity": "sha512-D7LMW5EMAJShOMR1aZDAJ6s+MdsYDHaQyJADLQ3LaY0sne/BkVqkPikUwcO1IwOwKbXjYsDlQVOEvk9wZVRFhA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-2.1.0.tgz", + "integrity": "sha512-c/iiwLwxHDG5i227v2GQ84JRPWHU+d2uhxhZhbxIAQ5uRe6kbtj8O4uPUfEq+iabiqqtUwTLbcpUFFy1bLllYA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "2.0.1", + "@module-federation/sdk": "2.1.0", "@types/semver": "7.5.8", "semver": "7.6.3" } }, "node_modules/@module-federation/node/node_modules/@module-federation/cli": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-2.0.1.tgz", - "integrity": "sha512-2SL5Y8iODNX10y9T3CBLhHjSXo4afnA1BK82m4sNfZebuVO+o34bxewqwod9xfWq9xhTZmOSFZ+n+lgTKRv+CQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-2.1.0.tgz", + "integrity": "sha512-VbMJMEfP1vp/693HbQTMYqMu73Qbv23aJEW9/NhmVkRXkfjBtNfP+mROSFjJVQsWhYyU5vy8kBX7DQS/mvZGBg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "2.0.1", - "@module-federation/sdk": "2.0.1", + "@module-federation/dts-plugin": "2.1.0", + "@module-federation/sdk": "2.1.0", "chalk": "3.0.0", "commander": "11.1.0", "jiti": "2.4.2" @@ -9538,14 +9538,14 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/data-prefetch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-2.0.1.tgz", - "integrity": "sha512-Kq0P1OABGt6QAvs6TaE/zY9Ut9Y/oJFrzoSF3eWaCYbUAr2KD2SpTyMsPz4ssBzjeKXTgimugh6tHHd6mpCBIQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-2.1.0.tgz", + "integrity": "sha512-/rHwtZEknzujpCoXChZcy29vD7zNY2b/XfAcOpCkMVfWyQiNhppKxeyjA6FnPEp64NAOLzj2XxaadceXa1eFeA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "2.0.1", - "@module-federation/sdk": "2.0.1", + "@module-federation/runtime": "2.1.0", + "@module-federation/sdk": "2.1.0", "fs-extra": "9.1.0" }, "peerDependencies": { @@ -9562,23 +9562,22 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/dts-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-2.0.1.tgz", - "integrity": "sha512-PLneTsf1fQS5/RTBedtLAAmCPRdMfIlhfJkOa8QH3WDJaQsqm8Wb3r2cTUBf2aNj/bP3aH/y6Hs9JFB/4x0l5g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-2.1.0.tgz", + "integrity": "sha512-2ubWFjF72i3Z5TM2G8hg6SOS6dB0v7PRLXPUMNoVMBxHGxiFG/F0xryZ2UYFwLA2hcNmf60LNP30F1tJhsH4wg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.0.1", - "@module-federation/managers": "2.0.1", - "@module-federation/sdk": "2.0.1", - "@module-federation/third-party-dts-extractor": "2.0.1", + "@module-federation/error-codes": "2.1.0", + "@module-federation/managers": "2.1.0", + "@module-federation/sdk": "2.1.0", + "@module-federation/third-party-dts-extractor": "2.1.0", "adm-zip": "^0.5.10", "ansi-colors": "^4.1.3", "axios": "^1.12.0", "chalk": "3.0.0", "fs-extra": "9.1.0", "isomorphic-ws": "5.0.0", - "koa": "3.0.3", "lodash.clonedeepwith": "4.5.0", "log4js": "6.9.1", "node-schedule": "2.1.1", @@ -9596,23 +9595,23 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/enhanced": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-2.0.1.tgz", - "integrity": "sha512-EZIARQ/8ScoTP6PV8+E4SsmMYWK4ErrikZJ0G/FX8wvK8mCtdoKatFtvDN9++P6Nl78kN9zHYgAV4AHKdBVjfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "2.0.1", - "@module-federation/cli": "2.0.1", - "@module-federation/data-prefetch": "2.0.1", - "@module-federation/dts-plugin": "2.0.1", - "@module-federation/error-codes": "2.0.1", - "@module-federation/inject-external-runtime-core-plugin": "2.0.1", - "@module-federation/managers": "2.0.1", - "@module-federation/manifest": "2.0.1", - "@module-federation/rspack": "2.0.1", - "@module-federation/runtime-tools": "2.0.1", - "@module-federation/sdk": "2.0.1", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-2.1.0.tgz", + "integrity": "sha512-nWCe31vzYLGsT3DYf2cKtxSjUDLWVgErZeDEB8cddtuA3c4npSdKeG8P/bI9GtRph5ybIUFbyAMtuKPPhMahOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "2.1.0", + "@module-federation/cli": "2.1.0", + "@module-federation/data-prefetch": "2.1.0", + "@module-federation/dts-plugin": "2.1.0", + "@module-federation/error-codes": "2.1.0", + "@module-federation/inject-external-runtime-core-plugin": "2.1.0", + "@module-federation/managers": "2.1.0", + "@module-federation/manifest": "2.1.0", + "@module-federation/rspack": "2.1.0", + "@module-federation/runtime-tools": "2.1.0", + "@module-federation/sdk": "2.1.0", "btoa": "^1.2.1", "schema-utils": "^4.3.0", "upath": "2.0.1" @@ -9638,62 +9637,62 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/error-codes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-2.0.1.tgz", - "integrity": "sha512-2bJF/ft+qL9L6Zvq2t/G9/f/0wFL73cM8/NJ04uyYz9BjIgvx28K5qu8/6+IwgEEKATG7vOhBBVj6wH3S+5ASA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-2.1.0.tgz", + "integrity": "sha512-W+uCmPsFuV+15E1S7JUB1AeUDBFqKjJ2hImXdBNYx7T1CGM6awS/veooXqNoP7iM/kwKjtpTQPIeccWLrq76Mg==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/node/node_modules/@module-federation/inject-external-runtime-core-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-2.0.1.tgz", - "integrity": "sha512-oAA7G+4GCHM+WRYfscR/x4GwCyM9CEqfdD9/x2L6y8mtLWK9anRLKTocsI759AvzXsbT1m3EQ5ki1O6wlwDu3g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-2.1.0.tgz", + "integrity": "sha512-okAVRH/9rROh1fBSKF7Li/Ia8bQhgz38AfVvUSzVu32/HCvdjpfddQtPFFxvmi2oayPgUDY4Qy8RXT1pUlBqpA==", "dev": true, "license": "MIT", "peerDependencies": { - "@module-federation/runtime-tools": "2.0.1" + "@module-federation/runtime-tools": "2.1.0" } }, "node_modules/@module-federation/node/node_modules/@module-federation/managers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-2.0.1.tgz", - "integrity": "sha512-KR01lSlcYRQ9C6hW2a8CQQtAE0LvfTLgtV/6ZNUTagw8sRfeDln+ggrZsYilKu9zl0i8RPDgpv/kS60o4lcxCQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-2.1.0.tgz", + "integrity": "sha512-8HX721e3uuDSURtnOpj6Zy/+Qc4IM5no9hMPODYdGjrYe2YUmXY4/5JScSVnFeYm+zBPw6y9QoufeG9g2jrWBg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "2.0.1", + "@module-federation/sdk": "2.1.0", "find-pkg": "2.0.0", "fs-extra": "9.1.0" } }, "node_modules/@module-federation/node/node_modules/@module-federation/manifest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-2.0.1.tgz", - "integrity": "sha512-p8nYGjHWp17MsYdW/Vv0ogBDiTTsI1PHWPQbvVIqLQXDqwiesaRSRR1zziECXQoEL8lV5Bs+uSkcaJGhea9P+A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-2.1.0.tgz", + "integrity": "sha512-icIUhMG4FwaFZyBmVjadkdqscNb98iXrITTVeMeAxJcrnZltSBBSEHepfpfeW+tHW+wMmr+lWFnAbSCepV73+A==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "2.0.1", - "@module-federation/managers": "2.0.1", - "@module-federation/sdk": "2.0.1", + "@module-federation/dts-plugin": "2.1.0", + "@module-federation/managers": "2.1.0", + "@module-federation/sdk": "2.1.0", "chalk": "3.0.0", "find-pkg": "2.0.0" } }, "node_modules/@module-federation/node/node_modules/@module-federation/rspack": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-2.0.1.tgz", - "integrity": "sha512-SAlNE8iclFmzrKtx3/C2GivXYx6nPzx4MgQV01QG/a4LpnLbwlxzdZu3rqQ2swp4NNWT/t/GT7Y+7gfhyVa7mg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-2.1.0.tgz", + "integrity": "sha512-bojG6yIoWsta7CDdKZ3nrTn1IKT98algUGG5/uyR6nhyOxsu7CJpf17kcLUqTKdBwN9S8qZOjycXGDeEX//N3w==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "2.0.1", - "@module-federation/dts-plugin": "2.0.1", - "@module-federation/inject-external-runtime-core-plugin": "2.0.1", - "@module-federation/managers": "2.0.1", - "@module-federation/manifest": "2.0.1", - "@module-federation/runtime-tools": "2.0.1", - "@module-federation/sdk": "2.0.1", + "@module-federation/bridge-react-webpack-plugin": "2.1.0", + "@module-federation/dts-plugin": "2.1.0", + "@module-federation/inject-external-runtime-core-plugin": "2.1.0", + "@module-federation/managers": "2.1.0", + "@module-federation/manifest": "2.1.0", + "@module-federation/runtime-tools": "2.1.0", + "@module-federation/sdk": "2.1.0", "btoa": "1.2.1" }, "peerDependencies": { @@ -9711,50 +9710,50 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/runtime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.0.1.tgz", - "integrity": "sha512-UQ72P5Oo40dS6vdhHetwTtIsbGciEr+bjoYvDgh1WLPfFlTYd8zo9cLfqaf3juuPfV3cMVARAVPmh16lQYpUGA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.1.0.tgz", + "integrity": "sha512-Cs6H6vAQrLeD7tWW3nI7Z9EdvhcFcbqQdYWJ2SaN1X/eX2YvgHJe8sRxa7K7zlVRV5QZEPKgQCbrUfef+d5xqQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.0.1", - "@module-federation/runtime-core": "2.0.1", - "@module-federation/sdk": "2.0.1" + "@module-federation/error-codes": "2.1.0", + "@module-federation/runtime-core": "2.1.0", + "@module-federation/sdk": "2.1.0" } }, "node_modules/@module-federation/node/node_modules/@module-federation/runtime-core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-2.0.1.tgz", - "integrity": "sha512-gOuCPSHoQGUGwlxfSTMInFX+QvLxdEWegGGMiLdU5vqbXuva4E9M+kXBBO7/0MkcBPMmVs0wOJGm0XOLeV2f1Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-2.1.0.tgz", + "integrity": "sha512-9W+wV5s7PTMnSFCmyNvItnOf3VRYSxAPMZQ91bOT4GdwHTO23dfmC57o0SiqXw+ri/XOQVA8gd/p8TDwDDYx6A==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.0.1", - "@module-federation/sdk": "2.0.1" + "@module-federation/error-codes": "2.1.0", + "@module-federation/sdk": "2.1.0" } }, "node_modules/@module-federation/node/node_modules/@module-federation/runtime-tools": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-2.0.1.tgz", - "integrity": "sha512-AStdwBtsGB3jIfDg9oP+KyVPsimdaeHsP855gqCxDp1hi2+GKjlZWZx9ThkS8NytVSXSUysxqoUL1ivDoKgcCQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-2.1.0.tgz", + "integrity": "sha512-2pOyGOiWIGG0+fE0jBY6pRYVH4+G/gFiP9KnyVDp6zj3leFRdePtlIZDa4O0X1dQcMOMmOORrx+TLRZeygbCnw==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "2.0.1", - "@module-federation/webpack-bundler-runtime": "2.0.1" + "@module-federation/runtime": "2.1.0", + "@module-federation/webpack-bundler-runtime": "2.1.0" } }, "node_modules/@module-federation/node/node_modules/@module-federation/sdk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.0.1.tgz", - "integrity": "sha512-32PwudojGjog51cwpTali7D6ud82oVgsyvOx9JjAzhvXBX96YI4mRsursuWcthDxmigJP9ZvUTXDuRUEDh1OQA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.1.0.tgz", + "integrity": "sha512-HhiSo1X+t2+r5lxU+JBVsJdE2IJZOaD1e0linw+4bLlEy8uIgXhGttF9+9rAnRKWlhn6R8E23ionwBCuSLVeXQ==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/node/node_modules/@module-federation/third-party-dts-extractor": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.0.1.tgz", - "integrity": "sha512-neKSr6FNUeGRh+YR57l/QZUzPytJXuJx+babF7j5iGJG3FP+kfizr6QD0hgVis5KEoXMVbQ8yyvG0slERizeyw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.1.0.tgz", + "integrity": "sha512-w/hn0J+gw+lEfsXTR3DsbtcxpAndMZJ2PHnQTFn2s5BujNL18FcStaoz0tDpcJAVxi2iQZATJ3bGrlO2t2aDjQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9764,14 +9763,14 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/webpack-bundler-runtime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-2.0.1.tgz", - "integrity": "sha512-u1NId3SF4lHDTmD2CHFEszulmXmIq1TGw9JYvnLx5rKJL7xt3aNxcb1GvkaYbRNVBXhSMjJ75E5LsQlZzyBx9A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-2.1.0.tgz", + "integrity": "sha512-yThI7cPanvH5eobaeFUsQ51sjllA3nyN/8OxfSdlbeTogLF4K8tkCr6H7QW+alE9lXxOzI2BTCxMV6NJBKWmTQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "2.0.1", - "@module-federation/sdk": "2.0.1" + "@module-federation/runtime": "2.1.0", + "@module-federation/sdk": "2.1.0" } }, "node_modules/@module-federation/node/node_modules/chalk": { @@ -10628,20 +10627,20 @@ } }, "node_modules/@nx/angular": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-22.5.3.tgz", - "integrity": "sha512-Z5vNcPl95CsTnRhDszWZ0ort22dEtMxdqJFkVzdNwolhfiLm1eKP2Rc8q9MnUdrZMeTqDKnCckG2qs12FZrIkw==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-22.5.4.tgz", + "integrity": "sha512-JHDB6syIJLei0AqbJb/W31yLABBwGN99wrVuoFSk5CpgPy5AVzmlNYCIWnUycuCJyWB4NeMcJ9hiS2ycrbizNQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/eslint": "22.5.3", - "@nx/js": "22.5.3", - "@nx/module-federation": "22.5.3", - "@nx/rspack": "22.5.3", - "@nx/web": "22.5.3", - "@nx/webpack": "22.5.3", - "@nx/workspace": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/eslint": "22.5.4", + "@nx/js": "22.5.4", + "@nx/module-federation": "22.5.4", + "@nx/rspack": "22.5.4", + "@nx/web": "22.5.4", + "@nx/webpack": "22.5.4", + "@nx/workspace": "22.5.4", "@phenomnomnominal/tsquery": "~6.1.4", "@typescript-eslint/type-utils": "^8.0.0", "enquirer": "~2.3.6", @@ -10702,16 +10701,16 @@ } }, "node_modules/@nx/devkit": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.5.3.tgz", - "integrity": "sha512-zhRNTFsi4pbwg7L/zhBHtTOSevlgwm1iKlhPlQWoOv2PR6b+3JvjL8o4P1MbkIkut3Lsn+oTuJJ1LUPlr5vprg==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.5.4.tgz", + "integrity": "sha512-+QCmpQZQmEGvi8IurC6bOgUTk+Q0dQo7wkp6V04lskXBztSyasBS0BGy5ic90kY05UlQUd++zRA1VY0jc+Yz5Q==", "dev": true, "license": "MIT", "dependencies": { "@zkochan/js-yaml": "0.0.7", "ejs": "^3.1.7", "enquirer": "~2.3.6", - "minimatch": "10.2.1", + "minimatch": "10.2.4", "semver": "^7.6.3", "tslib": "^2.3.0", "yargs-parser": "21.1.1" @@ -10720,15 +10719,31 @@ "nx": ">= 21 <= 23 || ^22.0.0-0" } }, + "node_modules/@nx/devkit/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nx/eslint": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-22.5.3.tgz", - "integrity": "sha512-XJKpwnSJRCat+81sUDdJWWvKz3vKo/3X9oHMGDzTYx3mexCgKgpmHBuRVgnZ9n2IVDx8S5ye4ICc9qiY6oHWIA==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-22.5.4.tgz", + "integrity": "sha512-LMFpyep6N5Se7v5Ck2icZPBa3krWcuGYpubzjEuG35dQm2f/Fr+vLNfQWvfHiF+gP3eSYuJJPI/E38ifTZ/J5A==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/js": "22.5.4", "semver": "^7.6.3", "tslib": "^2.3.0", "typescript": "~5.9.2" @@ -10744,14 +10759,14 @@ } }, "node_modules/@nx/eslint-plugin": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-22.5.3.tgz", - "integrity": "sha512-dFz3nSUOV+VLc+ZQxWncKINhych6h5oEfInWp1+5WkeUBW5/x77IsM3Hpq1JrjAK6dqXjmzTsFnoU8c5Cf1Q4w==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-22.5.4.tgz", + "integrity": "sha512-nbbSnqxR9JQbqsJJUsJcpGtbqLulYOJG1CQdQ0xP3wntK6qu6XDzosopIMHO8MXNQlDp14hAPavE5hKMQwuawA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/js": "22.5.4", "@phenomnomnominal/tsquery": "~6.1.4", "@typescript-eslint/type-utils": "^8.0.0", "@typescript-eslint/utils": "^8.0.0", @@ -10917,22 +10932,22 @@ } }, "node_modules/@nx/jest": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-22.5.3.tgz", - "integrity": "sha512-4yaGlApTR09zdz4fC4Ep0aENcaon5rDRDOUnEJblU67ik35jds9mczHq2rBMJO4Cnjj1pM9acm08Vb0Wg+9cuQ==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-22.5.4.tgz", + "integrity": "sha512-jUPj6e++F49x/P8O+vrsLs34AnUjNMK1H8wQ5vKl3XhsCNV1j0ADoCfsIdLHPXnJ7PUd3QOVwn2I9KNT7mAzBA==", "dev": true, "license": "MIT", "dependencies": { "@jest/reporters": "^30.0.2", "@jest/test-result": "^30.0.2", - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/js": "22.5.4", "@phenomnomnominal/tsquery": "~6.1.4", "identity-obj-proxy": "3.0.0", "jest-config": "^30.0.2", "jest-resolve": "^30.0.2", "jest-util": "^30.0.2", - "minimatch": "10.2.1", + "minimatch": "10.2.4", "picocolors": "^1.1.0", "resolve.exports": "2.0.3", "semver": "^7.6.3", @@ -10940,10 +10955,26 @@ "yargs-parser": "21.1.1" } }, + "node_modules/@nx/jest/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nx/js": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-22.5.3.tgz", - "integrity": "sha512-gglQYL6GeSH0mt6NpEFTXMFFFePU3B7TEyZq7LLUYZDH5y65izgNpdSAuEqYR7xHLtahVnesDlhPw3rtRiwMwA==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-22.5.4.tgz", + "integrity": "sha512-RPGDQjPm68ml5vKOk2RhRgNUM51qyMfIkRsKSxTWy0EpMOa7ud0I2bPQyNDMkqP04w8I5GZPD8O8opesDrdmtg==", "dev": true, "license": "MIT", "dependencies": { @@ -10954,8 +10985,8 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nx/devkit": "22.5.3", - "@nx/workspace": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/workspace": "22.5.4", "@zkochan/js-yaml": "0.0.7", "babel-plugin-const-enum": "^1.0.1", "babel-plugin-macros": "^3.1.0", @@ -11025,18 +11056,18 @@ } }, "node_modules/@nx/module-federation": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-22.5.3.tgz", - "integrity": "sha512-dKRkT/ULV+nXr7O25YMDwQu/4nxl27AcHJfOmVBVKquXrtrBu/d6dbypfFDMyr5pXqR5gb2euEw0mGVMyHLTiA==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-22.5.4.tgz", + "integrity": "sha512-rjYSxbKMrrRHQOh+25GlNI91cads+PyHe1LVNn3/S1NTZH20PObtt+KRuppj6L2Mjg3/gK0WfQoMrvFNRiV48A==", "dev": true, "license": "MIT", "dependencies": { "@module-federation/enhanced": "^0.21.2", "@module-federation/node": "^2.7.21", "@module-federation/sdk": "^0.21.2", - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@nx/web": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/js": "22.5.4", + "@nx/web": "22.5.4", "@rspack/core": "1.6.8", "express": "^4.21.2", "http-proxy-middleware": "^3.0.5", @@ -11355,9 +11386,9 @@ } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.3.tgz", - "integrity": "sha512-cKXBq5bJanXp8uv6+wPvx/G4q4oFpOxMSPGaeFOVhbul2QHGGq+XMcSo+D8aYJCsk1YnbyAnnQ8r8RH/kTK5Mw==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.4.tgz", + "integrity": "sha512-Ib9znwSLQZSZ/9hhg5ODplpNhE/RhGVXzdfRj6YonTuWSj/kH3dLMio+4JEkjRdTQVm06cDW0KdwSgnwovqMGg==", "cpu": [ "arm64" ], @@ -11369,9 +11400,9 @@ ] }, "node_modules/@nx/nx-darwin-x64": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.5.3.tgz", - "integrity": "sha512-mToS41o8I+8CfxYVRMTISkgT7I1cnazgwMf7U9DoLqKOwOZzj9WD3NmsWc1h69QNJPltbeRPS8y/wnhu7RHzRA==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.5.4.tgz", + "integrity": "sha512-DjyXuQMc93MPU2XdRsJYjzbv1tgCzMi+zm7O0gc4x3h+ECFjKkjzQBg67pqGdhE3TV27MAlVRKrgHStyK9iigg==", "cpu": [ "x64" ], @@ -11383,9 +11414,9 @@ ] }, "node_modules/@nx/nx-freebsd-x64": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.5.3.tgz", - "integrity": "sha512-CAWysdFSZVbTfdjNXojd9TgXbZiK9i0k3njROeV+jORsDWw4Eth3PDmK94Wk916b3n2hS0UjyI6RZaMy2GEqzA==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.5.4.tgz", + "integrity": "sha512-DhxdP8AhIfN0yCtFhZQcbp32MVN3L7UiTotYqqnOgwW922NRGSd5e+KEAWiJVrIO6TdgnI7prxpg1hfQQK0WDw==", "cpu": [ "x64" ], @@ -11397,9 +11428,9 @@ ] }, "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.5.3.tgz", - "integrity": "sha512-PRjPrijQQbdrvYwNuA3xQ3VXEQ4zfhnPjy+S2ZlQZqhFI4mlP22xfhOH1bQ7pIfzCNC2f/J9UMNYOrq/bEFjBg==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.5.4.tgz", + "integrity": "sha512-pv1x1afTaLAOxPxVhQneLeXgjclp11f9ORxR7jA4E86bSgc9OL92dLSCkXtLQzqPNOej6SZ2fO+PPHVMZwtaPQ==", "cpu": [ "arm" ], @@ -11411,9 +11442,9 @@ ] }, "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.5.3.tgz", - "integrity": "sha512-dmDBio/5z4Zch2VlRMdgBPm53d8xwq1l7xLj1dFMKjfE7ByfPukjPM7ZEYBiPckfiQfJBRh6HKDN7uEkA/y8CQ==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.5.4.tgz", + "integrity": "sha512-mPji9PzleWPvXpmFDKaXpTymRgZkk/hW8JHGhvEZpKHHXMYgTGWC+BqOEM2A4dYC4bu4fi9RrteL7aouRRWJoQ==", "cpu": [ "arm64" ], @@ -11425,9 +11456,9 @@ ] }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.5.3.tgz", - "integrity": "sha512-E81ET/MnnKfuLhKiovF5ueJirHOMjhC1eK0MDM2Do9wdPyusZzfGSVFQ9DOHtg7L37dAE95NNd1lCVO8gJ96vg==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.5.4.tgz", + "integrity": "sha512-hF/HvEhbCjcFpTgY7RbP1tUTbp0M1adZq4ckyW8mwhDWQ/MDsc8FnOHwCO3Bzy9ZeJM0zQUES6/m0Onz8geaEA==", "cpu": [ "arm64" ], @@ -11439,9 +11470,9 @@ ] }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.5.3.tgz", - "integrity": "sha512-AgXCsPCzC0sAu2VRclMjs7LrvPQfqS3sFiehlXWTbNHQitPZLuAmQGb2l4T8lbMOs0Xn3EIrg6BF6/ntTTp6Xg==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.5.4.tgz", + "integrity": "sha512-1+vicSYEOtc7CNMoRCjo59no4gFe8w2nGIT127wk1yeW3EJzRVNlOA7Deu10NUUbzLeOvHc8EFOaU7clT+F7XQ==", "cpu": [ "x64" ], @@ -11453,9 +11484,9 @@ ] }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.5.3.tgz", - "integrity": "sha512-sKs4bFQRu8Btxf5rMYKPsRVNxkQ2ey8sqoCyhJj8fwJF05DayK2ErJAR/rhtBK0c1NV7kQiKJA8nWBV3jnCdsg==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.5.4.tgz", + "integrity": "sha512-/KjndxVB14yU0SJOhqADHOWoTy4Y45h5RjW3cxcXlPSJZz7ar1FnlLne1rWMMMUttepc8ku+3T//SGKi2eu+Nw==", "cpu": [ "x64" ], @@ -11467,9 +11498,9 @@ ] }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.5.3.tgz", - "integrity": "sha512-KOCQLakSO5vl4D6et9qPytOAmkgq2IIuhI8A/g0xbD1LqrIlRPa+bdkZqOGpODYAk3NyKAk7hWHsqfXKHwwX6w==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.5.4.tgz", + "integrity": "sha512-CrYt9FwhjOI6ZNy/G6YHLJmZuXCFJ24BCxugPXiZ7knDx7eGrr7owGgfht4SSiK3KCX40CvWCBJfqR4ZSgaSUA==", "cpu": [ "arm64" ], @@ -11481,9 +11512,9 @@ ] }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.3.tgz", - "integrity": "sha512-a6ZB2La82RIHcz4nrt3H6RZaOa+xkC2IPzhU9hMo2gbkLdIxn8wyof8uGA0frncmIVHuLc3nFAhpBOgf4j6tMA==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.4.tgz", + "integrity": "sha512-g5YByv4XsYwsYZvFe24A9bvfhZA+mwtIQt6qZtEVduZTT1hfhIsq0LXGHhkGoFLYwRMXSracWOqkalY0KT4IQw==", "cpu": [ "x64" ], @@ -11495,29 +11526,29 @@ ] }, "node_modules/@nx/react": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/react/-/react-22.5.3.tgz", - "integrity": "sha512-Wc/9LZxxmrWFgKARw8nIC0yGFOMHvb/p5WDXbwYcaUUbYyyC9uSg7AcyRZt/UZ3WqhxhKm0SJCgpTlhFh+Dkxg==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/react/-/react-22.5.4.tgz", + "integrity": "sha512-QWQF4rZMtSABWTRdksjK4YQaCKZW+PRfYOskebwb8OtaoRFeEZwPeN0RvQFRGInhZJfDQRJhKMKy5YHdVvuTaw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/eslint": "22.5.3", - "@nx/js": "22.5.3", - "@nx/module-federation": "22.5.3", - "@nx/rollup": "22.5.3", - "@nx/web": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/eslint": "22.5.4", + "@nx/js": "22.5.4", + "@nx/module-federation": "22.5.4", + "@nx/rollup": "22.5.4", + "@nx/web": "22.5.4", "@phenomnomnominal/tsquery": "~6.1.4", "@svgr/webpack": "^8.0.1", "express": "^4.21.2", "http-proxy-middleware": "^3.0.5", - "minimatch": "10.2.1", + "minimatch": "10.2.4", "picocolors": "^1.1.0", "semver": "^7.6.3", "tslib": "^2.3.0" }, "optionalDependencies": { - "@nx/vite": "22.5.3" + "@nx/vite": "22.5.4" } }, "node_modules/@nx/react/node_modules/accepts": { @@ -11725,6 +11756,22 @@ "node": ">= 0.6" } }, + "node_modules/@nx/react/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nx/react/node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -11830,14 +11877,14 @@ } }, "node_modules/@nx/rollup": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/rollup/-/rollup-22.5.3.tgz", - "integrity": "sha512-Um9xCcUeSb35OX+UH1CZk4DbQPXItRbn8ehJPmgOo9s+TtPTbdVWhUVb9chiqvmluSw0ELA3zjZf6XINiP95BQ==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/rollup/-/rollup-22.5.4.tgz", + "integrity": "sha512-SM4oe2qChid6gy5YynaXavHI0J5Ugfr/Su2TLFxaXNTCB6Wb0wONGhbhGFl90rma1xhAp4SMGQYxtQaReWMi9A==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/js": "22.5.4", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-image": "^3.0.3", @@ -11869,16 +11916,16 @@ } }, "node_modules/@nx/rspack": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-22.5.3.tgz", - "integrity": "sha512-2T5dkoC08FJGF8ZMiJDaKN6giXAljV0+LK7q5GJpSEUm+wtjZ/DRVoWSnlf8Dj/e0/cLb2GMElVcfjyDDDeV9w==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-22.5.4.tgz", + "integrity": "sha512-qk2d10JOFEBsK1lY4goQ+RhsOMan8Z6PV07VuLKq1wVLzHMlgH1XSmWRBpk2P0P8I7Vy1e8M+tRRsbna5Xf+AQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@nx/module-federation": "22.5.3", - "@nx/web": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/js": "22.5.4", + "@nx/module-federation": "22.5.4", + "@nx/web": "22.5.4", "@phenomnomnominal/tsquery": "~6.1.4", "@rspack/core": "1.6.8", "@rspack/dev-server": "^1.1.4", @@ -12291,15 +12338,15 @@ } }, "node_modules/@nx/vite": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/vite/-/vite-22.5.3.tgz", - "integrity": "sha512-XvaCVIqNnWHF46in+q/hfiDr6YmPvO0416aMwzID4MTom/LdBiKS7Vh4oVShzXqzOZVTvawO+dKAA5zaqvBAaw==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/vite/-/vite-22.5.4.tgz", + "integrity": "sha512-9HPaDp4SHzGFg1ABQQIsPjVFKPqLYrbIC8CLrsb4cLkK3BGMB+GSn4rTtP82rMmley0I2nHFkIzdXmbJvKcsPg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", - "@nx/vitest": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/js": "22.5.4", + "@nx/vitest": "22.5.4", "@phenomnomnominal/tsquery": "~6.1.4", "ajv": "^8.0.0", "enquirer": "~2.3.6", @@ -12327,14 +12374,14 @@ } }, "node_modules/@nx/vitest": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/vitest/-/vitest-22.5.3.tgz", - "integrity": "sha512-ZsDbiDqdGSPld/3thGqkzhY/seV08374mWZxZu1NoIT0RQnRF70GjlYXh+97Gzkm7L3s1269JKfzyVFRPjTzjQ==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/vitest/-/vitest-22.5.4.tgz", + "integrity": "sha512-ppXeq3akwrwv0ftqeFK3VX2s9E70px5H335e81wnFtUmD/LZLB7CyGVM9cDJMTgXdQFcYq90C8fbsPgDSnoc/w==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/js": "22.5.4", "@phenomnomnominal/tsquery": "~6.1.4", "semver": "^7.6.3", "tslib": "^2.3.0" @@ -12353,14 +12400,14 @@ } }, "node_modules/@nx/web": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-22.5.3.tgz", - "integrity": "sha512-Z7FYN5e9HIJAuJV0MU8jHaoEv9vgiLbpe1bbWPItfzIy02kWtSiS/aGZcLa34LDuWBfBaJVHZqFVp7OOPU26ew==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-22.5.4.tgz", + "integrity": "sha512-GH4+TLdFiw4RSUgPwn0KWcu6yHfMu23umidrgVgq9Dmj0fn3i/yfxvfdhMQ6aDiZr831b4tIbTQ7JLNd92ilIQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/js": "22.5.4", "detect-port": "^1.5.1", "http-server": "^14.1.0", "picocolors": "^1.1.0", @@ -12368,15 +12415,15 @@ } }, "node_modules/@nx/webpack": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-22.5.3.tgz", - "integrity": "sha512-fEWvmynjxAfdyCH00Z3oaEedv/wKZAdHl8kz7UEiOJ7eKdGbbJIK0RuobXC1r2e2ERZ35vDrOiPYdruyfi35Jg==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-22.5.4.tgz", + "integrity": "sha512-2yfnad1Rwh+VT6L5iCMfTMwtPETxedcjPLMoNpyDmZg7dJj5+Xx51ZibygBefLwCBpZV0xnOZPBxR7xGpQqpSA==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", - "@nx/devkit": "22.5.3", - "@nx/js": "22.5.3", + "@nx/devkit": "22.5.4", + "@nx/js": "22.5.4", "@phenomnomnominal/tsquery": "~6.1.4", "ajv": "^8.12.0", "autoprefixer": "^10.4.9", @@ -12750,17 +12797,17 @@ } }, "node_modules/@nx/workspace": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-22.5.3.tgz", - "integrity": "sha512-pioGwlt5zKB9PhX36I5KAeSml19Mq+g2KyQ9mh3F+3Lvft2JM4nIMELBaUfwPicPAOwNmrsx806IXO67Q4UHxQ==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-22.5.4.tgz", + "integrity": "sha512-TZeuCDy+VN/5zqMYxHw15HKe2Ppcb9WBOebz4bmXE206c8Aop3S9QeLfys00Uobt9ZaYh9QUeN0iFsZm7TNv0w==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.5.3", + "@nx/devkit": "22.5.4", "@zkochan/js-yaml": "0.0.7", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "22.5.3", + "nx": "22.5.4", "picomatch": "4.0.2", "semver": "^7.6.3", "tslib": "^2.3.0", @@ -38531,9 +38578,9 @@ "license": "MIT" }, "node_modules/nx": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/nx/-/nx-22.5.3.tgz", - "integrity": "sha512-IaEPqdgaFBIr0Bfmnt6WAcX3t660sOuDXQ71lpoS8GgpD8cqX1LIW2ZyzEAdOvCP1iD6HCZehpofcVvaaL1GNQ==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/nx/-/nx-22.5.4.tgz", + "integrity": "sha512-L8wL7uCjnmpyvq4r2mN9s+oriUE4lY+mX9VgOpjj0ucRd5nzaEaBQppVs0zQGkbKC0BnHS8PGtnAglspd5Gh1Q==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -38557,7 +38604,7 @@ "jest-diff": "^30.0.2", "jsonc-parser": "3.2.0", "lines-and-columns": "2.0.3", - "minimatch": "10.2.1", + "minimatch": "10.2.4", "node-machine-id": "1.1.12", "npm-run-path": "^4.0.1", "open": "^8.4.0", @@ -38580,16 +38627,16 @@ "nx-cloud": "bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "22.5.3", - "@nx/nx-darwin-x64": "22.5.3", - "@nx/nx-freebsd-x64": "22.5.3", - "@nx/nx-linux-arm-gnueabihf": "22.5.3", - "@nx/nx-linux-arm64-gnu": "22.5.3", - "@nx/nx-linux-arm64-musl": "22.5.3", - "@nx/nx-linux-x64-gnu": "22.5.3", - "@nx/nx-linux-x64-musl": "22.5.3", - "@nx/nx-win32-arm64-msvc": "22.5.3", - "@nx/nx-win32-x64-msvc": "22.5.3" + "@nx/nx-darwin-arm64": "22.5.4", + "@nx/nx-darwin-x64": "22.5.4", + "@nx/nx-freebsd-x64": "22.5.4", + "@nx/nx-linux-arm-gnueabihf": "22.5.4", + "@nx/nx-linux-arm64-gnu": "22.5.4", + "@nx/nx-linux-arm64-musl": "22.5.4", + "@nx/nx-linux-x64-gnu": "22.5.4", + "@nx/nx-linux-x64-musl": "22.5.4", + "@nx/nx-win32-arm64-msvc": "22.5.4", + "@nx/nx-win32-x64-msvc": "22.5.4" }, "peerDependencies": { "@swc-node/register": "^1.11.1", @@ -38781,6 +38828,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/nx/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/nx/node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -49252,9 +49315,9 @@ } }, "node_modules/webpack": { - "version": "5.105.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", - "integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==", + "version": "5.105.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", + "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", "dev": true, "license": "MIT", "dependencies": { @@ -49264,11 +49327,11 @@ "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.15.0", + "acorn": "^8.16.0", "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.19.0", + "enhanced-resolve": "^5.20.0", "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -49280,9 +49343,9 @@ "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.16", + "terser-webpack-plugin": "^5.3.17", "watchpack": "^2.5.1", - "webpack-sources": "^3.3.3" + "webpack-sources": "^3.3.4" }, "bin": { "webpack": "bin/webpack.js" diff --git a/package.json b/package.json index 70738df117..dcf12c8b30 100644 --- a/package.json +++ b/package.json @@ -51,16 +51,16 @@ "@babel/core": "^7.14.5", "@babel/preset-react": "^7.14.5", "@faker-js/faker": "^8.3.1", - "@nx/angular": "22.5.3", - "@nx/eslint": "22.5.3", - "@nx/eslint-plugin": "22.5.3", - "@nx/jest": "22.5.3", - "@nx/js": "22.5.3", - "@nx/react": "22.5.3", - "@nx/vite": "22.5.3", - "@nx/vitest": "22.5.3", - "@nx/web": "22.5.3", - "@nx/workspace": "22.5.3", + "@nx/angular": "22.5.4", + "@nx/eslint": "22.5.4", + "@nx/eslint-plugin": "22.5.4", + "@nx/jest": "22.5.4", + "@nx/js": "22.5.4", + "@nx/react": "22.5.4", + "@nx/vite": "22.5.4", + "@nx/vitest": "22.5.4", + "@nx/web": "22.5.4", + "@nx/workspace": "22.5.4", "@schematics/angular": "21.1.4", "@sveltejs/vite-plugin-svelte": "^3.0.1", "@swc-node/register": "1.11.1", @@ -100,7 +100,7 @@ "jsonc-eslint-parser": "^2.1.0", "ng-packagr": "21.2.0", "npm-check-updates": "^19.6.3", - "nx": "22.5.3", + "nx": "22.5.4", "playwright": "^1.50.1", "postcss": "^8.4.5", "postcss-import": "~14.1.0", From 710559bba06f3f5a383b2f36db02136c37b5ab11 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Thu, 5 Mar 2026 15:52:31 -0700 Subject: [PATCH 036/103] chore: update all libs to most recent minor versions --- package-lock.json | 2642 ++++++++++++++------------------------------- package.json | 130 +-- 2 files changed, 878 insertions(+), 1894 deletions(-) diff --git a/package-lock.json b/package-lock.json index 74f67ac10e..a107c7eccf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,48 +9,48 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "@angular/animations": "21.1.4", - "@angular/common": "21.1.4", - "@angular/compiler": "21.1.4", - "@angular/core": "21.1.4", - "@angular/forms": "21.1.4", - "@angular/platform-browser": "21.1.4", - "@angular/platform-browser-dynamic": "21.1.4", - "@angular/router": "21.1.4", + "@angular/animations": "21.2.0", + "@angular/common": "21.2.0", + "@angular/compiler": "21.2.0", + "@angular/core": "21.2.0", + "@angular/forms": "21.2.0", + "@angular/platform-browser": "21.2.0", + "@angular/platform-browser-dynamic": "21.2.0", + "@angular/router": "21.2.0", "@astrojs/mdx": "^4.3.13", "@astrojs/react": "^4.4.2", "@swc/helpers": "0.5.19", - "astro": "^5.16.6", - "date-fns": "^3.0.6", + "astro": "^5.18.0", + "date-fns": "^3.6.0", "dompurify": "^3.3.2", "flexsearch": "^0.8.212", "highlight.js": "^11.11.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.4", + "react-dom": "^19.2.4", "react-router-dom": "6.30.3", - "rxjs": "~7.8.0", - "style-dictionary": "^5.1.1", + "rxjs": "~7.8.2", + "style-dictionary": "^5.3.2", "svelte-routing": "^2.13.0", - "tslib": "^2.3.0", - "zone.js": "0.15.1" + "tslib": "^2.8.1", + "zone.js": "0.16.1" }, "devDependencies": { "@abgov/design-tokens": "^1.10.0", - "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", + "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.1.1", "@abgov/nx-release": "^12.0.0", - "@angular-devkit/build-angular": "21.1.4", - "@angular-devkit/core": "21.1.4", - "@angular-devkit/schematics": "21.1.4", - "@angular-eslint/eslint-plugin": "18.0.1", - "@angular-eslint/eslint-plugin-template": "18.0.1", - "@angular-eslint/template-parser": "18.0.1", - "@angular/cli": "21.1.4", - "@angular/compiler-cli": "21.1.4", - "@angular/language-service": "21.1.4", + "@angular-devkit/build-angular": "21.2.0", + "@angular-devkit/core": "21.2.0", + "@angular-devkit/schematics": "21.2.0", + "@angular-eslint/eslint-plugin": "18.4.3", + "@angular-eslint/eslint-plugin-template": "18.4.3", + "@angular-eslint/template-parser": "18.4.3", + "@angular/cli": "21.2.0", + "@angular/compiler-cli": "21.2.0", + "@angular/language-service": "21.2.0", "@astrojs/check": "^0.9.6", - "@babel/core": "^7.14.5", - "@babel/preset-react": "^7.14.5", - "@faker-js/faker": "^8.3.1", + "@babel/core": "^7.29.0", + "@babel/preset-react": "^7.28.5", + "@faker-js/faker": "^8.4.1", "@nx/angular": "22.5.4", "@nx/eslint": "22.5.4", "@nx/eslint-plugin": "22.5.4", @@ -61,66 +61,66 @@ "@nx/vitest": "22.5.4", "@nx/web": "22.5.4", "@nx/workspace": "22.5.4", - "@schematics/angular": "21.1.4", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@schematics/angular": "21.2.0", + "@sveltejs/vite-plugin-svelte": "^3.1.2", "@swc-node/register": "1.11.1", - "@swc/cli": "0.7.10", - "@swc/core": "1.15.8", - "@testing-library/dom": "^10.1.0", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.1.0", - "@testing-library/svelte": "^4.0.5", - "@testing-library/user-event": "^14.5.2", + "@swc/cli": "0.8.0", + "@swc/core": "1.15.17", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@testing-library/svelte": "^4.2.3", + "@testing-library/user-event": "^14.6.1", "@types/jest": "29.5.14", - "@types/node": "^20.0.0", - "@types/react": "^19.2.7", + "@types/node": "^20.19.35", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", "@typescript-eslint/utils": "^7.18.0", - "@vitejs/plugin-react": "^4.2.1", - "@vitejs/plugin-react-swc": "^3.5.0", - "@vitest/browser": "^4.0.13", - "@vitest/browser-playwright": "^4.0.13", - "@vitest/coverage-v8": "^4.0.13", - "@vitest/ui": "^4.0.13", - "autoprefixer": "^10.4.16", + "@vitejs/plugin-react": "^4.7.0", + "@vitejs/plugin-react-swc": "^3.11.0", + "@vitest/browser": "^4.0.18", + "@vitest/browser-playwright": "^4.0.18", + "@vitest/coverage-v8": "^4.0.18", + "@vitest/ui": "^4.0.18", + "autoprefixer": "^10.4.27", "eslint": "8.57.1", - "eslint-config-prettier": "10.1.5", - "eslint-plugin-import": "2.31.0", - "eslint-plugin-jsx-a11y": "6.10.1", - "eslint-plugin-react": "7.32.2", - "eslint-plugin-react-hooks": "5.0.0", + "eslint-config-prettier": "10.1.8", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-jsx-a11y": "6.10.2", + "eslint-plugin-react": "7.37.5", + "eslint-plugin-react-hooks": "5.2.0", "glob": "^12.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^30.2.0", "jest-preset-angular": "^16.1.1", - "jiti": "2.4.2", + "jiti": "2.6.1", "jsdom": "^26.1.0", - "jsonc-eslint-parser": "^2.1.0", + "jsonc-eslint-parser": "^2.4.2", "ng-packagr": "21.2.0", "npm-check-updates": "^19.6.3", "nx": "22.5.4", - "playwright": "^1.50.1", - "postcss": "^8.4.5", + "playwright": "^1.58.2", + "postcss": "^8.5.6", "postcss-import": "~14.1.0", - "postcss-preset-env": "~7.5.0", + "postcss-preset-env": "~7.8.3", "postcss-replace": "^2.0.1", "postcss-url": "~10.1.3", - "prettier": "^3.2.0", - "prettier-plugin-svelte": "^3.1.2", + "prettier": "^3.8.1", + "prettier-plugin-svelte": "^3.5.0", "rollup": "^4.59.0", "semantic-release": "^25.0.3", "svelte": "^4.2.20", - "svelte-check": "^3.6.2", - "swc-loader": "0.1.15", + "svelte-check": "^3.8.6", + "swc-loader": "0.2.7", "ts-jest": "29.4.6", - "ts-node": "10.9.1", + "ts-node": "10.9.2", "typescript": "5.9.3", - "vite": "~5.4.20", + "vite": "~5.4.21", "vite-plugin-dts": "4.5.4", - "vitest": "^4.0.13", - "vitest-browser-react": "^1.0.0", + "vitest": "^4.0.18", + "vitest-browser-react": "^1.0.1", "vitest-dom": "^0.1.1" } }, @@ -212,57 +212,57 @@ "license": "MIT" }, "node_modules/@algolia/abtesting": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.12.2.tgz", - "integrity": "sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.14.1.tgz", + "integrity": "sha512-Dkj0BgPiLAaim9sbQ97UKDFHJE/880wgStAM18U++NaJ/2Cws34J5731ovJifr6E3Pv4T2CqvMXf8qLCC417Ew==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-abtesting": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.46.2.tgz", - "integrity": "sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.48.1.tgz", + "integrity": "sha512-LV5qCJdj+/m9I+Aj91o+glYszrzd7CX6NgKaYdTOj4+tUYfbS62pwYgUfZprYNayhkQpVFcrW8x8ZlIHpS23Vw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.46.2.tgz", - "integrity": "sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.48.1.tgz", + "integrity": "sha512-/AVoMqHhPm14CcHq7mwB+bUJbfCv+jrxlNvRjXAuO+TQa+V37N8k1b0ijaRBPdmSjULMd8KtJbQyUyabXOu6Kg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.46.2.tgz", - "integrity": "sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.48.1.tgz", + "integrity": "sha512-VXO+qu2Ep6ota28ktvBm3sG53wUHS2n7bgLWmce5jTskdlCD0/JrV4tnBm1l7qpla1CeoQb8D7ShFhad+UoSOw==", "dev": true, "license": "MIT", "engines": { @@ -270,151 +270,151 @@ } }, "node_modules/@algolia/client-insights": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.46.2.tgz", - "integrity": "sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.48.1.tgz", + "integrity": "sha512-zl+Qyb0nLg+Y5YvKp1Ij+u9OaPaKg2/EPzTwKNiVyOHnQJlFxmXyUZL1EInczAZsEY8hVpPCLtNfhMhfxluXKQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.46.2.tgz", - "integrity": "sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.48.1.tgz", + "integrity": "sha512-r89Qf9Oo9mKWQXumRu/1LtvVJAmEDpn8mHZMc485pRfQUMAwSSrsnaw1tQ3sszqzEgAr1c7rw6fjBI+zrAXTOw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.46.2.tgz", - "integrity": "sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.48.1.tgz", + "integrity": "sha512-TPKNPKfghKG/bMSc7mQYD9HxHRUkBZA4q1PEmHgICaSeHQscGqL4wBrKkhfPlDV1uYBKW02pbFMUhsOt7p4ZpA==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.46.2.tgz", - "integrity": "sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.48.1.tgz", + "integrity": "sha512-4Fu7dnzQyQmMFknYwTiN/HxPbH4DyxvQ1m+IxpPp5oslOgz8m6PG5qhiGbqJzH4HiT1I58ecDiCAC716UyVA8Q==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/ingestion": { - "version": "1.46.2", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.46.2.tgz", - "integrity": "sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==", + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.48.1.tgz", + "integrity": "sha512-/RFq3TqtXDUUawwic/A9xylA2P3LDMO8dNhphHAUOU51b1ZLHrmZ6YYJm3df1APz7xLY1aht6okCQf+/vmrV9w==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.46.2", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.46.2.tgz", - "integrity": "sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==", + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.48.1.tgz", + "integrity": "sha512-Of0jTeAZRyRhC7XzDSjJef0aBkgRcvRAaw0ooYRlOw57APii7lZdq+layuNdeL72BRq1snaJhoMMwkmLIpJScw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.46.2.tgz", - "integrity": "sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.48.1.tgz", + "integrity": "sha512-bE7JcpFXzxF5zHwj/vkl2eiCBvyR1zQ7aoUdO+GDXxGp0DGw7nI0p8Xj6u8VmRQ+RDuPcICFQcCwRIJT5tDJFw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.46.2.tgz", - "integrity": "sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.48.1.tgz", + "integrity": "sha512-MK3wZ2koLDnvH/AmqIF1EKbJlhRS5j74OZGkLpxI4rYvNi9Jn/C7vb5DytBnQ4KUWts7QsmbdwHkxY5txQHXVw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2" + "@algolia/client-common": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.46.2.tgz", - "integrity": "sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.48.1.tgz", + "integrity": "sha512-2oDT43Y5HWRSIQMPQI4tA/W+TN/N2tjggZCUsqQV440kxzzoPGsvv9QP1GhQ4CoDa+yn6ygUsGp6Dr+a9sPPSg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2" + "@algolia/client-common": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.46.2.tgz", - "integrity": "sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.48.1.tgz", + "integrity": "sha512-xcaCqbhupVWhuBP1nwbk1XNvwrGljozutEiLx06mvqDf3o8cHyEgQSHS4fKJM+UAggaWVnnFW+Nne5aQ8SUJXg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2" + "@algolia/client-common": "5.48.1" }, "engines": { "node": ">= 14.0.0" @@ -435,13 +435,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.2101.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2101.4.tgz", - "integrity": "sha512-3yyebORk+ovtO+LfDjIGbGCZhCMDAsyn9vkCljARj3sSshS4blOQBar0g+V3kYAweLT5Gf+rTKbN5jneOkBAFQ==", + "version": "0.2102.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.0.tgz", + "integrity": "sha512-kYFwTNzToG2SJMxj2f41w3QRtdqlrFuF+bpZrtIaHOP078Ktld8EPIp9KqB0Y46Vvs69ifby5Q1/wPD9wA3iaw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.4", + "@angular-devkit/core": "21.2.0", "rxjs": "7.8.2" }, "bin": { @@ -454,64 +454,64 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.1.4.tgz", - "integrity": "sha512-2HPCo6vEu5EIwxxFYhnmdfbktRBoOVQD3q7lG9PMQPf/jRCnyIZ70qSbXbAV96IMDLFl8mLRfY4scoaFMIYGMw==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.2.0.tgz", + "integrity": "sha512-owv0fJHsbTf3b2GZTpLJicwLf6fOjuEHODjvFDnREAB1mUObUi2xkf8mc99/lFIT8d+Jcz0z+xqVIdEf1VJf6g==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2101.4", - "@angular-devkit/build-webpack": "0.2101.4", - "@angular-devkit/core": "21.1.4", - "@angular/build": "21.1.4", - "@babel/core": "7.28.5", - "@babel/generator": "7.28.5", + "@angular-devkit/architect": "0.2102.0", + "@angular-devkit/build-webpack": "0.2102.0", + "@angular-devkit/core": "21.2.0", + "@angular/build": "21.2.0", + "@babel/core": "7.29.0", + "@babel/generator": "7.29.1", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-transform-async-generator-functions": "7.28.0", - "@babel/plugin-transform-async-to-generator": "7.27.1", - "@babel/plugin-transform-runtime": "7.28.5", - "@babel/preset-env": "7.28.5", - "@babel/runtime": "7.28.4", + "@babel/plugin-transform-async-generator-functions": "7.29.0", + "@babel/plugin-transform-async-to-generator": "7.28.6", + "@babel/plugin-transform-runtime": "7.29.0", + "@babel/preset-env": "7.29.0", + "@babel/runtime": "7.28.6", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "21.1.4", + "@ngtools/webpack": "21.2.0", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.23", + "autoprefixer": "10.4.24", "babel-loader": "10.0.0", "browserslist": "^4.26.0", "copy-webpack-plugin": "13.0.1", - "css-loader": "7.1.2", - "esbuild-wasm": "0.27.2", + "css-loader": "7.1.3", + "esbuild-wasm": "0.27.3", "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", "less": "4.4.2", - "less-loader": "12.3.0", + "less-loader": "12.3.1", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", - "mini-css-extract-plugin": "2.9.4", + "mini-css-extract-plugin": "2.10.0", "open": "11.0.0", - "ora": "9.0.0", + "ora": "9.3.0", "picomatch": "4.0.3", "piscina": "5.1.4", "postcss": "8.5.6", "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.97.1", - "sass-loader": "16.0.6", - "semver": "7.7.3", + "sass": "1.97.3", + "sass-loader": "16.0.7", + "semver": "7.7.4", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.44.1", + "terser": "5.46.0", "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.105.0", + "webpack": "5.105.2", "webpack-dev-middleware": "7.4.5", - "webpack-dev-server": "5.2.2", + "webpack-dev-server": "5.2.3", "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, @@ -521,7 +521,7 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.27.2" + "esbuild": "0.27.3" }, "peerDependencies": { "@angular/compiler-cli": "^21.0.0", @@ -530,7 +530,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.1.4", + "@angular/ssr": "^21.2.0", "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", "jest": "^30.2.0", @@ -586,254 +586,10 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", - "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.28.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", - "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-remap-async-to-generator": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/plugin-transform-runtime": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz", - "integrity": "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/preset-env": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz", - "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.27.1", - "@babel/plugin-syntax-import-attributes": "^7.27.1", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.28.0", - "@babel/plugin-transform-async-to-generator": "^7.27.1", - "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.5", - "@babel/plugin-transform-class-properties": "^7.27.1", - "@babel/plugin-transform-class-static-block": "^7.28.3", - "@babel/plugin-transform-classes": "^7.28.4", - "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-dotall-regex": "^7.27.1", - "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.0", - "@babel/plugin-transform-exponentiation-operator": "^7.28.5", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", - "@babel/plugin-transform-for-of": "^7.27.1", - "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.27.1", - "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.28.5", - "@babel/plugin-transform-member-expression-literals": "^7.27.1", - "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-modules-systemjs": "^7.28.5", - "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", - "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.28.4", - "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.28.5", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.27.1", - "@babel/plugin-transform-private-property-in-object": "^7.27.1", - "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.4", - "@babel/plugin-transform-regexp-modifiers": "^7.27.1", - "@babel/plugin-transform-reserved-words": "^7.27.1", - "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.27.1", - "@babel/plugin-transform-sticky-regex": "^7.27.1", - "@babel/plugin-transform-template-literals": "^7.27.1", - "@babel/plugin-transform-typeof-symbol": "^7.27.1", - "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.27.1", - "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "core-js-compat": "^3.43.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/autoprefixer": { - "version": "10.4.23", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", - "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", + "version": "10.4.24", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", + "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==", "dev": true, "funding": [ { @@ -852,7 +608,7 @@ "license": "MIT", "dependencies": { "browserslist": "^4.28.1", - "caniuse-lite": "^1.0.30001760", + "caniuse-lite": "^1.0.30001766", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" @@ -867,95 +623,6 @@ "postcss": "^8.1.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "license": "MIT" - }, "node_modules/@angular-devkit/build-angular/node_modules/es-module-lexer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", @@ -963,19 +630,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@angular-devkit/build-angular/node_modules/esbuild-wasm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.27.2.tgz", - "integrity": "sha512-eUTnl8eh+v8UZIZh4MrMOKDAc8Lm7+NqP3pyuTORGFY1s/o9WoiJgKnwXy+te2J3hX7iRbFSHEyig7GsPeeJyw==", - "dev": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -1000,155 +654,6 @@ "node": ">=4.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -1156,26 +661,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@angular-devkit/build-angular/node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -1199,23 +684,6 @@ "node": ">= 0.6" } }, - "node_modules/@angular-devkit/build-angular/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@angular-devkit/build-angular/node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -1245,222 +713,10 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/@angular-devkit/build-angular/node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/sass": { - "version": "1.97.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.1.tgz", - "integrity": "sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/sass-loader": { - "version": "16.0.6", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.6.tgz", - "integrity": "sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/terser": { - "version": "5.44.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", - "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/webpack": { - "version": "5.105.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz", - "integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==", + "version": "5.105.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", + "integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==", "dev": true, "license": "MIT", "dependencies": { @@ -1506,183 +762,14 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", - "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/bonjour": "^3.5.13", - "@types/connect-history-api-fallback": "^1.5.4", - "@types/express": "^4.17.21", - "@types/express-serve-static-core": "^4.17.21", - "@types/serve-index": "^1.9.4", - "@types/serve-static": "^1.15.5", - "@types/sockjs": "^0.3.36", - "@types/ws": "^8.5.10", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.2.1", - "chokidar": "^3.6.0", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "express": "^4.21.2", - "graceful-fs": "^4.2.6", - "http-proxy-middleware": "^2.0.9", - "ipaddr.js": "^2.1.0", - "launch-editor": "^2.6.1", - "open": "^10.0.3", - "p-retry": "^6.2.0", - "schema-utils": "^4.2.0", - "selfsigned": "^2.4.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^7.4.2", - "ws": "^8.18.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", - "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.2101.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2101.4.tgz", - "integrity": "sha512-lPjPxeEzUha4bnlGzD3KFFf3yxcQjOfV9wwZIa4XLsqjCZsUk95TzHQH7i64OCTw9uKTEQkJBAuO6v2WXHxopw==", + "version": "0.2102.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2102.0.tgz", + "integrity": "sha512-Za1xoxxrv8w8/B8QoYza4asDAypMjbTkeDEZi3VGiZ+QRWHNSTDsIAePQDOqs4b6Wogk898kwYYAYGyLuWEC0A==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2101.4", + "@angular-devkit/architect": "0.2102.0", "rxjs": "7.8.2" }, "engines": { @@ -1696,13 +783,13 @@ } }, "node_modules/@angular-devkit/core": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.4.tgz", - "integrity": "sha512-ObPTI5gYCB1jGxTRhcqZ6oQVUBFVJ8GH4LksVuAiz0nFX7xxpzARWvlhq943EtnlovVlUd9I8fM3RQqjfGVVAQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.0.tgz", + "integrity": "sha512-HZdTn46Ca6qbb9Zef8R/+TWsk6mNKRm4rJyL3PxHP6HnVCwSPNZ0LNN9BjVREBs+UlRdXqBGFBZh5D1nBgu5GQ==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "8.17.1", + "ajv": "8.18.0", "ajv-formats": "3.0.1", "jsonc-parser": "3.3.1", "picomatch": "4.0.3", @@ -1724,16 +811,16 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.1.4.tgz", - "integrity": "sha512-Nqq0ioCUxrbEX+L4KOarETcZZJNnJ1mAJ0ubO4VM91qnn8RBBM9SnQ91590TfC34Szk/wh+3+Uj6KUvTJNuegQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.0.tgz", + "integrity": "sha512-3kn3FI5v7BQ7Zct6raek+WgvyDwOJ8wElbyC903GxMQCDBRGGcevhHvTAIHhknihEsrgplzPhTlWeMbk1JfdFg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.4", + "@angular-devkit/core": "21.2.0", "jsonc-parser": "3.3.1", "magic-string": "0.30.21", - "ora": "9.0.0", + "ora": "9.3.0", "rxjs": "7.8.2" }, "engines": { @@ -1743,55 +830,66 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.0.1.tgz", - "integrity": "sha512-lr4Ysoo28FBOKcJFQUGTMpbWDcak+gyuYvyggp37ERvazE6EDomPFxzEHNqVT9EI9sZ+GDBOoPR+EdFh0ALGNw==", + "version": "18.4.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.4.3.tgz", + "integrity": "sha512-zdrA8mR98X+U4YgHzUKmivRU+PxzwOL/j8G7eTOvBuq8GPzsP+hvak+tyxlgeGm9HsvpFj9ERHLtJ0xDUPs8fg==", "dev": true, "license": "MIT" }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.0.1.tgz", - "integrity": "sha512-pS3SYLa9DA+ENklGxEUlcw6/xCxgDk9fgjyaheuSjDxL3TIh1pTa4V2TptODdcPh7XCYXiVmy+e/w79mXlGzOw==", + "version": "18.4.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.4.3.tgz", + "integrity": "sha512-AyJbupiwTBR81P6T59v+aULEnPpZBCBxL2S5QFWfAhNCwWhcof4GihvdK2Z87yhvzDGeAzUFSWl/beJfeFa+PA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.0.1", - "@angular-eslint/utils": "18.0.1" + "@angular-eslint/bundled-angular-compiler": "18.4.3", + "@angular-eslint/utils": "18.4.3" }, "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": "*" } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.0.1.tgz", - "integrity": "sha512-u/eov/CFBb8l35D8dW78Dx5fBLd8FZFibKN9XQknhzXnDMpISuUOMny5g5/wvYYjqLgqEySXMiHKEAxEup7xtA==", + "version": "18.4.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.4.3.tgz", + "integrity": "sha512-ijGlX2N01ayMXTpeQivOA31AszO8OEbu9ZQUCxnu9AyMMhxyi2q50bujRChAvN9YXQfdQtbxuajxV6+aiWb5BQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.0.1", - "@angular-eslint/utils": "18.0.1", - "aria-query": "5.3.0", - "axobject-query": "4.0.0" + "@angular-eslint/bundled-angular-compiler": "18.4.3", + "@angular-eslint/utils": "18.4.3", + "aria-query": "5.3.2", + "axobject-query": "4.1.0" }, "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", + "@typescript-eslint/types": "^7.11.0 || ^8.0.0", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": "*" } }, + "node_modules/@angular-eslint/eslint-plugin-template/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/@angular-eslint/template-parser": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.0.1.tgz", - "integrity": "sha512-22fKzkWo9Ts8aY/WHL1A6seS2tpltgRRXVfnZnnqvQRyRiuPnx1FC0ly7+QPZkThh8vdLwxU+BvtLq9Uiqh9OQ==", + "version": "18.4.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.4.3.tgz", + "integrity": "sha512-JZMPtEB8yNip3kg4WDEWQyObSo2Hwf+opq2ElYuwe85GQkGhfJSJ2CQYo4FSwd+c5MUQAqESNRg9QqGYauDsiw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.0.1", - "eslint-scope": "^8.0.0" + "@angular-eslint/bundled-angular-compiler": "18.4.3", + "eslint-scope": "^8.0.2" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", @@ -1799,24 +897,24 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.0.1.tgz", - "integrity": "sha512-Q9lCySqg+9h2cz08+SoWj48cY1i04tL1k3bsQJmF2TsylAw2mSsNGX2X3h9WkdxY7sUoY0mP7MVW1iU54Gobcg==", + "version": "18.4.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.4.3.tgz", + "integrity": "sha512-w0bJ9+ELAEiPBSTPPm9bvDngfu1d8JbzUhvs2vU+z7sIz/HMwUZT5S4naypj2kNN0gZYGYrW0lt+HIbW87zTAQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.0.1" + "@angular-eslint/bundled-angular-compiler": "18.4.3" }, "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": "*" } }, "node_modules/@angular/animations": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.1.4.tgz", - "integrity": "sha512-8xQ0Ylw7qqVyw4ZJ/Tyw/z5Mtqtp8AMj+R+Z1sCWcyxBgDU4+qfxteVYdiipWC3tX77A0FTsXqwvNP9WVY2/WA==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.2.0.tgz", + "integrity": "sha512-SzlLoMT/r5wKqPicx5okCAiN5UD5+VE7x/F1G6gSJCcnBfbK5PqHPUmDnMW4jw9Ode06KZDT7ntstn6fG+Ld8w==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1825,26 +923,26 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.1.4" + "@angular/core": "21.2.0" } }, "node_modules/@angular/build": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.1.4.tgz", - "integrity": "sha512-7CAAQPWFMMqod40ox5MOVB/CnoBXFDehyQhs0hls6lu7bOy/M0EDy0v6bERkyNGRz1mihWWBiCV8XzEinrlq1A==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.0.tgz", + "integrity": "sha512-K0EqiHz2y7TSyD4adWD0+C/P9khKlrsSWavXWxGRvoSJC/H3I3SK5Z6BWwftBibXR1Fis7njwvl5IGAlQrDchA==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2101.4", - "@babel/core": "7.28.5", + "@angular-devkit/architect": "0.2102.0", + "@babel/core": "7.29.0", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", "@inquirer/confirm": "5.1.21", - "@vitejs/plugin-basic-ssl": "2.1.0", - "beasties": "0.3.5", + "@vitejs/plugin-basic-ssl": "2.1.4", + "beasties": "0.4.1", "browserslist": "^4.26.0", - "esbuild": "0.27.2", + "esbuild": "0.27.3", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -1854,14 +952,14 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.58", - "sass": "1.97.1", - "semver": "7.7.3", + "rolldown": "1.0.0-rc.4", + "sass": "1.97.3", + "semver": "7.7.4", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "undici": "7.20.0", - "vite": "7.3.0", - "watchpack": "2.5.0" + "undici": "7.22.0", + "vite": "7.3.1", + "watchpack": "2.5.1" }, "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", @@ -1869,7 +967,7 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "lmdb": "3.4.4" + "lmdb": "3.5.1" }, "peerDependencies": { "@angular/compiler": "^21.0.0", @@ -1879,7 +977,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.1.4", + "@angular/ssr": "^21.2.0", "karma": "^6.4.0", "less": "^4.2.0", "ng-packagr": "^21.0.0", @@ -1928,132 +1026,10 @@ } } }, - "node_modules/@angular/build/node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular/build/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular/build/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@angular/build/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular/build/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@angular/build/node_modules/sass": { - "version": "1.97.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.1.tgz", - "integrity": "sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/@angular/build/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular/build/node_modules/undici": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", - "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, "node_modules/@angular/build/node_modules/vite": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", - "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", "dependencies": { @@ -2125,46 +1101,31 @@ } } }, - "node_modules/@angular/build/node_modules/watchpack": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.0.tgz", - "integrity": "sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/@angular/cli": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.1.4.tgz", - "integrity": "sha512-XsMHgxTvHGiXXrhYZz3zMZYhYU0gHdpoHKGiEKXwcx+S1KoYbIssyg6oF2Kq49ZaE0OYCTKjnvgDce6ZqdkJ/A==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.0.tgz", + "integrity": "sha512-yaGEpckqgOemcHkoWeH92i9eNrcbr9iE/dnxL+Du6s9spTAXJ2jjtYfszhmowuQZkCK5rjecMb8ctNtHlaGCjg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2101.4", - "@angular-devkit/core": "21.1.4", - "@angular-devkit/schematics": "21.1.4", + "@angular-devkit/architect": "0.2102.0", + "@angular-devkit/core": "21.2.0", + "@angular-devkit/schematics": "21.2.0", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", "@modelcontextprotocol/sdk": "1.26.0", - "@schematics/angular": "21.1.4", + "@schematics/angular": "21.2.0", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.46.2", + "algoliasearch": "5.48.1", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", "npm-package-arg": "13.0.2", - "pacote": "21.0.4", + "pacote": "21.3.1", "parse5-html-rewriting-stream": "8.0.0", - "resolve": "1.22.11", - "semver": "7.7.3", + "semver": "7.7.4", "yargs": "18.0.0", - "zod": "4.3.5" + "zod": "4.3.6" }, "bin": { "ng": "bin/ng.js" @@ -2175,23 +1136,10 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular/cli/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@angular/common": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.1.4.tgz", - "integrity": "sha512-1uOxPrHO9PFZBU/JavzYzjxAm+5x7vD2z6AeUndqdT4LjqOBIePswxFDRqM9dlfF8FIwnnfmNFipiC/yQjJSnA==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.0.tgz", + "integrity": "sha512-6zJMPi0i/XDniEgv3/t2BjuDHiOG44lgIR5PYyxqGpgJ0kqB5hku/0TuentNEi1VnBYgthnfhjek7c+lakXmhw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2200,14 +1148,14 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.1.4", + "@angular/core": "21.2.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.1.4.tgz", - "integrity": "sha512-H0qtASeqOTaS44ioF4DYE/yNqwzUmEJpMYrcNEUFEwA20/DkLzyoaEx4y1CjIxtXxuhtge95PNymDBOLWSjIdg==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.0.tgz", + "integrity": "sha512-0RPkma8UVNpse/VJcXT9w6SKzTMz4J/uMGj0l9enM1frg9xrx1fwi/lLmaVV9Nr9LfqPjQdxNFFlvaBB7g/2zg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2217,13 +1165,13 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.1.4.tgz", - "integrity": "sha512-Uw8KmpVCo58/f5wf6pY8ZS5fodv65hn5jxms8Nv/K7/LVe3i1nNFrHyneBx5+a7qkz93nSV4rdwBVnMvjIyr+g==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.0.tgz", + "integrity": "sha512-gZd58p0/JjgdxMX3v+LjCB6e3dBIfNVr/YzXoh55TfffdBCUQY94hl1+DFQkJ72K5EX+1zbaz03dIm30kw1bGw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "7.28.5", + "@babel/core": "7.29.0", "@jridgewell/sourcemap-codec": "^1.4.14", "chokidar": "^5.0.0", "convert-source-map": "^1.5.1", @@ -2240,8 +1188,8 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.1.4", - "typescript": ">=5.9 <6.0" + "@angular/compiler": "21.2.0", + "typescript": ">=5.9 <6.1" }, "peerDependenciesMeta": { "typescript": { @@ -2249,58 +1197,10 @@ } } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@angular/core": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.1.4.tgz", - "integrity": "sha512-QBDO5SaVYTVQ0fIN9Qd7US9cUCgs2vM9x6K18PTUKmygIkHVHTFdzwm4MO5gpCOFzJseGbS+dNzqn+v0PaKf9g==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.0.tgz", + "integrity": "sha512-VnTbmZq3g3Q+s3nCZ8VUDMLjMezOg/bqUxAJ/DrRWCrEcTP5JO3mrNPs3FHj+qlB0T+BQP7uQv6QTzPVKybwoA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2309,7 +1209,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.1.4", + "@angular/compiler": "21.2.0", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0 || ~0.16.0" }, @@ -2323,9 +1223,9 @@ } }, "node_modules/@angular/forms": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.1.4.tgz", - "integrity": "sha512-duVT/eOncmFNBYRlK/F7WDg6GD1vL1mxUrDdnp7M9J8JvNrKH0PvdfzuOAmjbB8/bsvUNTLFXCV4+43Mc2Hqsw==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.0.tgz", + "integrity": "sha512-NduUtPWLauH/FLayEDkLyaKAGqKzXbcfO7468LOWCXN3crhNVQyIWRQPOUcdpoJwDAGLpN85m3DhJhXNnA9c5w==", "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", @@ -2335,16 +1235,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.1.4", - "@angular/core": "21.1.4", - "@angular/platform-browser": "21.1.4", + "@angular/common": "21.2.0", + "@angular/core": "21.2.0", + "@angular/platform-browser": "21.2.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-21.1.4.tgz", - "integrity": "sha512-E0OKcbYMJPaWlDsz4clPoFJRCgpWBSmMZtgzd4Py3C6yxTyPCZYgA43UyzUDiQI7rHHjD5V6d5EvocgSq6uBfQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-21.2.0.tgz", + "integrity": "sha512-tWG/8I9kMfSk1NYlS/PvvcVg+Jx1wy4mbZFYIKfcSOoOsVuW/QyHRsHNFtHUG7ZbgzDXoHIWblEk3ESSoPlkjw==", "dev": true, "license": "MIT", "engines": { @@ -2352,9 +1252,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.1.4.tgz", - "integrity": "sha512-S6Iw5CkORih5omh+MQY35w0bUBxdSFAPLDg386S6/9fEUjDClo61hvXNKxaNh9g7tnh1LD7zmTmKrqufnhnFDQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.0.tgz", + "integrity": "sha512-IUGukpvvT2B5Dl76qzk6rY7UIHUT9u4BhT2AwVz+5JqcX9KwQtYD17Gt7wj6bvIgCXKWG+CfN8Zd9DECOCYWjg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2363,9 +1263,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "21.1.4", - "@angular/common": "21.1.4", - "@angular/core": "21.1.4" + "@angular/animations": "21.2.0", + "@angular/common": "21.2.0", + "@angular/core": "21.2.0" }, "peerDependenciesMeta": { "@angular/animations": { @@ -2374,9 +1274,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.1.4.tgz", - "integrity": "sha512-lThgNDFHPQyrx0liNX3x8wHcgp1sd/Dym19zm1PSQ67k6J4snwxZFhNlwFHVr1K86XvX/vilyeR2edPLe9lF3Q==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.2.0.tgz", + "integrity": "sha512-eTHNTnTEP25eCyu4MJdPAAc/7Ib5XtR/dqUlzZdNoAldREPNw95FF12QMunvnen66v3CvCYdND8rAlbz2LkK7g==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2385,16 +1285,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.1.4", - "@angular/compiler": "21.1.4", - "@angular/core": "21.1.4", - "@angular/platform-browser": "21.1.4" + "@angular/common": "21.2.0", + "@angular/compiler": "21.2.0", + "@angular/core": "21.2.0", + "@angular/platform-browser": "21.2.0" } }, "node_modules/@angular/router": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.1.4.tgz", - "integrity": "sha512-nPYuRJ8ub/X8GK55U2KqYy/ducVRn6HSoDmZz0yiXtI6haFsZlv9R1j5zi0EDIqrrN0HGARMs6jNDXZC1Ded3w==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.0.tgz", + "integrity": "sha512-siliJ+jJRUCRZ0cdkqc7zww9Didz56Z0Z2YPIuR2n5TZLiuJY+jAf6xotXKp/v6v8XoGJwLiRNipGgNDRIAlWA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2403,9 +1303,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.1.4", - "@angular/core": "21.1.4", - "@angular/platform-browser": "21.1.4", + "@angular/common": "21.2.0", + "@angular/core": "21.2.0", + "@angular/platform-browser": "21.2.0", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -5090,6 +3990,27 @@ "node": ">=18" } }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, "node_modules/@csstools/postcss-color-function": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", @@ -5193,6 +4114,26 @@ "postcss": "^8.2" } }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, "node_modules/@csstools/postcss-normalize-display-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", @@ -5270,6 +4211,46 @@ "postcss": "^8.2" } }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, "node_modules/@csstools/postcss-unset-value": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", @@ -6000,6 +4981,14 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/@harperfast/extended-iterable": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@harperfast/extended-iterable/-/extended-iterable-1.0.3.tgz", + "integrity": "sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, "node_modules/@hono/node-server": { "version": "1.19.10", "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.10.tgz", @@ -8950,9 +7939,9 @@ } }, "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.4.tgz", - "integrity": "sha512-XaKL705gDWd6XVls3ATDj13ZdML/LqSIxwgnYpG8xTzH2ifArx8fMMDdvqGE/Emd+W6R90W2fveZcJ0AyS8Y0w==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.5.1.tgz", + "integrity": "sha512-tpfN4kKrrMpQ+If1l8bhmoNkECJi0iOu6AEdrTJvWVC+32sLxTARX5Rsu579mPImRP9YFWfWgeRQ5oav7zApQQ==", "cpu": [ "arm64" ], @@ -8964,9 +7953,9 @@ ] }, "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.4.tgz", - "integrity": "sha512-GPHGEVcwJlkD01GmIr7B4kvbIcUDS2+kBadVEd7lU4can1RZaZQLDDBJRrrNfS2Kavvl0VLI/cMv7UASAXGrww==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.5.1.tgz", + "integrity": "sha512-+a2tTfc3rmWhLAolFUWRgJtpSuu+Fw/yjn4rF406NMxhfjbMuiOUTDRvRlMFV+DzyjkwnokisskHbCWkS3Ly5w==", "cpu": [ "x64" ], @@ -8978,9 +7967,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-arm": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.4.tgz", - "integrity": "sha512-cmev5/dZr5ACKri9f6GU6lZCXTjMhV72xujlbOhFCgFXrt4W0TxGsmY8kA1BITvH60JBKE50cSxsiulybAbrrw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.5.1.tgz", + "integrity": "sha512-0EgcE6reYr8InjD7V37EgXcYrloqpxVPINy3ig1MwDSbl6LF/vXTYRH9OE1Ti1D8YZnB35ZH9aTcdfSb5lql2A==", "cpu": [ "arm" ], @@ -8992,9 +7981,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.4.tgz", - "integrity": "sha512-mALqr7DE42HsiwVTKpQWxacjHoJk+e9p00RWIJqTACh/hpucxp/0lK/XMh5XzWnU/TDCZLukq1+vNqnNumTP/Q==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.5.1.tgz", + "integrity": "sha512-aoERa5B6ywXdyFeYGQ1gbQpkMkDbEo45qVoXE5QpIRavqjnyPwjOulMkmkypkmsbJ5z4Wi0TBztON8agCTG0Vg==", "cpu": [ "arm64" ], @@ -9006,9 +7995,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-x64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.4.tgz", - "integrity": "sha512-QjLs8OcmCNcraAcLoZyFlo0atzBJniQLLwhtR+ymQqS5kLYpV5RqwriL87BW+ZiR9ZiGgZx3evrz5vnWPtJ1fQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.5.1.tgz", + "integrity": "sha512-SqNDY1+vpji7bh0sFH5wlWyFTOzjbDOl0/kB5RLLYDAFyd/uw3n7wyrmas3rYPpAW7z18lMOi1yKlTPv967E3g==", "cpu": [ "x64" ], @@ -9020,9 +8009,9 @@ ] }, "node_modules/@lmdb/lmdb-win32-arm64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.4.tgz", - "integrity": "sha512-tr/pwHDlZ33forLGAr0tI04cRmP4SgF93yHbb+2zvZiDEyln5yMHhbKDySxY66aUOkhvBvTuHq9q/3YmTj6ZHQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.5.1.tgz", + "integrity": "sha512-50v0O1Lt37cwrmR9vWZK5hRW0Aw+KEmxJJ75fge/zIYdvNKB/0bSMSVR5Uc2OV9JhosIUyklOmrEvavwNJ8D6w==", "cpu": [ "arm64" ], @@ -9034,9 +8023,9 @@ ] }, "node_modules/@lmdb/lmdb-win32-x64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.4.tgz", - "integrity": "sha512-KRzfocJzB/mgoTCqnMawuLSKheHRVTqWfSmouIgYpFs6Hx4zvZSvsZKSCEb5gHmICy7qsx9l06jk3MFTtiFVAQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.5.1.tgz", + "integrity": "sha512-qwosvPyl+zpUlp3gRb7UcJ3H8S28XHCzkv0Y0EgQToXjQP91ZD67EHSCDmaLjtKhe+GVIW5om1KUpzVLA0l6pg==", "cpu": [ "x64" ], @@ -9202,23 +8191,6 @@ "resolve": "~1.22.2" } }, - "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@modelcontextprotocol/sdk": { "version": "1.26.0", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", @@ -9319,6 +8291,16 @@ "node": ">=8" } }, + "node_modules/@module-federation/cli/node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/@module-federation/data-prefetch": { "version": "0.21.6", "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.21.6.tgz", @@ -9787,6 +8769,16 @@ "node": ">=8" } }, + "node_modules/@module-federation/node/node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/@module-federation/node/node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -10351,9 +9343,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.1.4.tgz", - "integrity": "sha512-CgKnMofIVGTwNPqFNZmkmr2aLOFUG/AKm8lauXU+juwSaY7Z28eguFd+J42uVUOnasLxINQY9y7kr9f6deTrcg==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.2.0.tgz", + "integrity": "sha512-UOBgwtIvN29ELit35Gc11Kxx7ISQ8H4FJglRnoTmG9l26zA9vaLklfS4JHpU/8ORou9P+6NnZlzP80+qhmJSVg==", "dev": true, "license": "MIT", "engines": { @@ -12991,9 +11983,9 @@ "license": "MIT" }, "node_modules/@oxc-project/types": { - "version": "0.106.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.106.0.tgz", - "integrity": "sha512-QdsH3rZq480VnOHSHgPYOhjL8O8LBdcnSjM408BpPCCUc0JYYZPG9Gafl9i3OcGk/7137o+gweb4cCv3WAUykg==", + "version": "0.113.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.113.0.tgz", + "integrity": "sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA==", "dev": true, "license": "MIT", "funding": { @@ -13866,9 +12858,9 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.58.tgz", - "integrity": "sha512-mWj5eE4Qc8TbPdGGaaLvBb9XfDPvE1EmZkJQgiGKwchkWH4oAJcRAKMTw7ZHnb1L+t7Ah41sBkAecaIsuUgsug==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.4.tgz", + "integrity": "sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w==", "cpu": [ "arm64" ], @@ -13883,9 +12875,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.58.tgz", - "integrity": "sha512-wFxUymI/5R8bH8qZFYDfAxAN9CyISEIYke+95oZPiv6EWo88aa5rskjVcCpKA532R+klFmdqjbbaD56GNmTF4Q==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.4.tgz", + "integrity": "sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q==", "cpu": [ "arm64" ], @@ -13900,9 +12892,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.58.tgz", - "integrity": "sha512-ybp3MkPj23VDV9PhtRwdU5qrGhlViWRV5BjKwO6epaSlUD5lW0WyY+roN3ZAzbma/9RrMTgZ/a/gtQq8YXOcqw==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.4.tgz", + "integrity": "sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww==", "cpu": [ "x64" ], @@ -13917,9 +12909,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.58.tgz", - "integrity": "sha512-Evxj3yh7FWvyklUYZa0qTVT9N2zX9TPDqGF056hl8hlCZ9/ndQ2xMv6uw9PD1VlLpukbsqL+/C6M0qwipL0QMg==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.4.tgz", + "integrity": "sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw==", "cpu": [ "x64" ], @@ -13934,9 +12926,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.58.tgz", - "integrity": "sha512-tYeXprDOrEgVHUbPXH6MPso4cM/c6RTkmJNICMQlYdki4hGMh92aj3yU6CKs+4X5gfG0yj5kVUw/L4M685SYag==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.4.tgz", + "integrity": "sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w==", "cpu": [ "arm" ], @@ -13951,9 +12943,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.58.tgz", - "integrity": "sha512-N78vmZzP6zG967Ohr+MasCjmKtis0geZ1SOVmxrA0/bklTQSzH5kHEjW5Qn+i1taFno6GEre1E40v0wuWsNOQw==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.4.tgz", + "integrity": "sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A==", "cpu": [ "arm64" ], @@ -13968,9 +12960,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.58.tgz", - "integrity": "sha512-l+p4QVtG72C7wI2SIkNQw/KQtSjuYwS3rV6AKcWrRBF62ClsFUcif5vLaZIEbPrCXu5OFRXigXFJnxYsVVZqdQ==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.4.tgz", + "integrity": "sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ==", "cpu": [ "arm64" ], @@ -13985,9 +12977,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.58.tgz", - "integrity": "sha512-urzJX0HrXxIh0FfxwWRjfPCMeInU9qsImLQxHBgLp5ivji1EEUnOfux8KxPPnRQthJyneBrN2LeqUix9DYrNaQ==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.4.tgz", + "integrity": "sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg==", "cpu": [ "x64" ], @@ -14002,9 +12994,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.58.tgz", - "integrity": "sha512-7ijfVK3GISnXIwq/1FZo+KyAUJjL3kWPJ7rViAL6MWeEBhEgRzJ0yEd9I8N9aut8Y8ab+EKFJyRNMWZuUBwQ0A==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.4.tgz", + "integrity": "sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g==", "cpu": [ "x64" ], @@ -14019,9 +13011,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.58.tgz", - "integrity": "sha512-/m7sKZCS+cUULbzyJTIlv8JbjNohxbpAOA6cM+lgWgqVzPee3U6jpwydrib328JFN/gF9A99IZEnuGYqEDJdww==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.4.tgz", + "integrity": "sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ==", "cpu": [ "arm64" ], @@ -14036,9 +13028,9 @@ } }, "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.58.tgz", - "integrity": "sha512-6SZk7zMgv+y3wFFQ9qE5P9NnRHcRsptL1ypmudD26PDY+PvFCvfHRkJNfclWnvacVGxjowr7JOL3a9fd1wWhUw==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.4.tgz", + "integrity": "sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw==", "cpu": [ "wasm32" ], @@ -14070,9 +13062,9 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.58.tgz", - "integrity": "sha512-sFqfYPnBZ6xBhMkadB7UD0yjEDRvs7ipR3nCggblN+N4ODCXY6qhg/bKL39+W+dgQybL7ErD4EGERVbW9DAWvg==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.4.tgz", + "integrity": "sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ==", "cpu": [ "arm64" ], @@ -14087,9 +13079,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.58.tgz", - "integrity": "sha512-AnFWJdAqB8+IDPcGrATYs67Kik/6tnndNJV2jGRmwlbeNiQQ8GhRJU8ETRlINfII0pqi9k4WWLnb00p1QCxw/Q==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.4.tgz", + "integrity": "sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g==", "cpu": [ "x64" ], @@ -15367,23 +14359,6 @@ } } }, - "node_modules/@rushstack/node-core-library/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@rushstack/node-core-library/node_modules/fs-extra": { "version": "11.3.4", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", @@ -15521,14 +14496,14 @@ } }, "node_modules/@schematics/angular": { - "version": "21.1.4", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.1.4.tgz", - "integrity": "sha512-I1zdSNzdbrVCWpeE2NsZQmIoa9m0nlw4INgdGIkqUH6FgwvoGKC0RoOxKAmm6HHVJ48FE/sPI13dwAeK89ow5A==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.0.tgz", + "integrity": "sha512-GQUIeGzZwCT9/W5MAkKnkwETROPbA1eRmy3JF56jLmvr95tJnypGOG8jGYy0d+tcEVujIouh48r4J3bJQg5mrw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.4", - "@angular-devkit/schematics": "21.1.4", + "@angular-devkit/core": "21.2.0", + "@angular-devkit/schematics": "21.2.0", "jsonc-parser": "3.3.1" }, "engines": { @@ -16549,9 +15524,9 @@ } }, "node_modules/@swc/cli": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.7.10.tgz", - "integrity": "sha512-QQ36Q1VwGTT2YzvMeNe/j1x4DKS277DscNhWc57dIwQn//C+zAgvuSupMB/XkmYqPKQX+8hjn5/cHRJrMvWy0Q==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.8.0.tgz", + "integrity": "sha512-vzUkYzlqLe9dC+B0ZIH62CzfSZOCTjIsmquYyyyi45JCm1xmRfLDKeEeMrEPPyTWnEEN84e4iVd49Tgqa+2GaA==", "dev": true, "license": "MIT", "dependencies": { @@ -16571,11 +15546,11 @@ "swcx": "bin/swcx.js" }, "engines": { - "node": ">= 16.14.0" + "node": ">= 20.19.0" }, "peerDependencies": { "@swc/core": "^1.2.66", - "chokidar": "^4.0.1" + "chokidar": "^5.0.0" }, "peerDependenciesMeta": { "chokidar": { @@ -16637,9 +15612,9 @@ } }, "node_modules/@swc/core": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.8.tgz", - "integrity": "sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.17.tgz", + "integrity": "sha512-Mu3eOrYlkdQPl7yqotNckitTr6FZ0yd7mlWIBEzK+EGIyybgMENJHmbS2DeA7BMleJiBElP6ke+Nz93pkKmKJw==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -16655,16 +15630,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.8", - "@swc/core-darwin-x64": "1.15.8", - "@swc/core-linux-arm-gnueabihf": "1.15.8", - "@swc/core-linux-arm64-gnu": "1.15.8", - "@swc/core-linux-arm64-musl": "1.15.8", - "@swc/core-linux-x64-gnu": "1.15.8", - "@swc/core-linux-x64-musl": "1.15.8", - "@swc/core-win32-arm64-msvc": "1.15.8", - "@swc/core-win32-ia32-msvc": "1.15.8", - "@swc/core-win32-x64-msvc": "1.15.8" + "@swc/core-darwin-arm64": "1.15.17", + "@swc/core-darwin-x64": "1.15.17", + "@swc/core-linux-arm-gnueabihf": "1.15.17", + "@swc/core-linux-arm64-gnu": "1.15.17", + "@swc/core-linux-arm64-musl": "1.15.17", + "@swc/core-linux-x64-gnu": "1.15.17", + "@swc/core-linux-x64-musl": "1.15.17", + "@swc/core-win32-arm64-msvc": "1.15.17", + "@swc/core-win32-ia32-msvc": "1.15.17", + "@swc/core-win32-x64-msvc": "1.15.17" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" @@ -16676,9 +15651,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.8.tgz", - "integrity": "sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.17.tgz", + "integrity": "sha512-eB9qdyt4E60323IS0rgV/rd79DJ+YWSyIKi+sT1dlIgR3ns4xlBiunREM3lVH0FKcUbhttiBvdVubT4QoOuZ+w==", "cpu": [ "arm64" ], @@ -16693,9 +15668,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.8.tgz", - "integrity": "sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.17.tgz", + "integrity": "sha512-k1TZARYs8947jJpSioqcPrusz+wEeABF4iiSdwcSyQh2rIUdIEk5FOyaqJASFPJ6dZfx7ZVOyjtDATVAegs2/Q==", "cpu": [ "x64" ], @@ -16710,9 +15685,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.8.tgz", - "integrity": "sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.17.tgz", + "integrity": "sha512-p6282NQZo5bzx0wphz1ETGjhcRB9CN+/XUAjQwApyoyX9iCloI5IT/RC3vjbflo42g8RPTxUTaItAO0hlLSesQ==", "cpu": [ "arm" ], @@ -16727,9 +15702,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.8.tgz", - "integrity": "sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.17.tgz", + "integrity": "sha512-TGnDS4ejy8y9jqxXqZCyA+DvFc64nXUHS9rxdyeJ9B9uyIdtKVhBrA2xfghYRS/sSPSyHZ0yu89NxBICvONH+A==", "cpu": [ "arm64" ], @@ -16744,9 +15719,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.8.tgz", - "integrity": "sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.17.tgz", + "integrity": "sha512-D0/6Hj4CkgSTTahtlGxv9IDsLTuvQz30mkZEMDp8TqwYhCL8AomznkibwlQU8HtY4q/dqd1OGRPH+FmNb4BBEA==", "cpu": [ "arm64" ], @@ -16761,9 +15736,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.8.tgz", - "integrity": "sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.17.tgz", + "integrity": "sha512-1s2OFsg6DeRkWU7c+PIfIHZsFCbiZ34akXFHrg7KjpF8zIvpHZNoUUZimoWEwcB6GquXSkAO+1b5KpG5nusTeQ==", "cpu": [ "x64" ], @@ -16778,9 +15753,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.8.tgz", - "integrity": "sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.17.tgz", + "integrity": "sha512-gtxGMGYtRWWmCcgx6xM2Yos43uiE/j8kZwkeL/LNGG9zM0tatd23NsfL9PnQJ45hY7QZ+dx2rM68e4ArgG4kJg==", "cpu": [ "x64" ], @@ -16795,9 +15770,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.8.tgz", - "integrity": "sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.17.tgz", + "integrity": "sha512-gxi+/Miytez/O9vJ/QiheIivA3oWZjPp9nJu3VmAfLMWUzcZORMwgaI1ygtDTLjz7CzcwlGMJz/Ab66Y5DfNpg==", "cpu": [ "arm64" ], @@ -16812,9 +15787,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.8.tgz", - "integrity": "sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.17.tgz", + "integrity": "sha512-KUsRqNbTp7SpNK0T9m4+i8GlngzNjwb69a3ttKA6XJ5r6Pewm+NSYji93pNkawXIivbWY2jhvceGMAyd+4hWaQ==", "cpu": [ "ia32" ], @@ -16829,9 +15804,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.8.tgz", - "integrity": "sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA==", + "version": "1.15.17", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.17.tgz", + "integrity": "sha512-zqtEGE0/rTKvEC5sOtpANLHeWEPjsTD4/rwpUxo6ymztcLI/Z+L9Wi9xQvIGmLTUih1gvNZcAwROqdfRP3oAWQ==", "cpu": [ "x64" ], @@ -18510,9 +17485,9 @@ ] }, "node_modules/@vitejs/plugin-basic-ssl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.0.tgz", - "integrity": "sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.4.tgz", + "integrity": "sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==", "dev": true, "license": "MIT", "engines": { @@ -19597,9 +18572,9 @@ } }, "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { @@ -19660,26 +18635,26 @@ } }, "node_modules/algoliasearch": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.46.2.tgz", - "integrity": "sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.48.1.tgz", + "integrity": "sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/abtesting": "1.12.2", - "@algolia/client-abtesting": "5.46.2", - "@algolia/client-analytics": "5.46.2", - "@algolia/client-common": "5.46.2", - "@algolia/client-insights": "5.46.2", - "@algolia/client-personalization": "5.46.2", - "@algolia/client-query-suggestions": "5.46.2", - "@algolia/client-search": "5.46.2", - "@algolia/ingestion": "1.46.2", - "@algolia/monitoring": "1.46.2", - "@algolia/recommend": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/abtesting": "1.14.1", + "@algolia/client-abtesting": "5.48.1", + "@algolia/client-analytics": "5.48.1", + "@algolia/client-common": "5.48.1", + "@algolia/client-insights": "5.48.1", + "@algolia/client-personalization": "5.48.1", + "@algolia/client-query-suggestions": "5.48.1", + "@algolia/client-search": "5.48.1", + "@algolia/ingestion": "1.48.1", + "@algolia/monitoring": "1.48.1", + "@algolia/recommend": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" @@ -19964,6 +18939,27 @@ "node": ">=8" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.findlastindex": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", @@ -20231,15 +19227,6 @@ "node": ">= 0.4" } }, - "node_modules/astro/node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/astro/node_modules/css-select": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", @@ -20523,13 +19510,12 @@ } }, "node_modules/axobject-query": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", - "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", - "dev": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" + "engines": { + "node": ">= 0.4" } }, "node_modules/b4a": { @@ -20961,9 +19947,9 @@ "license": "MIT" }, "node_modules/beasties": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.5.tgz", - "integrity": "sha512-NaWu+f4YrJxEttJSm16AzMIFtVldCvaJ68b1L098KpqXmxt9xOLtKoLkKxb8ekhOrLqEJAbvT6n6SEvB/sac7A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.4.1.tgz", + "integrity": "sha512-2Imdcw3LznDuxAbJM26RHniOLAzE6WgrK8OuvVXCQtNBS8rsnD9zsSEa3fHl4hHpUY7BYTlrpvtPVbvu9G6neg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -20974,10 +19960,11 @@ "htmlparser2": "^10.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.49", - "postcss-media-query-parser": "^0.2.3" + "postcss-media-query-parser": "^0.2.3", + "postcss-safe-parser": "^7.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/before-after-hook": { @@ -23780,20 +22767,20 @@ } }, "node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.3.tgz", + "integrity": "sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA==", "dev": true, "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.33", + "postcss": "^8.4.40", "postcss-modules-extract-imports": "^3.1.0", "postcss-modules-local-by-default": "^4.0.5", "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "semver": "^7.6.3" }, "engines": { "node": ">= 18.12.0" @@ -24045,15 +23032,21 @@ "license": "MIT" }, "node_modules/cssdb": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", - "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz", + "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==", "dev": true, - "license": "CC0-1.0", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "CC0-1.0" }, "node_modules/cssesc": { "version": "3.0.0", @@ -25664,9 +24657,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", - "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", "bin": { @@ -25730,30 +24723,30 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", + "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", - "is-core-module": "^2.15.1", + "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", + "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "engines": { @@ -25864,9 +24857,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.1.tgz", - "integrity": "sha512-zHByM9WTUMnfsDTafGXRiqxp6lFtNoSOWBY6FonVRn3A+BUwN1L/tdBXT40BcBJi0cZjOGTXZ0eD/rTG9fEJ0g==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -25878,7 +24871,6 @@ "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.1.0", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", @@ -25904,16 +24896,6 @@ "node": ">= 0.4" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/eslint-plugin-jsx-a11y/node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -25946,39 +24928,42 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", - "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, "license": "MIT", "engines": { @@ -32926,9 +31911,9 @@ "license": "MIT" }, "node_modules/jiti": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, "license": "MIT", "bin": { @@ -33464,9 +32449,9 @@ } }, "node_modules/less-loader": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.3.0.tgz", - "integrity": "sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.3.1.tgz", + "integrity": "sha512-JZZmG7gMzoDP3VGeEG8Sh6FW5wygB5jYL7Wp29FFihuRTsIBacqO3LbRPr2yStYD11riVf13selLm/CPFRDBRQ==", "dev": true, "license": "MIT", "engines": { @@ -33477,7 +32462,7 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", "less": "^3.5.0 || ^4.0.0", "webpack": "^5.0.0" }, @@ -33689,14 +32674,15 @@ } }, "node_modules/lmdb": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.4.tgz", - "integrity": "sha512-+Y2DqovevLkb6DrSQ6SXTYLEd6kvlRbhsxzgJrk7BUfOVA/mt21ak6pFDZDKxiAczHMWxrb02kXBTSTIA0O94A==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.5.1.tgz", + "integrity": "sha512-NYHA0MRPjvNX+vSw8Xxg6FLKxzAG+e7Pt8RqAQA/EehzHVXq9SxDqJIN3JL1hK0dweb884y8kIh6rkWvPyg9Wg==", "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, "dependencies": { + "@harperfast/extended-iterable": "^1.0.3", "msgpackr": "^1.11.2", "node-addon-api": "^6.1.0", "node-gyp-build-optional-packages": "5.2.2", @@ -33707,13 +32693,13 @@ "download-lmdb-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.4.4", - "@lmdb/lmdb-darwin-x64": "3.4.4", - "@lmdb/lmdb-linux-arm": "3.4.4", - "@lmdb/lmdb-linux-arm64": "3.4.4", - "@lmdb/lmdb-linux-x64": "3.4.4", - "@lmdb/lmdb-win32-arm64": "3.4.4", - "@lmdb/lmdb-win32-x64": "3.4.4" + "@lmdb/lmdb-darwin-arm64": "3.5.1", + "@lmdb/lmdb-darwin-x64": "3.5.1", + "@lmdb/lmdb-linux-arm": "3.5.1", + "@lmdb/lmdb-linux-arm64": "3.5.1", + "@lmdb/lmdb-linux-x64": "3.5.1", + "@lmdb/lmdb-win32-arm64": "3.5.1", + "@lmdb/lmdb-win32-x64": "3.5.1" } }, "node_modules/load-json-file": { @@ -35591,9 +34577,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", - "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.0.tgz", + "integrity": "sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==", "dev": true, "license": "MIT", "dependencies": { @@ -39121,24 +38107,6 @@ "node": ">= 0.4" } }, - "node_modules/object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.values": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", @@ -39309,9 +38277,9 @@ } }, "node_modules/ora": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-9.0.0.tgz", - "integrity": "sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-9.3.0.tgz", + "integrity": "sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==", "dev": true, "license": "MIT", "dependencies": { @@ -39321,9 +38289,8 @@ "is-interactive": "^2.0.0", "is-unicode-supported": "^2.1.0", "log-symbols": "^7.0.1", - "stdin-discarder": "^0.2.2", - "string-width": "^8.1.0", - "strip-ansi": "^7.1.2" + "stdin-discarder": "^0.3.1", + "string-width": "^8.1.0" }, "engines": { "node": ">=20" @@ -39688,9 +38655,9 @@ "license": "MIT" }, "node_modules/pacote": { - "version": "21.0.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.4.tgz", - "integrity": "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==", + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.3.1.tgz", + "integrity": "sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==", "dev": true, "license": "ISC", "dependencies": { @@ -40980,16 +39947,6 @@ } } }, - "node_modules/postcss-loader/node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, "node_modules/postcss-logical": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", @@ -41492,56 +40449,60 @@ } }, "node_modules/postcss-preset-env": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.5.0.tgz", - "integrity": "sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", "dev": true, "license": "CC0-1.0", "dependencies": { - "@csstools/postcss-color-function": "^1.1.0", - "@csstools/postcss-font-format-keywords": "^1.0.0", - "@csstools/postcss-hwb-function": "^1.0.0", - "@csstools/postcss-ic-unit": "^1.0.0", - "@csstools/postcss-is-pseudo-class": "^2.0.2", - "@csstools/postcss-normalize-display-values": "^1.0.0", - "@csstools/postcss-oklab-function": "^1.1.0", + "@csstools/postcss-cascade-layers": "^1.1.1", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.0", - "@csstools/postcss-unset-value": "^1.0.0", - "autoprefixer": "^10.4.6", - "browserslist": "^4.20.3", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", "css-blank-pseudo": "^3.0.3", "css-has-pseudo": "^3.0.4", "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.6.1", - "postcss-attribute-case-insensitive": "^5.0.0", + "cssdb": "^7.1.0", + "postcss-attribute-case-insensitive": "^5.0.2", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.2", - "postcss-color-hex-alpha": "^8.0.3", - "postcss-color-rebeccapurple": "^7.0.2", - "postcss-custom-media": "^8.0.0", - "postcss-custom-properties": "^12.1.7", - "postcss-custom-selectors": "^6.0.0", - "postcss-dir-pseudo-class": "^6.0.4", - "postcss-double-position-gradients": "^3.1.1", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.10", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", "postcss-env-function": "^4.0.6", "postcss-focus-visible": "^6.0.4", "postcss-focus-within": "^5.0.4", "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.3", - "postcss-image-set-function": "^4.0.6", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.0", + "postcss-lab-function": "^4.2.1", "postcss-logical": "^5.0.4", "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.4", + "postcss-nesting": "^10.2.0", "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.3", + "postcss-overflow-shorthand": "^3.0.4", "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.4", - "postcss-pseudo-class-any-link": "^7.1.2", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^5.0.0", + "postcss-selector-not": "^6.0.1", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -41552,7 +40513,7 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-pseudo-class-any-link": { @@ -41635,25 +40596,52 @@ "postcss": "^8.0.3" } }, - "node_modules/postcss-selector-not": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", - "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", + "node_modules/postcss-safe-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=18.0" }, "peerDependencies": { - "postcss": "^8.1.0" + "postcss": "^8.4.31" } }, - "node_modules/postcss-selector-not/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } }, "node_modules/postcss-selector-parser": { "version": "6.1.2", @@ -43235,14 +42223,14 @@ } }, "node_modules/rolldown": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.58.tgz", - "integrity": "sha512-v1FCjMZCan7f+xGAHBi+mqiE4MlH7I+SXEHSQSJoMOGNNB2UYtvMiejsq9YuUOiZjNeUeV/a21nSFbrUR+4ZCQ==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.4.tgz", + "integrity": "sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.106.0", - "@rolldown/pluginutils": "1.0.0-beta.58" + "@oxc-project/types": "=0.113.0", + "@rolldown/pluginutils": "1.0.0-rc.4" }, "bin": { "rolldown": "bin/cli.mjs" @@ -43251,25 +42239,25 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.0-beta.58", - "@rolldown/binding-darwin-arm64": "1.0.0-beta.58", - "@rolldown/binding-darwin-x64": "1.0.0-beta.58", - "@rolldown/binding-freebsd-x64": "1.0.0-beta.58", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.58", - "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.58", - "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.58", - "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.58", - "@rolldown/binding-linux-x64-musl": "1.0.0-beta.58", - "@rolldown/binding-openharmony-arm64": "1.0.0-beta.58", - "@rolldown/binding-wasm32-wasi": "1.0.0-beta.58", - "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.58", - "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.58" + "@rolldown/binding-android-arm64": "1.0.0-rc.4", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.4", + "@rolldown/binding-darwin-x64": "1.0.0-rc.4", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.4", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.4", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.4", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.4", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.4", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.4", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.4", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.4", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.4", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.4" } }, "node_modules/rolldown/node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.58.tgz", - "integrity": "sha512-qWhDs6yFGR5xDfdrwiSa3CWGIHxD597uGE/A9xGqytBjANvh4rLCTTkq7szhMV4+Ygh+PMS90KVJ8xWG/TkX4w==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.4.tgz", + "integrity": "sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ==", "dev": true, "license": "MIT" }, @@ -45659,9 +44647,9 @@ "license": "MIT" }, "node_modules/stdin-discarder": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.1.tgz", + "integrity": "sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==", "dev": true, "license": "MIT", "engines": { @@ -45908,6 +44896,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", @@ -46517,34 +45516,19 @@ } }, "node_modules/swc-loader": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.1.15.tgz", - "integrity": "sha512-cn1WPIeQJvXM4bbo3OwdEIapsQ4uUGOfyFj0h2+2+brT0k76DCGnZXDE2KmcqTd2JSQ+b61z2NPMib7eEwMYYw==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.7.tgz", + "integrity": "sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w==", "dev": true, "license": "MIT", "dependencies": { - "loader-utils": "^2.0.0" + "@swc/counter": "^0.1.3" }, "peerDependencies": { - "@swc/core": "^1.2.52", + "@swc/core": "^1.2.147", "webpack": ">=2" } }, - "node_modules/swc-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -47412,9 +46396,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -50742,9 +49726,9 @@ } }, "node_modules/zod": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz", - "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "dev": true, "license": "MIT", "funding": { @@ -50770,9 +49754,9 @@ } }, "node_modules/zone.js": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", - "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.16.1.tgz", + "integrity": "sha512-dpvY17vxYIW3+bNrP0ClUlaiY0CiIRK3tnoLaGoQsQcY9/I/NpzIWQ7tQNhbV7LacQMpCII6wVzuL3tuWOyfuA==", "license": "MIT" }, "node_modules/zwitch": { diff --git a/package.json b/package.json index dcf12c8b30..d5f44ba612 100644 --- a/package.json +++ b/package.json @@ -36,21 +36,21 @@ }, "devDependencies": { "@abgov/design-tokens": "^1.10.0", - "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0", + "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.1.1", "@abgov/nx-release": "^12.0.0", - "@angular-devkit/build-angular": "21.1.4", - "@angular-devkit/core": "21.1.4", - "@angular-devkit/schematics": "21.1.4", - "@angular-eslint/eslint-plugin": "18.0.1", - "@angular-eslint/eslint-plugin-template": "18.0.1", - "@angular-eslint/template-parser": "18.0.1", - "@angular/cli": "21.1.4", - "@angular/compiler-cli": "21.1.4", - "@angular/language-service": "21.1.4", + "@angular-devkit/build-angular": "21.2.0", + "@angular-devkit/core": "21.2.0", + "@angular-devkit/schematics": "21.2.0", + "@angular-eslint/eslint-plugin": "18.4.3", + "@angular-eslint/eslint-plugin-template": "18.4.3", + "@angular-eslint/template-parser": "18.4.3", + "@angular/cli": "21.2.0", + "@angular/compiler-cli": "21.2.0", + "@angular/language-service": "21.2.0", "@astrojs/check": "^0.9.6", - "@babel/core": "^7.14.5", - "@babel/preset-react": "^7.14.5", - "@faker-js/faker": "^8.3.1", + "@babel/core": "^7.29.0", + "@babel/preset-react": "^7.28.5", + "@faker-js/faker": "^8.4.1", "@nx/angular": "22.5.4", "@nx/eslint": "22.5.4", "@nx/eslint-plugin": "22.5.4", @@ -61,93 +61,93 @@ "@nx/vitest": "22.5.4", "@nx/web": "22.5.4", "@nx/workspace": "22.5.4", - "@schematics/angular": "21.1.4", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@schematics/angular": "21.2.0", + "@sveltejs/vite-plugin-svelte": "^3.1.2", "@swc-node/register": "1.11.1", - "@swc/cli": "0.7.10", - "@swc/core": "1.15.8", - "@testing-library/dom": "^10.1.0", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.1.0", - "@testing-library/svelte": "^4.0.5", - "@testing-library/user-event": "^14.5.2", + "@swc/cli": "0.8.0", + "@swc/core": "1.15.17", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@testing-library/svelte": "^4.2.3", + "@testing-library/user-event": "^14.6.1", "@types/jest": "29.5.14", - "@types/node": "^20.0.0", - "@types/react": "^19.2.7", + "@types/node": "^20.19.35", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", "@typescript-eslint/utils": "^7.18.0", - "@vitejs/plugin-react": "^4.2.1", - "@vitejs/plugin-react-swc": "^3.5.0", - "@vitest/browser": "^4.0.13", - "@vitest/browser-playwright": "^4.0.13", - "@vitest/coverage-v8": "^4.0.13", - "@vitest/ui": "^4.0.13", - "autoprefixer": "^10.4.16", + "@vitejs/plugin-react": "^4.7.0", + "@vitejs/plugin-react-swc": "^3.11.0", + "@vitest/browser": "^4.0.18", + "@vitest/browser-playwright": "^4.0.18", + "@vitest/coverage-v8": "^4.0.18", + "@vitest/ui": "^4.0.18", + "autoprefixer": "^10.4.27", "eslint": "8.57.1", - "eslint-config-prettier": "10.1.5", - "eslint-plugin-import": "2.31.0", - "eslint-plugin-jsx-a11y": "6.10.1", - "eslint-plugin-react": "7.32.2", - "eslint-plugin-react-hooks": "5.0.0", + "eslint-config-prettier": "10.1.8", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-jsx-a11y": "6.10.2", + "eslint-plugin-react": "7.37.5", + "eslint-plugin-react-hooks": "5.2.0", "glob": "^12.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^30.2.0", "jest-preset-angular": "^16.1.1", - "jiti": "2.4.2", + "jiti": "2.6.1", "jsdom": "^26.1.0", - "jsonc-eslint-parser": "^2.1.0", + "jsonc-eslint-parser": "^2.4.2", "ng-packagr": "21.2.0", "npm-check-updates": "^19.6.3", "nx": "22.5.4", - "playwright": "^1.50.1", - "postcss": "^8.4.5", + "playwright": "^1.58.2", + "postcss": "^8.5.6", "postcss-import": "~14.1.0", - "postcss-preset-env": "~7.5.0", + "postcss-preset-env": "~7.8.3", "postcss-replace": "^2.0.1", "postcss-url": "~10.1.3", - "prettier": "^3.2.0", - "prettier-plugin-svelte": "^3.1.2", + "prettier": "^3.8.1", + "prettier-plugin-svelte": "^3.5.0", "rollup": "^4.59.0", "semantic-release": "^25.0.3", "svelte": "^4.2.20", - "svelte-check": "^3.6.2", - "swc-loader": "0.1.15", + "svelte-check": "^3.8.6", + "swc-loader": "0.2.7", "ts-jest": "29.4.6", - "ts-node": "10.9.1", + "ts-node": "10.9.2", "typescript": "5.9.3", - "vite": "~5.4.20", + "vite": "~5.4.21", "vite-plugin-dts": "4.5.4", - "vitest": "^4.0.13", - "vitest-browser-react": "^1.0.0", + "vitest": "^4.0.18", + "vitest-browser-react": "^1.0.1", "vitest-dom": "^0.1.1" }, "dependencies": { - "@angular/animations": "21.1.4", - "@angular/common": "21.1.4", - "@angular/compiler": "21.1.4", - "@angular/core": "21.1.4", - "@angular/forms": "21.1.4", - "@angular/platform-browser": "21.1.4", - "@angular/platform-browser-dynamic": "21.1.4", - "@angular/router": "21.1.4", + "@angular/animations": "21.2.0", + "@angular/common": "21.2.0", + "@angular/compiler": "21.2.0", + "@angular/core": "21.2.0", + "@angular/forms": "21.2.0", + "@angular/platform-browser": "21.2.0", + "@angular/platform-browser-dynamic": "21.2.0", + "@angular/router": "21.2.0", "@astrojs/mdx": "^4.3.13", "@astrojs/react": "^4.4.2", "@swc/helpers": "0.5.19", - "astro": "^5.16.6", - "date-fns": "^3.0.6", + "astro": "^5.18.0", + "date-fns": "^3.6.0", "dompurify": "^3.3.2", "flexsearch": "^0.8.212", "highlight.js": "^11.11.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.4", + "react-dom": "^19.2.4", "react-router-dom": "6.30.3", - "rxjs": "~7.8.0", - "style-dictionary": "^5.1.1", + "rxjs": "~7.8.2", + "style-dictionary": "^5.3.2", "svelte-routing": "^2.13.0", - "tslib": "^2.3.0", - "zone.js": "0.15.1" + "tslib": "^2.8.1", + "zone.js": "0.16.1" }, "overrides": { "glob": "^12.0.0", From 6be158714b2a3e260b714ec924f27798ec22b72c Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Thu, 5 Mar 2026 15:54:32 -0700 Subject: [PATCH 037/103] chore: make package versions specific --- package-lock.json | 4562 ++++++++++++++++++++++++++++++++++++++------- package.json | 128 +- 2 files changed, 3941 insertions(+), 749 deletions(-) diff --git a/package-lock.json b/package-lock.json index a107c7eccf..3ae2afd765 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,27 +17,27 @@ "@angular/platform-browser": "21.2.0", "@angular/platform-browser-dynamic": "21.2.0", "@angular/router": "21.2.0", - "@astrojs/mdx": "^4.3.13", - "@astrojs/react": "^4.4.2", + "@astrojs/mdx": "4.3.13", + "@astrojs/react": "4.4.2", "@swc/helpers": "0.5.19", - "astro": "^5.18.0", - "date-fns": "^3.6.0", - "dompurify": "^3.3.2", - "flexsearch": "^0.8.212", - "highlight.js": "^11.11.1", - "react": "^19.2.4", - "react-dom": "^19.2.4", + "astro": "5.18.0", + "date-fns": "3.6.0", + "dompurify": "3.3.2", + "flexsearch": "0.8.212", + "highlight.js": "11.11.1", + "react": "19.2.4", + "react-dom": "19.2.4", "react-router-dom": "6.30.3", - "rxjs": "~7.8.2", - "style-dictionary": "^5.3.2", - "svelte-routing": "^2.13.0", - "tslib": "^2.8.1", + "rxjs": "7.8.2", + "style-dictionary": "5.3.2", + "svelte-routing": "2.13.0", + "tslib": "2.8.1", "zone.js": "0.16.1" }, "devDependencies": { - "@abgov/design-tokens": "^1.10.0", - "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.1.1", - "@abgov/nx-release": "^12.0.0", + "@abgov/design-tokens": "1.10.0", + "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@2.1.1", + "@abgov/nx-release": "12.0.0", "@angular-devkit/build-angular": "21.2.0", "@angular-devkit/core": "21.2.0", "@angular-devkit/schematics": "21.2.0", @@ -47,10 +47,10 @@ "@angular/cli": "21.2.0", "@angular/compiler-cli": "21.2.0", "@angular/language-service": "21.2.0", - "@astrojs/check": "^0.9.6", - "@babel/core": "^7.29.0", - "@babel/preset-react": "^7.28.5", - "@faker-js/faker": "^8.4.1", + "@astrojs/check": "0.9.6", + "@babel/core": "7.29.0", + "@babel/preset-react": "7.28.5", + "@faker-js/faker": "8.4.1", "@nx/angular": "22.5.4", "@nx/eslint": "22.5.4", "@nx/eslint-plugin": "22.5.4", @@ -62,66 +62,66 @@ "@nx/web": "22.5.4", "@nx/workspace": "22.5.4", "@schematics/angular": "21.2.0", - "@sveltejs/vite-plugin-svelte": "^3.1.2", + "@sveltejs/vite-plugin-svelte": "3.1.2", "@swc-node/register": "1.11.1", "@swc/cli": "0.8.0", "@swc/core": "1.15.17", - "@testing-library/dom": "^10.4.1", - "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^16.3.2", - "@testing-library/svelte": "^4.2.3", - "@testing-library/user-event": "^14.6.1", + "@testing-library/dom": "10.4.1", + "@testing-library/jest-dom": "6.9.1", + "@testing-library/react": "16.3.2", + "@testing-library/svelte": "4.2.3", + "@testing-library/user-event": "14.6.1", "@types/jest": "29.5.14", - "@types/node": "^20.19.35", - "@types/react": "^19.2.14", - "@types/react-dom": "^19.2.3", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", - "@typescript-eslint/utils": "^7.18.0", - "@vitejs/plugin-react": "^4.7.0", - "@vitejs/plugin-react-swc": "^3.11.0", - "@vitest/browser": "^4.0.18", - "@vitest/browser-playwright": "^4.0.18", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "autoprefixer": "^10.4.27", + "@types/node": "20.19.35", + "@types/react": "19.2.14", + "@types/react-dom": "19.2.3", + "@typescript-eslint/eslint-plugin": "7.18.0", + "@typescript-eslint/parser": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@vitejs/plugin-react": "4.7.0", + "@vitejs/plugin-react-swc": "3.11.0", + "@vitest/browser": "4.0.18", + "@vitest/browser-playwright": "4.0.18", + "@vitest/coverage-v8": "4.0.18", + "@vitest/ui": "4.0.18", + "autoprefixer": "10.4.27", "eslint": "8.57.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "5.2.0", - "glob": "^12.0.0", - "jest": "^29.7.0", - "jest-environment-jsdom": "^30.2.0", - "jest-preset-angular": "^16.1.1", + "glob": "12.0.0", + "jest": "29.7.0", + "jest-environment-jsdom": "30.2.0", + "jest-preset-angular": "16.1.1", "jiti": "2.6.1", - "jsdom": "^26.1.0", - "jsonc-eslint-parser": "^2.4.2", + "jsdom": "26.1.0", + "jsonc-eslint-parser": "2.4.2", "ng-packagr": "21.2.0", - "npm-check-updates": "^19.6.3", + "npm-check-updates": "19.6.3", "nx": "22.5.4", - "playwright": "^1.58.2", - "postcss": "^8.5.6", - "postcss-import": "~14.1.0", - "postcss-preset-env": "~7.8.3", - "postcss-replace": "^2.0.1", - "postcss-url": "~10.1.3", - "prettier": "^3.8.1", - "prettier-plugin-svelte": "^3.5.0", - "rollup": "^4.59.0", - "semantic-release": "^25.0.3", - "svelte": "^4.2.20", - "svelte-check": "^3.8.6", + "playwright": "1.58.2", + "postcss": "8.5.6", + "postcss-import": "14.1.0", + "postcss-preset-env": "7.8.3", + "postcss-replace": "2.0.1", + "postcss-url": "10.1.3", + "prettier": "3.8.1", + "prettier-plugin-svelte": "3.5.0", + "rollup": "4.59.0", + "semantic-release": "25.0.3", + "svelte": "4.2.20", + "svelte-check": "3.8.6", "swc-loader": "0.2.7", "ts-jest": "29.4.6", "ts-node": "10.9.2", "typescript": "5.9.3", - "vite": "~5.4.21", + "vite": "5.4.21", "vite-plugin-dts": "4.5.4", - "vitest": "^4.0.18", - "vitest-browser-react": "^1.0.1", - "vitest-dom": "^0.1.1" + "vitest": "4.0.18", + "vitest-browser-react": "1.0.1", + "vitest-dom": "0.1.1" } }, "node_modules/@abgov/design-tokens": { @@ -586,6 +586,431 @@ } } }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/autoprefixer": { "version": "10.4.24", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", @@ -630,6 +1055,48 @@ "dev": true, "license": "MIT" }, + "node_modules/@angular-devkit/build-angular/node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -684,35 +1151,6 @@ "node": ">= 0.6" } }, - "node_modules/@angular-devkit/build-angular/node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/webpack": { "version": "5.105.2", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", @@ -1026,6 +1464,472 @@ } } }, + "node_modules/@angular/build/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "node_modules/@angular/build/node_modules/vite": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", @@ -1572,153 +2476,593 @@ "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" } }, - "node_modules/@astrojs/react/node_modules/vite": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "node_modules/@astrojs/react/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@astrojs/telemetry": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", - "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", + "node_modules/@astrojs/react/node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "ci-info": "^4.2.0", - "debug": "^4.4.0", - "dlv": "^1.1.3", - "dset": "^3.1.4", - "is-docker": "^3.0.0", - "is-wsl": "^3.1.0", - "which-pm-runs": "^1.1.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" + "node": ">=18" } }, - "node_modules/@astrojs/yaml2ts": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.2.tgz", - "integrity": "sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==", - "dev": true, + "node_modules/@astrojs/react/node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "yaml": "^2.5.0" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "node_modules/@astrojs/react/node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "node_modules/@astrojs/react/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "node_modules/@astrojs/react/node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@astrojs/react/node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, + "node_modules/@astrojs/react/node_modules/vite": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", + "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^4.2.0", + "debug": "^4.4.0", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "is-docker": "^3.0.0", + "is-wsl": "^3.1.0", + "which-pm-runs": "^1.1.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@astrojs/yaml2ts": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.2.tgz", + "integrity": "sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yaml": "^2.5.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, "engines": { "node": ">=6.9.0" }, @@ -4388,422 +5732,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", @@ -19218,6 +20146,406 @@ "sharp": "^0.34.0" } }, + "node_modules/astro/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/astro/node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", @@ -19268,6 +20596,46 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/astro/node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "node_modules/astro/node_modules/mdn-data": { "version": "2.12.2", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", @@ -24516,47 +25884,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" - } - }, "node_modules/esbuild-wasm": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.27.3.tgz", @@ -31080,6 +32407,431 @@ "typescript": ">=5.5" } }, + "node_modules/jest-preset-angular/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/jest-preset-angular/node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/jest-preset-angular/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", @@ -31093,6 +32845,48 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-preset-angular/node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "node_modules/jest-preset-angular/node_modules/pretty-format": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", @@ -35074,6 +36868,431 @@ } } }, + "node_modules/ng-packagr/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/ng-packagr/node_modules/commander": { "version": "14.0.3", "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", @@ -35084,6 +37303,47 @@ "node": ">=20" } }, + "node_modules/ng-packagr/node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "node_modules/nlcst-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", @@ -39415,9 +41675,9 @@ } }, "node_modules/postcss": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "funding": [ { "type": "opencollective", @@ -40825,9 +43085,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.5.1.tgz", - "integrity": "sha512-65+fr5+cgIKWKiqM1Doum4uX6bY8iFCdztvvp2RcF+AJoieaw9kJOFMNcJo/bkmKYsxFaM9OsVZK/gWauG/5mg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.5.0.tgz", + "integrity": "sha512-2lLO/7EupnjO/95t+XZesXs8Bf3nYLIDfCo270h5QWbj/vjLqmrQ1LiRk9LPggxSDsnVYfehamZNf+rgQYApZg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -45067,13 +47327,13 @@ } }, "node_modules/style-dictionary": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-5.3.3.tgz", - "integrity": "sha512-NSeYkVYttoko/TPiH82F6EewyL3eDEVQPLnh8ofRgA0EG5kYEkcMhu5/Wqkfpfpyq1tlPP1t1yePnBZm11sA/Q==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-5.3.2.tgz", + "integrity": "sha512-A/HPAdqyKWZxsiclqiq++fckbrkJ8a8+LbHJeieI2UYiZNHkNqLTa1jE3sZycxFPbPYQmQnu6u9vq5TH4aWjrQ==", "license": "Apache-2.0", "dependencies": { "@bundled-es-modules/deepmerge": "^4.3.1", - "@bundled-es-modules/glob": "^13.0.6", + "@bundled-es-modules/glob": "^13.0.3", "@bundled-es-modules/memfs": "^4.17.0", "@zip.js/zip.js": "^2.7.44", "chalk": "^5.3.0", @@ -47667,6 +49927,472 @@ } } }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "node_modules/vitefu": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", @@ -47870,6 +50596,472 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/vitest/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vitest/node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "node_modules/vitest/node_modules/vite": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", diff --git a/package.json b/package.json index d5f44ba612..34e9847d53 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,9 @@ "validate": "npm run build && npm run lint && vitest --run" }, "devDependencies": { - "@abgov/design-tokens": "^1.10.0", - "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.1.1", - "@abgov/nx-release": "^12.0.0", + "@abgov/design-tokens": "1.10.0", + "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@2.1.1", + "@abgov/nx-release": "12.0.0", "@angular-devkit/build-angular": "21.2.0", "@angular-devkit/core": "21.2.0", "@angular-devkit/schematics": "21.2.0", @@ -47,10 +47,10 @@ "@angular/cli": "21.2.0", "@angular/compiler-cli": "21.2.0", "@angular/language-service": "21.2.0", - "@astrojs/check": "^0.9.6", - "@babel/core": "^7.29.0", - "@babel/preset-react": "^7.28.5", - "@faker-js/faker": "^8.4.1", + "@astrojs/check": "0.9.6", + "@babel/core": "7.29.0", + "@babel/preset-react": "7.28.5", + "@faker-js/faker": "8.4.1", "@nx/angular": "22.5.4", "@nx/eslint": "22.5.4", "@nx/eslint-plugin": "22.5.4", @@ -62,66 +62,66 @@ "@nx/web": "22.5.4", "@nx/workspace": "22.5.4", "@schematics/angular": "21.2.0", - "@sveltejs/vite-plugin-svelte": "^3.1.2", + "@sveltejs/vite-plugin-svelte": "3.1.2", "@swc-node/register": "1.11.1", "@swc/cli": "0.8.0", "@swc/core": "1.15.17", - "@testing-library/dom": "^10.4.1", - "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^16.3.2", - "@testing-library/svelte": "^4.2.3", - "@testing-library/user-event": "^14.6.1", + "@testing-library/dom": "10.4.1", + "@testing-library/jest-dom": "6.9.1", + "@testing-library/react": "16.3.2", + "@testing-library/svelte": "4.2.3", + "@testing-library/user-event": "14.6.1", "@types/jest": "29.5.14", - "@types/node": "^20.19.35", - "@types/react": "^19.2.14", - "@types/react-dom": "^19.2.3", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", - "@typescript-eslint/utils": "^7.18.0", - "@vitejs/plugin-react": "^4.7.0", - "@vitejs/plugin-react-swc": "^3.11.0", - "@vitest/browser": "^4.0.18", - "@vitest/browser-playwright": "^4.0.18", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "autoprefixer": "^10.4.27", + "@types/node": "20.19.35", + "@types/react": "19.2.14", + "@types/react-dom": "19.2.3", + "@typescript-eslint/eslint-plugin": "7.18.0", + "@typescript-eslint/parser": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@vitejs/plugin-react": "4.7.0", + "@vitejs/plugin-react-swc": "3.11.0", + "@vitest/browser": "4.0.18", + "@vitest/browser-playwright": "4.0.18", + "@vitest/coverage-v8": "4.0.18", + "@vitest/ui": "4.0.18", + "autoprefixer": "10.4.27", "eslint": "8.57.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "5.2.0", - "glob": "^12.0.0", - "jest": "^29.7.0", - "jest-environment-jsdom": "^30.2.0", - "jest-preset-angular": "^16.1.1", + "glob": "12.0.0", + "jest": "29.7.0", + "jest-environment-jsdom": "30.2.0", + "jest-preset-angular": "16.1.1", "jiti": "2.6.1", - "jsdom": "^26.1.0", - "jsonc-eslint-parser": "^2.4.2", + "jsdom": "26.1.0", + "jsonc-eslint-parser": "2.4.2", "ng-packagr": "21.2.0", - "npm-check-updates": "^19.6.3", + "npm-check-updates": "19.6.3", "nx": "22.5.4", - "playwright": "^1.58.2", - "postcss": "^8.5.6", - "postcss-import": "~14.1.0", - "postcss-preset-env": "~7.8.3", - "postcss-replace": "^2.0.1", - "postcss-url": "~10.1.3", - "prettier": "^3.8.1", - "prettier-plugin-svelte": "^3.5.0", - "rollup": "^4.59.0", - "semantic-release": "^25.0.3", - "svelte": "^4.2.20", - "svelte-check": "^3.8.6", + "playwright": "1.58.2", + "postcss": "8.5.6", + "postcss-import": "14.1.0", + "postcss-preset-env": "7.8.3", + "postcss-replace": "2.0.1", + "postcss-url": "10.1.3", + "prettier": "3.8.1", + "prettier-plugin-svelte": "3.5.0", + "rollup": "4.59.0", + "semantic-release": "25.0.3", + "svelte": "4.2.20", + "svelte-check": "3.8.6", "swc-loader": "0.2.7", "ts-jest": "29.4.6", "ts-node": "10.9.2", "typescript": "5.9.3", - "vite": "~5.4.21", + "vite": "5.4.21", "vite-plugin-dts": "4.5.4", - "vitest": "^4.0.18", - "vitest-browser-react": "^1.0.1", - "vitest-dom": "^0.1.1" + "vitest": "4.0.18", + "vitest-browser-react": "1.0.1", + "vitest-dom": "0.1.1" }, "dependencies": { "@angular/animations": "21.2.0", @@ -132,26 +132,26 @@ "@angular/platform-browser": "21.2.0", "@angular/platform-browser-dynamic": "21.2.0", "@angular/router": "21.2.0", - "@astrojs/mdx": "^4.3.13", - "@astrojs/react": "^4.4.2", + "@astrojs/mdx": "4.3.13", + "@astrojs/react": "4.4.2", "@swc/helpers": "0.5.19", - "astro": "^5.18.0", - "date-fns": "^3.6.0", - "dompurify": "^3.3.2", - "flexsearch": "^0.8.212", - "highlight.js": "^11.11.1", - "react": "^19.2.4", - "react-dom": "^19.2.4", + "astro": "5.18.0", + "date-fns": "3.6.0", + "dompurify": "3.3.2", + "flexsearch": "0.8.212", + "highlight.js": "11.11.1", + "react": "19.2.4", + "react-dom": "19.2.4", "react-router-dom": "6.30.3", - "rxjs": "~7.8.2", - "style-dictionary": "^5.3.2", - "svelte-routing": "^2.13.0", - "tslib": "^2.8.1", + "rxjs": "7.8.2", + "style-dictionary": "5.3.2", + "svelte-routing": "2.13.0", + "tslib": "2.8.1", "zone.js": "0.16.1" }, "overrides": { - "glob": "^12.0.0", - "esbuild": "^0.25.0" + "glob": "12.0.0", + "esbuild": "0.25.0" }, "nx": { "includedScripts": [] From 183d34aa889fcd9586deb7812a601cad7c8eb88d Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Mon, 23 Feb 2026 22:00:51 -0700 Subject: [PATCH 038/103] feat(docs): enhance search with tokens, pages, and improved UX Search index expansion: - Add 218 individual design tokens as searchable entries - Add 13 token category entries (color, spacing, typography, etc.) - Add 3 get started pages (index, developers, designers) - Total searchable entries: 384 (was 150) Filter commands: - Add /token (/t) filter for design tokens - Add /get-started (/g) filter for get started pages - Show all items of filter type when filter active with empty query - Dynamic placeholder text based on active filter UI improvements: - Replace CSS shape icons with goa-icon components (shapes, browsers, code-slash, document-text) - Match search page input styling to home page hero search - Simplify filter chip labels to lowercase (components, examples, tokens, get started) Token search behavior: - Individual tokens link to /tokens?search={token-name} - Token categories link to /tokens?search={category} - Breadcrumbs show "Design Tokens > {category}" for individual tokens --- docs/public/search-index.json | 8536 ++++++++++++----- docs/search-index.json | 6881 ++++++++++++- docs/src/components/CardLite.astro | 37 +- docs/src/components/CodeSnippet.tsx | 1 + docs/src/components/ComponentsGrid.tsx | 113 +- docs/src/components/ConfigurationPreview.tsx | 93 +- docs/src/components/ExamplesGrid.tsx | 143 +- docs/src/components/TokensGrid.tsx | 412 +- .../components/search/SearchEmptyState.tsx | 46 +- .../components/search/SearchFilterHints.tsx | 15 +- docs/src/components/search/SearchInput.tsx | 15 +- docs/src/components/search/SearchModal.tsx | 22 +- docs/src/components/search/SearchPage.tsx | 129 +- .../components/search/SearchResultItem.tsx | 121 +- docs/src/components/search/SearchResults.tsx | 29 +- docs/src/components/search/search-utils.ts | 53 + docs/src/components/search/search.css | 58 +- docs/src/components/search/useSearch.ts | 157 +- .../src/components/search/useSearchHistory.ts | 2 +- docs/src/layouts/ComponentPageLayout.astro | 1 - docs/src/layouts/ExamplesPageLayout.astro | 1 - docs/src/layouts/TokensLayout.astro | 1 - docs/src/lib/tokens.ts | 154 +- docs/src/pages/index.astro | 38 +- docs/src/pages/tokens/index.astro | 2 +- scripts/indexdocs.ts | 394 +- 26 files changed, 14790 insertions(+), 2664 deletions(-) create mode 100644 docs/src/components/search/search-utils.ts diff --git a/docs/public/search-index.json b/docs/public/search-index.json index c87843d61f..995cf35e9a 100644 --- a/docs/public/search-index.json +++ b/docs/public/search-index.json @@ -1,2700 +1,6882 @@ [ { + "id": "work-side-menu", + "title": "Work Side Menu", + "name": "Work Side Menu", + "description": "Side menu variant for worker applications.", + "content": "", + "component": "work-side-menu", + "filePath": "docs/src/content/components/work-side-menu.mdx", + "urlPath": "components/work-side-menu", + "tags": [], "type": "component", - "id": "accordion", - "name": "Accordion", - "description": "Let users show and hide sections of related content on a page.", + "slug": "work-side-menu", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "tooltip", + "title": "Tooltip", + "name": "Tooltip", + "description": "A small popover that displays more information about an item.", + "content": "", + "component": "tooltip", + "filePath": "docs/src/content/components/tooltip.mdx", + "urlPath": "components/tooltip", + "tags": [], + "type": "component", + "slug": "tooltip", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "text", + "title": "Text", + "name": "Text", + "description": "Provides consistent sizing, spacing, and colour to written content.", + "content": "", + "component": "text", + "filePath": "docs/src/content/components/text.mdx", + "urlPath": "components/text", + "tags": [], + "type": "component", + "slug": "text", + "status": "stable", + "category": "content-layout" + }, + { + "id": "text-area", + "title": "Text area", + "name": "Text area", + "description": "A multi-line field where users can input and edit text.", + "content": "", + "component": "text-area", + "filePath": "docs/src/content/components/text-area.mdx", + "urlPath": "components/text-area", + "tags": [], + "type": "component", + "slug": "text-area", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "temporary-notification", + "title": "Temporary notification", + "name": "Temporary notification", + "description": "A notification that appears at the bottom of the screen.", + "content": "", + "component": "temporary-notification", + "filePath": "docs/src/content/components/temporary-notification.mdx", + "urlPath": "components/temporary-notification", + "tags": [], + "type": "component", + "slug": "temporary-notification", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "tabs", + "title": "Tabs", + "name": "Tabs", + "description": "Let users navigate between related sections of content, displaying one section at a time.", + "content": "", + "component": "tabs", + "filePath": "docs/src/content/components/tabs.mdx", + "urlPath": "components/tabs", + "tags": [], + "type": "component", + "slug": "tabs", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "table", + "title": "Table", + "name": "Table", + "description": "A set of structured data that is easy for a user to scan, examine, and compare.", + "content": "", + "component": "table", + "filePath": "docs/src/content/components/table.mdx", + "urlPath": "components/table", + "tags": [], + "type": "component", + "slug": "table", + "status": "stable", + "category": "content-layout" + }, + { + "id": "tab", + "title": "Tab", + "name": "Tab", + "description": "Individual tab within a tabs component.", + "content": "", + "component": "tab", + "filePath": "docs/src/content/components/tab.mdx", + "urlPath": "components/tab", + "tags": [], + "type": "component", + "slug": "tab", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "spinner", + "title": "Spinner", + "name": "Spinner", + "description": "Loading indicator for async operations.", + "content": "", + "component": "spinner", + "filePath": "docs/src/content/components/spinner.mdx", + "urlPath": "components/spinner", + "tags": [], + "type": "component", + "slug": "spinner", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "spacer", + "title": "Spacer", + "name": "Spacer", + "description": "Negative area between the components and the interface.", + "content": "", + "component": "spacer", + "filePath": "docs/src/content/components/spacer.mdx", + "urlPath": "components/spacer", + "tags": [], + "type": "component", + "slug": "spacer", + "status": "stable", + "category": "utilities" + }, + { + "id": "skeleton", + "title": "Skeleton loader", + "name": "Skeleton loader", + "description": "Provide visual feedback to users while loading a content heavy page or page element.", + "content": "", + "component": "skeleton", + "filePath": "docs/src/content/components/skeleton.mdx", + "urlPath": "components/skeleton", + "tags": [], + "type": "component", + "slug": "skeleton", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "side-menu", + "title": "Side menu", + "name": "Side menu", + "description": "A side navigation that helps the user navigate between pages.", + "content": "", + "component": "side-menu", + "filePath": "docs/src/content/components/side-menu.mdx", + "urlPath": "components/side-menu", + "tags": [], + "type": "component", + "slug": "side-menu", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "side-menu-heading", + "title": "Side Menu Heading", + "name": "Side Menu Heading", + "description": "Section heading in side menu.", + "content": "", + "component": "side-menu-heading", + "filePath": "docs/src/content/components/side-menu-heading.mdx", + "urlPath": "components/side-menu-heading", + "tags": [], + "type": "component", + "slug": "side-menu-heading", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "side-menu-group", + "title": "Side Menu Group", + "name": "Side Menu Group", + "description": "Group of related side menu items.", + "content": "", + "component": "side-menu-group", + "filePath": "docs/src/content/components/side-menu-group.mdx", + "urlPath": "components/side-menu-group", + "tags": [], + "type": "component", + "slug": "side-menu-group", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "scrollable", + "title": "Scrollable", + "name": "Scrollable", + "description": "Container with overflow scrolling.", + "content": "", + "component": "scrollable", + "filePath": "docs/src/content/components/scrollable.mdx", + "urlPath": "components/scrollable", + "tags": [], + "type": "component", + "slug": "scrollable", + "status": "stable", + "category": "utilities" + }, + { + "id": "radio-item", + "title": "Radio Item", + "name": "Radio Item", + "description": "Individual radio option within a group.", + "content": "", + "component": "radio-item", + "filePath": "docs/src/content/components/radio-item.mdx", + "urlPath": "components/radio-item", + "tags": [], + "type": "component", + "slug": "radio-item", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "radio-group", + "title": "Radio", + "name": "Radio", + "description": "Allow users to select one option from a set.", + "content": "", + "component": "radio-group", + "filePath": "docs/src/content/components/radio-group.mdx", + "urlPath": "components/radio-group", + "tags": [], + "type": "component", + "slug": "radio-group", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "popover", + "title": "Popover", + "name": "Popover", + "description": "A small overlay that opens on demand, used in other components.", + "content": "", + "component": "popover", + "filePath": "docs/src/content/components/popover.mdx", + "urlPath": "components/popover", + "tags": [], + "type": "component", + "slug": "popover", + "status": "stable", + "category": "content-layout" + }, + { + "id": "pagination", + "title": "Pagination", + "name": "Pagination", + "description": "Help users navigation between multiple pages or screens as part of a set.", + "content": "", + "component": "pagination", + "filePath": "docs/src/content/components/pagination.mdx", + "urlPath": "components/pagination", + "tags": [], + "type": "component", + "slug": "pagination", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "pages", + "title": "Pages", + "name": "Pages", + "description": "Container for paginated content views.", + "content": "", + "component": "pages", + "filePath": "docs/src/content/components/pages.mdx", + "urlPath": "components/pages", + "tags": [], + "type": "component", + "slug": "pages", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "page-block", + "title": "Page Block", + "name": "Page Block", + "description": "Full-width section with optional background.", + "content": "", + "component": "page-block", + "filePath": "docs/src/content/components/page-block.mdx", + "urlPath": "components/page-block", + "tags": [], + "type": "component", + "slug": "page-block", + "status": "stable", + "category": "content-layout" + }, + { + "id": "notification", + "title": "Notification banner", + "name": "Notification banner", + "description": "Display important page level information or notifications.", + "content": "", + "component": "notification", + "filePath": "docs/src/content/components/notification.mdx", + "urlPath": "components/notification", + "tags": [], + "type": "component", + "slug": "notification", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "modal", + "title": "Modal", + "name": "Modal", + "description": "An overlay that appears in front of all other content, and requires a user to take an action before continuing.", + "content": "", + "component": "modal", + "filePath": "docs/src/content/components/modal.mdx", + "urlPath": "components/modal", + "tags": [], + "type": "component", + "slug": "modal", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "microsite-header", + "title": "Microsite header", + "name": "Microsite header", + "description": "Communicate what stage the service is at, connect to Alberta.ca, and gather feedback on your service.", + "content": "", + "component": "microsite-header", + "filePath": "docs/src/content/components/microsite-header.mdx", + "urlPath": "components/microsite-header", + "tags": [], + "type": "component", + "slug": "microsite-header", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "menu-button", + "title": "Menu button", + "name": "Menu button", + "description": "A button with more than one action.", + "content": "", + "component": "menu-button", + "filePath": "docs/src/content/components/menu-button.mdx", + "urlPath": "components/menu-button", + "tags": [], + "type": "component", + "slug": "menu-button", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "link", + "title": "Link", + "name": "Link", + "description": "Wraps an anchor element to add icons or margins.", + "content": "", + "component": "link", + "filePath": "docs/src/content/components/link.mdx", + "urlPath": "components/link", + "tags": [], + "type": "component", + "slug": "link", + "status": "stable", + "category": "utilities" + }, + { + "id": "link-button", + "title": "Link Button", + "name": "Link Button", + "description": "Button styled as a link for secondary actions.", + "content": "", + "component": "link-button", + "filePath": "docs/src/content/components/link-button.mdx", + "urlPath": "components/link-button", + "tags": [], + "type": "component", + "slug": "link-button", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "linear-progress", + "title": "Linear progress indicator", + "name": "Linear progress indicator", + "description": "Provide visual feedback to users while loading.", + "content": "", + "component": "linear-progress", + "filePath": "docs/src/content/components/linear-progress.mdx", + "urlPath": "components/linear-progress", + "tags": [], + "type": "component", + "slug": "linear-progress", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "input", + "title": "Input", + "name": "Input", + "description": "A single-line field where users can input and edit text.", + "content": "Capture text input from users in forms.\n\n## When to use\n\nUse Input when you need users to enter:\n- Short text answers (names, email addresses)\n- Numbers (phone numbers, quantities)\n- Dates and times\n- Search queries\n\n## When not to use\n\nDon't use Input when:\n- Users need to enter multiple lines of text (use Textarea)\n- Users need to select from predefined options (use Dropdown or Radio)\n- The input requires complex formatting (consider specialized components)\n\n## Types\n\nInput supports multiple HTML input types:\n\n- **text** - General text entry (default)\n- **email** - Email addresses with validation\n- **password** - Masked password entry\n- **number** - Numeric values with stepper\n- **date** - Date picker\n- **tel** - Phone numbers\n- **search** - Search with clear button\n\n## States\n\n- **Default** - Normal interactive state\n- **Focused** - When the input has keyboard focus\n- **Error** - When validation fails\n- **Disabled** - When input is not available\n- **Read-only** - When showing value without editing\n", + "component": "input", + "filePath": "docs/src/content/components/input.mdx", + "urlPath": "components/input", + "tags": [], + "type": "component", + "slug": "input", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "icon", + "title": "Icons", + "name": "Icons", + "description": "A simple and universal graphic symbol representing an action, object, or concept to help guide the user.", + "content": "", + "component": "icon", + "filePath": "docs/src/content/components/icon.mdx", + "urlPath": "components/icon", + "tags": [], + "type": "component", + "slug": "icon", + "status": "stable", + "category": "utilities" + }, + { + "id": "icon-button", + "title": "Icon button", + "name": "Icon button", + "description": "A compact button with an icon and no text.", + "content": "", + "component": "icon-button", + "filePath": "docs/src/content/components/icon-button.mdx", + "urlPath": "components/icon-button", + "tags": [], + "type": "component", + "slug": "icon-button", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "hero-banner", + "title": "Hero banner", + "name": "Hero banner", + "description": "A visual band of text, including an image and a call to action.", + "content": "", + "component": "hero-banner", + "filePath": "docs/src/content/components/hero-banner.mdx", + "urlPath": "components/hero-banner", + "tags": [], + "type": "component", + "slug": "hero-banner", + "status": "stable", + "category": "content-layout" + }, + { + "id": "grid", + "title": "Grid", + "name": "Grid", + "description": "Arrange a number of components into a responsive grid pattern.", + "content": "", + "component": "grid", + "filePath": "docs/src/content/components/grid.mdx", + "urlPath": "components/grid", + "tags": [], + "type": "component", + "slug": "grid", + "status": "stable", + "category": "utilities" + }, + { + "id": "form", + "title": "Form", + "name": "Form", + "description": "Container for form inputs and validation.", + "content": "", + "component": "form", + "filePath": "docs/src/content/components/form.mdx", + "urlPath": "components/form", + "tags": [], + "type": "component", + "slug": "form", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "form-stepper", + "title": "Form stepper", + "name": "Form stepper", + "description": "Provides a visual representation of a form through a series of steps.", + "content": "", + "component": "form-stepper", + "filePath": "docs/src/content/components/form-stepper.mdx", + "urlPath": "components/form-stepper", + "tags": [], + "type": "component", + "slug": "form-stepper", + "status": "deprecated", + "category": "structure-and-navigation" + }, + { + "id": "form-step", + "title": "Form Step", + "name": "Form Step", + "description": "Individual step in a multi-step form.", + "content": "", + "component": "form-step", + "filePath": "docs/src/content/components/form-step.mdx", + "urlPath": "components/form-step", + "tags": [], + "type": "component", + "slug": "form-step", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "form-item", + "title": "Form item", + "name": "Form item", + "description": "Wraps an input control with a text label, requirement label, helper text, and error text.", + "content": "", + "component": "form-item", + "filePath": "docs/src/content/components/form-item.mdx", + "urlPath": "components/form-item", + "tags": [], + "type": "component", + "slug": "form-item", + "status": "stable", + "category": "utilities" + }, + { + "id": "footer", + "title": "Footer", + "name": "Footer", + "description": "Provides information related your service at the bottom of every page.", + "content": "", + "component": "footer", + "filePath": "docs/src/content/components/footer.mdx", + "urlPath": "components/footer", + "tags": [], + "type": "component", + "slug": "footer", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "footer-nav-section", + "title": "Footer Nav Section", + "name": "Footer Nav Section", + "description": "Navigation links section in footer.", + "content": "", + "component": "footer-nav-section", + "filePath": "docs/src/content/components/footer-nav-section.mdx", + "urlPath": "components/footer-nav-section", + "tags": [], + "type": "component", + "slug": "footer-nav-section", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "footer-meta-section", + "title": "Footer Meta Section", + "name": "Footer Meta Section", + "description": "Copyright and legal links in footer.", + "content": "", + "component": "footer-meta-section", + "filePath": "docs/src/content/components/footer-meta-section.mdx", + "urlPath": "components/footer-meta-section", + "tags": [], + "type": "component", + "slug": "footer-meta-section", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "focus-trap", + "title": "Focus Trap", + "name": "Focus Trap", + "description": "Trap focus within a container for accessibility.", + "content": "", + "component": "focus-trap", + "filePath": "docs/src/content/components/focus-trap.mdx", + "urlPath": "components/focus-trap", + "tags": [], + "type": "component", + "slug": "focus-trap", + "status": "stable", + "category": "utilities" + }, + { + "id": "filter-chip", + "title": "Filter chip", + "name": "Filter chip", + "description": "Allow the user to enter information, filter content, and make selections.", + "content": "", + "component": "filter-chip", + "filePath": "docs/src/content/components/filter-chip.mdx", + "urlPath": "components/filter-chip", + "tags": [], + "type": "component", + "slug": "filter-chip", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "file-upload-input", + "title": "File uploader", + "name": "File uploader", + "description": "Help users select and upload a file.", + "content": "", + "component": "file-upload-input", + "filePath": "docs/src/content/components/file-upload-input.mdx", + "urlPath": "components/file-upload-input", + "tags": [], + "type": "component", + "slug": "file-upload-input", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "file-upload-card", + "title": "File Upload Card", + "name": "File Upload Card", + "description": "Display uploaded file with actions.", + "content": "", + "component": "file-upload-card", + "filePath": "docs/src/content/components/file-upload-card.mdx", + "urlPath": "components/file-upload-card", + "tags": [], + "type": "component", + "slug": "file-upload-card", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "dropdown", + "title": "Dropdown", + "name": "Dropdown", + "description": "Present a list of options to the user to select from.", + "content": "", + "component": "dropdown", + "filePath": "docs/src/content/components/dropdown.mdx", + "urlPath": "components/dropdown", + "tags": [], + "type": "component", + "slug": "dropdown", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "drawer", + "title": "Drawer", + "name": "Drawer", + "description": "A panel that slides in from the side of the screen to display additional content or actions without navigating away from the current view.", + "content": "", + "component": "drawer", + "filePath": "docs/src/content/components/drawer.mdx", + "urlPath": "components/drawer", + "tags": [], + "type": "component", + "slug": "drawer", + "status": "stable", + "category": "content-layout" + }, + { + "id": "divider", + "title": "Divider", + "name": "Divider", + "description": "Indicate a separation of layout, or to distinguish large chunks of information on a page.", + "content": "", + "component": "divider", + "filePath": "docs/src/content/components/divider.mdx", + "urlPath": "components/divider", + "tags": [], + "type": "component", + "slug": "divider", + "status": "stable", + "category": "utilities" + }, + { + "id": "details", + "title": "Details", + "name": "Details", + "description": "Let users reveal more detailed information when they need it.", + "content": "", + "component": "details", + "filePath": "docs/src/content/components/details.mdx", + "urlPath": "components/details", + "tags": [], + "type": "component", + "slug": "details", + "status": "stable", + "category": "content-layout" + }, + { + "id": "date-picker", + "title": "Date picker", + "name": "Date picker", + "description": "Lets users select a date through a calendar without the need to manually type it in a field.", + "content": "", + "component": "date-picker", + "filePath": "docs/src/content/components/date-picker.mdx", + "urlPath": "components/date-picker", + "tags": [], + "type": "component", + "slug": "date-picker", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "data-grid", + "title": "Data Grid", + "name": "Data Grid", + "description": "Advanced table with sorting and selection.", + "content": "", + "component": "data-grid", + "filePath": "docs/src/content/components/data-grid.mdx", + "urlPath": "components/data-grid", + "tags": [], + "type": "component", + "slug": "data-grid", + "status": "stable", + "category": "content-layout" + }, + { + "id": "container", + "title": "Container", + "name": "Container", + "description": "Group information, create hierarchy, and show related information.", + "content": "", + "component": "container", + "filePath": "docs/src/content/components/container.mdx", + "urlPath": "components/container", + "tags": [], + "type": "component", + "slug": "container", + "status": "stable", + "category": "content-layout" + }, + { + "id": "circular-progress", + "title": "Circular progress indicator", + "name": "Circular progress indicator", + "description": "Provide feedback of progress to users while loading.", + "content": "", + "component": "circular-progress", + "filePath": "docs/src/content/components/circular-progress.mdx", + "urlPath": "components/circular-progress", + "tags": [], + "type": "component", + "slug": "circular-progress", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "chip", + "title": "Chip", + "name": "Chip", + "description": "Compact element for labels, tags, or selections.", + "content": "", + "component": "chip", + "filePath": "docs/src/content/components/chip.mdx", + "urlPath": "components/chip", + "tags": [], + "type": "component", + "slug": "chip", + "status": "deprecated", + "category": "inputs-and-actions" + }, + { + "id": "checkbox", + "title": "Checkbox", + "name": "Checkbox", + "description": "Let the user select one or more options.", + "content": "", + "component": "checkbox", + "filePath": "docs/src/content/components/checkbox.mdx", + "urlPath": "components/checkbox", + "tags": [], + "type": "component", + "slug": "checkbox", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "checkbox-list", + "title": "Checkbox list", + "name": "Checkbox list", + "description": "A multiple selection input.", + "content": "", + "component": "checkbox-list", + "filePath": "docs/src/content/components/checkbox-list.mdx", + "urlPath": "components/checkbox-list", + "tags": [], + "type": "component", + "slug": "checkbox-list", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "card", + "title": "Card", + "name": "Card", + "description": "Container for grouped related content.", + "content": "", + "component": "card", + "filePath": "docs/src/content/components/card.mdx", + "urlPath": "components/card", + "tags": [], + "type": "component", + "slug": "card", + "status": "stable", + "category": "content-layout" + }, + { + "id": "card-image", + "title": "Card Image", + "name": "Card Image", + "description": "Image display within a card.", + "content": "", + "component": "card-image", + "filePath": "docs/src/content/components/card-image.mdx", + "urlPath": "components/card-image", + "tags": [], + "type": "component", + "slug": "card-image", + "status": "stable", + "category": "content-layout" + }, + { + "id": "card-group", + "title": "Card Group", + "name": "Card Group", + "description": "Layout for multiple cards.", + "content": "", + "component": "card-group", + "filePath": "docs/src/content/components/card-group.mdx", + "urlPath": "components/card-group", + "tags": [], + "type": "component", + "slug": "card-group", + "status": "stable", + "category": "content-layout" + }, + { + "id": "card-content", + "title": "Card Content", + "name": "Card Content", + "description": "Content area within a card.", + "content": "", + "component": "card-content", + "filePath": "docs/src/content/components/card-content.mdx", + "urlPath": "components/card-content", + "tags": [], + "type": "component", + "slug": "card-content", + "status": "stable", + "category": "content-layout" + }, + { + "id": "card-actions", + "title": "Card Actions", + "name": "Card Actions", + "description": "Action buttons within a card footer.", + "content": "", + "component": "card-actions", + "filePath": "docs/src/content/components/card-actions.mdx", + "urlPath": "components/card-actions", + "tags": [], + "type": "component", + "slug": "card-actions", + "status": "stable", + "category": "content-layout" + }, + { + "id": "callout", + "title": "Callout", + "name": "Callout", + "description": "Communicate important information through a strong visual emphasis.", + "content": "", + "component": "callout", + "filePath": "docs/src/content/components/callout.mdx", + "urlPath": "components/callout", + "tags": [], + "type": "component", + "slug": "callout", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "calendar", + "title": "Calendar", + "name": "Calendar", + "description": "Visual calendar for date selection.", + "content": "", + "component": "calendar", + "filePath": "docs/src/content/components/calendar.mdx", + "urlPath": "components/calendar", + "tags": [], + "type": "component", + "slug": "calendar", + "status": "stable", + "category": "utilities" + }, + { + "id": "button", + "title": "Button", + "name": "Button", + "description": "Carry out an important action or navigate to another page.", + "content": "", + "component": "button", + "filePath": "docs/src/content/components/button.mdx", + "urlPath": "components/button", + "tags": [], + "type": "component", + "slug": "button", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "button-group", + "title": "Button group", + "name": "Button group", + "description": "Display multiple related actions stacked or in a horizontal row to help with arrangement and spacing.", + "content": "", + "component": "button-group", + "filePath": "docs/src/content/components/button-group.mdx", + "urlPath": "components/button-group", + "tags": [], + "type": "component", + "slug": "button-group", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "block", + "title": "Block", + "name": "Block", + "description": "Group components into a block with consistent space between.", + "content": "", + "component": "block", + "filePath": "docs/src/content/components/block.mdx", + "urlPath": "components/block", + "tags": [], + "type": "component", + "slug": "block", + "status": "stable", + "category": "utilities" + }, + { + "id": "badge", + "title": "Badge", + "name": "Badge", + "description": "Small labels which hold small amounts of information, system feedback, or states.", + "content": "", + "component": "badge", + "filePath": "docs/src/content/components/badge.mdx", + "urlPath": "components/badge", + "tags": [], + "type": "component", + "slug": "badge", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "app-header", + "title": "Header", + "name": "Header", + "description": "Provide structure to help users find their way around the service.", + "content": "", + "component": "app-header", + "filePath": "docs/src/content/components/app-header.mdx", + "urlPath": "components/app-header", + "tags": [], + "type": "component", + "slug": "app-header", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "app-header-menu", + "title": "App Header Menu", + "name": "App Header Menu", + "description": "Menu items within the app header.", + "content": "", + "component": "app-header-menu", + "filePath": "docs/src/content/components/app-header-menu.mdx", + "urlPath": "components/app-header-menu", + "tags": [], + "type": "component", + "slug": "app-header-menu", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "accordion", + "title": "Accordion", + "name": "Accordion", + "description": "Let users show and hide sections of related content on a page.", + "content": "", + "component": "accordion", + "filePath": "docs/src/content/components/accordion.mdx", + "urlPath": "components/accordion", + "tags": [], + "type": "component", + "slug": "accordion", + "status": "stable", + "category": "content-layout" + }, + { + "id": "example-warn-a-user-of-a-deadline", + "title": "Warn a user of a deadline", + "description": "Use a modal with important callout styling to warn users about time-sensitive deadlines that could affect their submission or action. ", + "content": "Use a modal with important callout styling to warn users about time-sensitive deadlines that could affect their submission or action.\n\n## When to use\n\nUse this pattern when:\n- Users are about to take an action with a time constraint\n- Missing a deadline could have significant consequences\n- The warning requires acknowledgment before proceeding\n\n## Considerations\n\n- Be specific about the deadline (time, date, timezone)\n- Explain the consequences of missing the deadline\n- Provide a clear acknowledgment action\n- Use the \"important\" callout variant for urgency\n- Keep the message concise but informative\n", + "component": "", + "filePath": "docs/src/content/examples/warn-a-user-of-a-deadline/index.mdx", + "urlPath": "examples/warn-a-user-of-a-deadline", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "warn-a-user-of-a-deadline", + "status": "published", + "categories": [] + }, + { + "id": "example-type-to-create-a-new-filter", + "title": "Type to create a new filter", + "description": "Allow users to type custom filter values and create filter chips by pressing Enter, with the ability to remove chips using Backspace or by clicking them. ", + "content": "Allow users to type custom filter values and create filter chips by pressing Enter, with the ability to remove chips using Backspace or by clicking them.\n\n## When to use\n\nUse this pattern when:\n- Users need to create custom filter values not from a predefined list\n- Free-form text filtering is appropriate for the data\n- Users may want to quickly add multiple related filters\n\n## Considerations\n\n- Clear the input after a chip is created\n- Allow Backspace to delete the last chip when the input is empty\n- Provide visual feedback as chips are added\n- Consider input validation before creating chips\n- Show chips inline with the input for clear association\n", + "component": "", + "filePath": "docs/src/content/examples/type-to-create-a-new-filter/index.mdx", + "urlPath": "examples/type-to-create-a-new-filter", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "type-to-create-a-new-filter", + "status": "published", + "categories": [] + }, + { + "id": "example-task-list-page", + "title": "Task list page", + "description": "A task list page provides a structure for multi-step services, showing users their progress through a series of tasks with clear status indicators. ", + "content": "A task list page provides a structure for multi-step services, showing users their progress through a series of tasks with clear status indicators.\n\n## When to use\n\nUse this pattern when:\n- A service has multiple distinct tasks or sections to complete\n- Users need to see their overall progress\n- Tasks can potentially be completed in different orders\n- Users may return to complete tasks over multiple sessions\n\n## Considerations\n\n- Group related actions into logical tasks\n- Show status badges for each task (Completed, In progress, Not started, Cannot start yet)\n- Include a summary callout showing how many sections are complete\n- Allow users to complete tasks in any order when possible\n- Clearly indicate when tasks have dependencies\n", + "component": "", + "filePath": "docs/src/content/examples/task-list-page/index.mdx", + "urlPath": "examples/task-list-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "task-list-page", + "status": "published", + "categories": [] + }, + { + "id": "example-start-page", + "title": "Start page", + "description": "A start page is the front door to a government service for citizens. It provides essential information about the service and a clear call to action to begin. ", + "content": "A start page is the front door to a government service for citizens. It provides essential information about the service and a clear call to action to begin.\n\n## When to use\n\nUse this pattern when:\n- Creating the entry point for a citizen-facing government service\n- Citizens need to understand what the service does before starting\n- You need to communicate prerequisites, time estimates, or required documents\n\n## Considerations\n\n- Keep the overview concise and focused on what users can do\n- List what documents or information users will need\n- Include an estimated completion time\n- Use a prominent \"Get started\" or \"Start now\" button\n- Provide contact information and alternative ways to access the service below the main call to action\n", + "component": "", + "filePath": "docs/src/content/examples/start-page/index.mdx", + "urlPath": "examples/start-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "start-page", + "status": "published", + "categories": [] + }, + { + "id": "example-sort-data-in-a-table", + "title": "Sort data in a table", + "description": "Enable column sorting in tables using sort headers, allowing workers to organize data by clicking column headers to toggle ascending/descending order. ", + "content": "Enable column sorting in tables using sort headers, allowing workers to organize data by clicking column headers to toggle ascending/descending order.\n\n## When to use\n\nUse this pattern when:\n- Workers need to organize tabular data by different columns\n- Data sets are large enough that sorting improves usability\n- Multiple columns could reasonably be used as sort criteria\n\n## Considerations\n\n- Indicate the current sort direction with visual cues\n- Set a sensible default sort order when the table loads\n- Consider which columns should be sortable based on data type\n- Numeric columns typically sort numerically, text columns alphabetically\n- Maintain sort state when data updates if appropriate\n", + "component": "", + "filePath": "docs/src/content/examples/sort-data-in-a-table/index.mdx", + "urlPath": "examples/sort-data-in-a-table", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "sort-data-in-a-table", + "status": "published", + "categories": [] + }, + { + "id": "example-slotted-helper-text-in-a-form-item", + "title": "Slotted helper text in a form item", + "description": "Use the helpText slot in a form item to display formatted helper text with custom styling like bold, italic, or links. ", + "content": "Use the helpText slot in a form item to display formatted helper text with custom styling like bold, italic, or links.\n\n## When to use\n\nUse this pattern when:\n- You need to display helper text with custom formatting\n- Helper text requires links to additional resources\n- Standard string-based helper text is insufficient\n\n## Considerations\n\n- Keep helper text concise and relevant to the field\n- Use formatting to highlight important information\n- Ensure helper text is accessible to screen readers\n- Consider using links to provide additional guidance without cluttering the form\n", + "component": "", + "filePath": "docs/src/content/examples/slotted-helper-text-in-a-form-item/index.mdx", + "urlPath": "examples/slotted-helper-text-in-a-form-item", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "slotted-helper-text-in-a-form-item", + "status": "published", + "categories": [] + }, + { + "id": "example-slotted-error-text-in-a-form-item", + "title": "Slotted error text in a form item", + "description": "Use the error slot in a form item to display formatted error messages with custom styling like bold or italic text. ", + "content": "Use the error slot in a form item to display formatted error messages with custom styling like bold or italic text.\n\n## When to use\n\nUse this pattern when:\n- You need to display error messages with custom formatting\n- Error text requires links, bold, or other inline styling\n- Standard string-based error messages are insufficient\n\n## Considerations\n\n- Keep error messages clear and actionable\n- Use formatting sparingly to highlight key information\n- Ensure error text is accessible and readable by screen readers\n- The input component should also have its error prop set to true for proper styling\n", + "component": "", + "filePath": "docs/src/content/examples/slotted-error-text-in-a-form-item/index.mdx", + "urlPath": "examples/slotted-error-text-in-a-form-item", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "slotted-error-text-in-a-form-item", + "status": "published", + "categories": [] + }, + { + "id": "example-show-version-number", + "title": "Show version number", + "description": "Display version information in the microsite header using the version slot, allowing custom formatting and styling of version text. ", + "content": "Display version information in the microsite header using the version slot, allowing custom formatting and styling of version text.\n\n## When to use\n\nUse this pattern when:\n- You need to display a version number or status in the header\n- The service is in alpha or beta phase\n- You want to include formatted version information\n\n## Considerations\n\n- Use the version slot for custom version content with formatting\n- Keep version text concise and clear\n- Combine with header type (alpha, beta, live) to indicate service maturity\n- Version information should be easily scannable\n", + "component": "", + "filePath": "docs/src/content/examples/show-version-number/index.mdx", + "urlPath": "examples/show-version-number", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-version-number", + "status": "published", + "categories": [] + }, + { + "id": "example-show-status-on-a-card", + "title": "Show status on a card", + "description": "Display status indicators on cards using badges in the actions slot, allowing workers to quickly see the priority or state of each item. ", + "content": "Display status indicators on cards using badges in the actions slot, allowing workers to quickly see the priority or state of each item.\n\n## When to use\n\nUse this pattern when:\n- Displaying items in a card-based layout that have status or priority levels\n- Workers need to quickly identify high-priority or important items\n- Status should be prominently visible in the card header area\n\n## Considerations\n\n- Use the actions slot to position the badge in the card header\n- Choose badge types that clearly communicate priority or status\n- Keep badge content concise (one or two words)\n- Ensure the card heading and badge work well together visually\n", + "component": "", + "filePath": "docs/src/content/examples/show-status-on-a-card/index.mdx", + "urlPath": "examples/show-status-on-a-card", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-status-on-a-card", + "status": "published", + "categories": [] + }, + { + "id": "example-show-status-in-a-table", + "title": "Show status in a table", + "description": "Display status information within table rows using badges to provide clear visual indicators of item states like pending, complete, failed, or in progress. ", + "content": "Display status information within table rows using badges to provide clear visual indicators of item states like pending, complete, failed, or in progress.\n\n## When to use\n\nUse this pattern when:\n- Displaying lists of items that have different status states\n- Workers need to quickly scan and identify items requiring action\n- Status needs to be immediately visible alongside other item data\n\n## Considerations\n\n- Use consistent badge types for similar statuses across your application\n- Choose badge colors that clearly differentiate between states (success, warning, error, info)\n- Include action buttons to allow workers to act on items directly from the table\n- Align status badges consistently within the column\n", + "component": "", + "filePath": "docs/src/content/examples/show-status-in-a-table/index.mdx", + "urlPath": "examples/show-status-in-a-table", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-status-in-a-table", + "status": "published", + "categories": [] + }, + { + "id": "example-show-quick-links", + "title": "Show quick links", + "description": "Use the app footer meta section to display essential quick links like feedback, accessibility, privacy, and contact information without the full navigation structure. ", + "content": "Use the app footer meta section to display essential quick links like feedback, accessibility, privacy, and contact information without the full navigation structure.\n\n## When to use\n\nUse this pattern when:\n- Building a simpler service that doesn't need full navigation\n- Essential utility links are required in the footer\n- The service needs quick access to feedback/contact\n- Full footer navigation would be excessive\n\n## Considerations\n\n- Keep the meta section links focused and essential\n- Include accessibility and privacy links as required\n- Order links by importance or frequency of use\n- Use consistent link text across government services\n", + "component": "", + "filePath": "docs/src/content/examples/show-quick-links/index.mdx", + "urlPath": "examples/show-quick-links", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-quick-links", + "status": "published", + "categories": [] + }, + { + "id": "example-show-number-of-results-per-page", + "title": "Show number of results per page", + "description": "Combine pagination with a dropdown selector to let users control how many results appear per page, improving data browsing for different use cases. ", + "content": "Combine pagination with a dropdown selector to let users control how many results appear per page, improving data browsing for different use cases.\n\n## When to use\n\nUse this pattern when:\n- Displaying paginated data in tables\n- Users may want to see more or fewer items\n- Different tasks benefit from different page sizes\n- The total result count should be visible\n\n## Considerations\n\n- Show \"of X\" to indicate total results\n- Reset to page 1 when changing page size\n- Use reasonable default (10 is common)\n- Provide sensible options (10, 20, 30, etc.)\n", + "component": "", + "filePath": "docs/src/content/examples/show-number-of-results-per-page/index.mdx", + "urlPath": "examples/show-number-of-results-per-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-number-of-results-per-page", + "status": "published", + "categories": [] + }, + { + "id": "example-show-multiple-tags-together", + "title": "Show multiple tags together", + "description": "Display multiple badges together using GoabBlock with tight spacing to show multiple statuses or categories for a single item. ", + "content": "Display multiple badges together using GoabBlock with tight spacing to show multiple statuses or categories for a single item.\n\n## When to use\n\nUse this pattern when:\n- An item has multiple statuses or categories\n- You need to show related metadata together\n- Visual grouping of badges improves scanning\n- Items can have multiple applicable labels\n\n## Considerations\n\n- Use `gap=\"xs\"` for tight spacing between badges\n- Keep badge count reasonable (2-4 typically)\n- Choose badge types that provide visual contrast\n- Consider reading order and importance\n", + "component": "", + "filePath": "docs/src/content/examples/show-multiple-tags-together/index.mdx", + "urlPath": "examples/show-multiple-tags-together", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-multiple-tags-together", + "status": "published", + "categories": [] + }, + { + "id": "example-show-multiple-actions-in-a-compact-table", + "title": "Show multiple actions in a compact table", + "description": "Use icon buttons to provide multiple row actions in tables where space is limited, keeping the interface compact while maintaining accessibility through aria labels. ", + "content": "Use icon buttons to provide multiple row actions in tables where space is limited, keeping the interface compact while maintaining accessibility through aria labels.\n\n## When to use\n\nUse this pattern when:\n- Tables need multiple actions per row\n- Horizontal space is limited\n- Workers are familiar with icon meanings\n- Actions are common (edit, flag, send, etc.)\n\n## Considerations\n\n- Always include aria-label for accessibility\n- Use small size icon buttons for compact tables\n- Group related actions with GoabBlock\n- Ensure icons are universally understood\n", + "component": "", + "filePath": "docs/src/content/examples/show-multiple-actions-in-a-compact-table/index.mdx", + "urlPath": "examples/show-multiple-actions-in-a-compact-table", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-multiple-actions-in-a-compact-table", + "status": "published", + "categories": [] + }, + { + "id": "example-show-more-information-to-help-answer-a-question", + "title": "Show more information to help answer a question", + "description": "Use the Details component to provide optional contextual help that explains why a question is being asked, helping users understand the purpose without cluttering the main form. ", + "content": "Use the Details component to provide optional contextual help that explains why a question is being asked, helping users understand the purpose without cluttering the main form.\n\n## When to use\n\nUse this pattern when:\n- Users may wonder why a question is being asked\n- Additional context helps users answer correctly\n- The information is optional and shouldn't distract\n- Following question page patterns for citizen services\n\n## Considerations\n\n- Place the details component after the question input\n- Use a clear heading like \"Why are we asking this question?\"\n- Keep the expanded content concise and helpful\n- Include helper text for the main question when appropriate\n", + "component": "", + "filePath": "docs/src/content/examples/show-more-information-to-help-answer-a-question/index.mdx", + "urlPath": "examples/show-more-information-to-help-answer-a-question", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-more-information-to-help-answer-a-question", + "status": "published", + "categories": [] + }, + { + "id": "example-show-links-to-navigation-items", + "title": "Show links to navigation items", + "description": "Use the app footer to display comprehensive navigation links organized into sections, along with meta links for common utilities like privacy and accessibility. ", + "content": "Use the app footer to display comprehensive navigation links organized into sections, along with meta links for common utilities like privacy and accessibility.\n\n## When to use\n\nUse this pattern when:\n- Building a full-featured government service\n- Users need access to site-wide navigation in the footer\n- Meta links (privacy, accessibility, etc.) are required\n- Organizing footer links into logical categories helps navigation\n\n## Considerations\n\n- Group related links in the nav section\n- Keep meta section for utility links (privacy, accessibility, contact)\n- Control column layout with maxColumnCount prop\n- Ensure all links are properly labeled and functional\n", + "component": "", + "filePath": "docs/src/content/examples/show-links-to-navigation-items/index.mdx", + "urlPath": "examples/show-links-to-navigation-items", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-links-to-navigation-items", + "status": "published", + "categories": [] + }, + { + "id": "example-show-full-date-in-a-tooltip", + "title": "Show full date in a tooltip", + "description": "Display relative time (like \"4 hours ago\") while providing the full date and time on hover via tooltip for users who need exact timestamps. ", + "content": "Display relative time (like \"4 hours ago\") while providing the full date and time on hover via tooltip for users who need exact timestamps.\n\n## When to use\n\nUse this pattern when:\n- Displaying relative time like \"4 hours ago\" or \"2 days ago\"\n- Users may need access to the exact date and time\n- Space is limited for full date display\n- Context cards or comments show timestamps\n\n## Considerations\n\n- Keep the relative time format consistent\n- Include both date and time in the tooltip\n- Style the hoverable text subtly (secondary color, smaller font)\n- Ensure tooltip is keyboard accessible\n", + "component": "", + "filePath": "docs/src/content/examples/show-full-date-in-a-tooltip/index.mdx", + "urlPath": "examples/show-full-date-in-a-tooltip", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-full-date-in-a-tooltip", + "status": "published", + "categories": [] + }, + { + "id": "example-show-different-views-of-data-in-a-table", + "title": "Show different views of data in a table", + "description": "Use tabs to organize table data into different views based on status or category, showing counts in each tab to help workers quickly navigate to relevant items. ", + "content": "Use tabs to organize table data into different views based on status or category, showing counts in each tab to help workers quickly navigate to relevant items.\n\n## When to use\n\nUse this pattern when:\n- Workers need to view data filtered by status\n- Different subsets of data require focused attention\n- Quick access to counts of items in each category is helpful\n- Switching between views should preserve context\n\n## Considerations\n\n- Show counts in tab headers using badges\n- Maintain consistent table structure across tabs\n- Default to the most commonly used view\n- Consider which statuses need prominent display\n", + "component": "", + "filePath": "docs/src/content/examples/show-different-views-of-data-in-a-table/index.mdx", + "urlPath": "examples/show-different-views-of-data-in-a-table", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-different-views-of-data-in-a-table", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-user-progress-when-the-time-is-unknown", + "title": "Show a user progress when the time is unknown", + "description": "Display indeterminate progress for operations where completion time cannot be estimated, such as complex searches or external system queries. ", + "content": "Display indeterminate progress for operations where completion time cannot be estimated, such as complex searches or external system queries.\n\n## When to use\n\nUse this pattern when:\n- The operation duration cannot be predicted\n- You're querying external systems with variable response times\n- Searching across multiple data sources\n- Users need to know something is happening but not a specific percentage\n\n## Considerations\n\n- Use `type=\"indeterminate\"` for unknown duration operations\n- Always provide a cancel option\n- Show success or failure notification when complete\n- Include meaningful context in the notification message\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-user-progress-when-the-time-is-unknown/index.mdx", + "urlPath": "examples/show-a-user-progress-when-the-time-is-unknown", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-user-progress-when-the-time-is-unknown", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-user-progress", + "title": "Show a user progress", + "description": "Display progress feedback during long-running operations like downloads, showing percentage completion with the ability to cancel and receive success confirmation. ", + "content": "Display progress feedback during long-running operations like downloads, showing percentage completion with the ability to cancel and receive success confirmation.\n\n## When to use\n\nUse this pattern when:\n- An operation takes more than a few seconds\n- Progress can be measured as a percentage (0-100%)\n- Users need the ability to cancel the operation\n- Success or failure confirmation is needed\n\n## Considerations\n\n- Always provide a cancel option for long operations\n- Show a success notification when complete\n- Use `type=\"progress\"` for operations with known duration\n- Handle errors gracefully with failure notifications\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-user-progress/index.mdx", + "urlPath": "examples/show-a-user-progress", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-user-progress", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions", + "title": "Show a simple progress indicator on a question page with multiple questions", + "description": "Show a simple progress indicator on a question page when grouping multiple related questions together. ", + "content": "Show a simple progress indicator on a question page when grouping multiple related questions together.\n\n## When to use\n\nUse this pattern when:\n- Grouping multiple related questions on a single page improves the user experience\n- The questions form a logical unit (e.g., personal information fields)\n- Users benefit from progress tracking across the form\n- A step-based indicator shows progress through form sections\n\n## Considerations\n\n- Display progress as \"Step X of Y\" when grouping questions into sections\n- Include a clear section heading that describes the group of questions\n- Use a subdued text color for the progress indicator\n- Include a back link for navigation to previous sections\n- Position related questions close together with consistent spacing\n- The `leadingContent` prop on inputs can add prefixes like country codes\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/index.mdx", + "urlPath": "examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-simple-progress-indicator-on-a-question-page", + "title": "Show a simple progress indicator on a question page", + "description": "Show a simple progress indicator on a question page to help users understand their progress through the form. ", + "content": "Show a simple progress indicator on a question page to help users understand their progress through the form.\n\n## When to use\n\nUse this pattern when:\n- Building a multi-question form where progress tracking helps users\n- Users benefit from knowing how many questions remain\n- The form has a linear flow with a known number of questions\n- Following the one-question-per-page pattern for government services\n\n## Considerations\n\n- Display progress as \"Question X of Y\" for clarity\n- Use a subdued text color for the progress indicator\n- Include a back link for navigation to previous questions\n- Position the progress indicator above the question\n- Keep the format consistent throughout the form\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/index.mdx", + "urlPath": "examples/show-a-simple-progress-indicator-on-a-question-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-simple-progress-indicator-on-a-question-page", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-section-title-on-a-question-page", + "title": "Show a section title on a question page", + "description": "Show a section title on a question page to help users understand which part of the form they are completing. ", + "content": "Show a section title on a question page to help users understand which part of the form they are completing.\n\n## When to use\n\nUse this pattern when:\n- Building multi-section forms where context helps users\n- Users need to know which category of questions they are answering\n- The form is divided into logical sections like \"Personal information\"\n- Following the one-question-per-page pattern for government services\n\n## Considerations\n\n- Use a subdued text color for the section title to differentiate from the question\n- Include a back link for navigation to previous questions\n- The section title should appear above the question\n- Use consistent spacing between the back link, section title, and question\n- Keep section titles concise and descriptive\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-section-title-on-a-question-page/index.mdx", + "urlPath": "examples/show-a-section-title-on-a-question-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-section-title-on-a-question-page", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-notification-with-an-action", + "title": "Show a notification with an action", + "description": "Show a temporary notification with an action button for user interaction. ", + "content": "Show a temporary notification with an action button for user interaction.\n\n## When to use\n\nUse this pattern when:\n- Users need to take action in response to a notification\n- Providing a quick way to navigate to related content\n- Showing activity notifications that users may want to respond to\n- The action should dismiss the notification when clicked\n\n## Considerations\n\n- Use `actionText` to set the button label in the notification\n- The `action` callback receives the notification UUID for dismissal\n- Use `TemporaryNotification.dismiss(uuid)` to close the notification programmatically\n- Keep action text short and clear (e.g., \"View\", \"Undo\", \"Open\")\n- Consider what happens if the user doesn't click the action before auto-dismiss\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-notification-with-an-action/index.mdx", + "urlPath": "examples/show-a-notification-with-an-action", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-notification-with-an-action", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-notification", + "title": "Show a notification", + "description": "Show a temporary notification to confirm an action was completed successfully. ", + "content": "Show a temporary notification to confirm an action was completed successfully.\n\n## When to use\n\nUse this pattern when:\n- Confirming that a save operation completed successfully\n- Providing immediate feedback after a user action\n- The notification should automatically dismiss after a few seconds\n- Users need non-intrusive confirmation of their action\n\n## Considerations\n\n- Use the `type` option to indicate the nature of the notification (success, information, etc.)\n- Import `TemporaryNotification` from `@abgov/ui-components-common`\n- Include a `` component in your app to render notifications\n- Keep notification messages concise and action-oriented\n- Notifications auto-dismiss after a default duration\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-notification/index.mdx", + "urlPath": "examples/show-a-notification", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-notification", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-list-to-help-answer-a-question", + "title": "Show a list to help answer a question", + "description": "Show a list to help answer a question using an expandable details component. ", + "content": "Show a list to help answer a question using an expandable details component.\n\n## When to use\n\nUse this pattern when:\n- Users need clarification about what items qualify for a question\n- You want to provide examples of what to include or exclude\n- The guidance content would clutter the form if always visible\n- Users can make better decisions with reference information\n\n## Considerations\n\n- Place the details component after the form question it relates to\n- Use clear headings within the details to organize content\n- Include both \"examples of\" and \"do not include\" lists when relevant\n- Keep the details heading phrased as a question to indicate it provides clarification\n- Ensure the expanded content is easy to scan with clear formatting\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-list-to-help-answer-a-question/index.mdx", + "urlPath": "examples/show-a-list-to-help-answer-a-question", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-list-to-help-answer-a-question", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-label-on-an-icon-only-button", + "title": "Show a label on an icon only button", + "description": "Show a label on an icon-only button using a tooltip to improve discoverability. ", + "content": "Show a label on an icon-only button using a tooltip to improve discoverability.\n\n## When to use\n\nUse this pattern when:\n- Using icon buttons without visible text labels\n- Users might not recognize what an icon means\n- You want to provide context for icon-only actions\n- Building toolbars or action bars with multiple icon buttons\n\n## Considerations\n\n- Always include an `ariaLabel` on icon buttons for screen reader accessibility\n- Tooltips provide visual context but should not be the only way to understand the action\n- Keep tooltip content short and descriptive\n- Group related icon buttons together using a button group\n- Consider using text labels instead of tooltips for critical actions\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-label-on-an-icon-only-button/index.mdx", + "urlPath": "examples/show-a-label-on-an-icon-only-button", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-label-on-an-icon-only-button", + "status": "published", + "categories": [] + }, + { + "id": "example-set-the-status-of-step-on-a-form-stepper", + "title": "Set the status of step on a form stepper", + "description": "Set the status of each step on a form stepper to indicate completion progress. ", + "content": "Set the status of each step on a form stepper to indicate completion progress.\n\n## When to use\n\nUse this pattern when:\n- Building multi-step forms that need visual progress indication\n- Users need to see which steps are complete, incomplete, or not started\n- You want to provide clear navigation through a complex form process\n- Form completion status needs to be tracked and displayed\n\n## Considerations\n\n- The status property accepts \"complete\", \"incomplete\", or \"not-started\" values\n- Status is controlled by the application based on form completion\n- Consider updating step status as users complete each section\n- Provide clear Previous/Next navigation to move between steps\n- The form stepper can be clicked to navigate directly to completed steps\n", + "component": "", + "filePath": "docs/src/content/examples/set-the-status-of-step-on-a-form-stepper/index.mdx", + "urlPath": "examples/set-the-status-of-step-on-a-form-stepper", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "set-the-status-of-step-on-a-form-stepper", + "status": "published", + "categories": [] + }, + { + "id": "example-set-a-specific-tab-to-be-active", + "title": "Set a specific tab to be active", + "description": "Set a specific tab to be active on page load using the initialTab property. ", + "content": "Set a specific tab to be active on page load using the initialTab property.\n\n## When to use\n\nUse this pattern when:\n- You want to load a specific tab as the default active tab\n- Users should start viewing a particular tab based on context\n- Deep linking to specific tab content is required\n- Showing priority content like items requiring attention\n\n## Considerations\n\n- The `initialTab` property uses zero-based indexing (0 = first tab, 1 = second tab, etc.)\n- Consider which tab provides the most relevant content for users on initial load\n- Badge counts in tab headings help users understand the volume of items in each tab\n- Ensure tab content is accessible and keyboard navigable\n", + "component": "", + "filePath": "docs/src/content/examples/set-a-specific-tab-to-be-active/index.mdx", + "urlPath": "examples/set-a-specific-tab-to-be-active", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "set-a-specific-tab-to-be-active", + "status": "published", + "categories": [] + }, + { + "id": "example-set-a-max-width-on-a-long-radio-item", + "title": "Set a max width on a long radio item", + "description": "Set a max width on a long radio item to control line wrapping. ", + "content": "Set a max width on a long radio item to control line wrapping.\n\n## When to use\n\nUse this pattern when:\n- You have radio options with long labels that need width control\n- You want to prevent radio items from becoming too wide on large screens\n- You need consistent radio item sizing across different viewport sizes\n\n## Considerations\n\n- The `maxWidth` property accepts CSS width values like \"300px\" or \"20ch\"\n- Consider the reading experience when setting max widths\n- Ensure the max width still allows for readable label text\n- Use consistent max widths across similar form elements for visual harmony\n", + "component": "", + "filePath": "docs/src/content/examples/set-a-max-width-on-a-long-radio-item/index.mdx", + "urlPath": "examples/set-a-max-width-on-a-long-radio-item", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "set-a-max-width-on-a-long-radio-item", + "status": "published", + "categories": [] + }, + { + "id": "example-select-one-or-more-from-a-list-of-options", + "title": "Select one or more from a list of options", + "description": "Use checkboxes to let users select one or more options from a list when multiple selections are valid. ", + "content": "Use checkboxes to let users select one or more options from a list when multiple selections are valid.\n\n## When to use\n\nUse this pattern when:\n- Users can select multiple options from a predefined list\n- All options that apply should be selected\n- The list of options is relatively short (up to ~7 items)\n- Each option is independent of the others\n\n## Considerations\n\n- Use clear, concise labels for each option\n- Include help text like \"Choose all that apply\" to indicate multiple selection\n- Consider the order of options (most common first, alphabetical, etc.)\n- For longer lists, consider a different component like multi-select dropdown\n- Ensure adequate touch targets for mobile users\n", + "component": "", + "filePath": "docs/src/content/examples/select-one-or-more-from-a-list-of-options/index.mdx", + "urlPath": "examples/select-one-or-more-from-a-list-of-options", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "select-one-or-more-from-a-list-of-options", + "status": "published", + "categories": [] + }, + { + "id": "example-search", + "title": "Search", + "description": "A search input pattern with a search icon and button for users to find content or filter results. ", + "content": "A search input pattern with a search icon and button for users to find content or filter results.\n\n## When to use\n\nUse this pattern when:\n- Users need to search through content or data\n- Filtering a list or table by text input\n- Providing a site-wide or section search\n- Quick access to specific records is needed\n\n## Considerations\n\n- Include a leading search icon for clear affordance\n- Use an explicit search button for clarity\n- Consider search suggestions or autocomplete for large datasets\n- Provide clear feedback when no results are found\n- Keep the search input appropriately sized for expected query length\n", + "component": "", + "filePath": "docs/src/content/examples/search/index.mdx", + "urlPath": "examples/search", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "search", + "status": "published", + "categories": [] + }, + { + "id": "example-review-page", + "title": "Review page", + "description": "A review page where users can check their answers before submitting a form, with options to change individual responses. ", + "content": "A review page where users can check their answers before submitting a form, with options to change individual responses.\n\n## When to use\n\nUse this pattern when:\n- Users need to review their form answers before submission\n- At the end of a multi-step form or wizard\n- Before finalizing applications or important submissions\n- When accuracy of submitted information is critical\n\n## Considerations\n\n- Display all answered questions with current values\n- Provide \"Change\" links for each answer\n- Show \"Not provided\" for skipped optional questions\n- Include visually hidden text in change links for accessibility\n- Consider grouping related answers under section headings\n- For large forms, consider review pages at the end of each section\n", + "component": "", + "filePath": "docs/src/content/examples/review-page/index.mdx", + "urlPath": "examples/review-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "review-page", + "status": "published", + "categories": [] + }, + { + "id": "example-review-and-action", + "title": "Review and action", + "description": "A side-by-side layout for workers to review case details while taking an action, commonly used in case management and approval workflows. ", + "content": "A side-by-side layout for workers to review case details while taking an action, commonly used in case management and approval workflows.\n\n## When to use\n\nUse this pattern when:\n- Workers need to review information while making decisions\n- Processing applications, requests, or case files\n- The decision requires context from existing case data\n- Actions like approve, deny, or escalate are needed\n\n## Considerations\n\n- Place read-only review information on the left\n- Place action form controls on the right\n- Use containers to group related information\n- Provide clear labels for all case details\n- Include reason fields when denying requests\n- Consider responsive behavior for smaller screens\n", + "component": "", + "filePath": "docs/src/content/examples/review-and-action/index.mdx", + "urlPath": "examples/review-and-action", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "review-and-action", + "status": "published", + "categories": [] + }, + { + "id": "example-reveal-input-based-on-a-selection", + "title": "Reveal input based on a selection", + "description": "Progressively reveal additional form fields based on user selections, reducing visual complexity while gathering necessary information. ", + "content": "Progressively reveal additional form fields based on user selections, reducing visual complexity while gathering necessary information.\n\n## When to use\n\nUse this pattern when:\n- Additional information is only needed for certain options\n- You want to reduce initial form complexity\n- Follow-up questions depend on user choices\n- Creating a more focused, less overwhelming form experience\n\n## Considerations\n\n- The revealed input should appear directly below the triggering selection\n- Use clear labels that explain what information is needed\n- Ensure the reveal animation is smooth and noticeable\n- Consider what happens to data if the user changes their selection\n- Works with both radio groups (single selection) and checkboxes (multiple selections)\n", + "component": "", + "filePath": "docs/src/content/examples/reveal-input-based-on-a-selection/index.mdx", + "urlPath": "examples/reveal-input-based-on-a-selection", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "reveal-input-based-on-a-selection", + "status": "published", + "categories": [] + }, + { + "id": "example-result-page", + "title": "Result page", + "description": "A result page shown after form submission to confirm success, provide next steps, and offer relevant contact information. ", + "content": "A result page shown after form submission to confirm success, provide next steps, and offer relevant contact information.\n\n## When to use\n\nUse this pattern when:\n- A user has submitted a form or application\n- You need to confirm successful completion of a process\n- There is important follow-up information to communicate\n- Users need reference numbers or confirmation details\n\n## Considerations\n\n- Include a reference number if applicable\n- Clearly explain what happens next and when\n- Provide a way to save or print the confirmation\n- Include service contact information for questions\n- Link to feedback forms and related services\n- Keep the success message clear and reassuring\n", + "component": "", + "filePath": "docs/src/content/examples/result-page/index.mdx", + "urlPath": "examples/result-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "result-page", + "status": "published", + "categories": [] + }, + { + "id": "example-reset-date-picker-field", + "title": "Reset date picker field", + "description": "Allow users to programmatically set or clear a date picker field value, useful for reset functionality or setting default dates. ", + "content": "Allow users to programmatically set or clear a date picker field value, useful for reset functionality or setting default dates.\n\n## When to use\n\nUse this pattern when:\n- Users need to clear a date field to start over\n- You need to set a default or suggested date value\n- Providing quick actions to modify date values\n- Building forms with reset functionality\n\n## Considerations\n\n- Provide clear button labels indicating the action\n- Consider whether clearing should also reset validation state\n- The date picker should update immediately when set or cleared\n- Consider providing a confirmation for clearing important dates\n", + "component": "", + "filePath": "docs/src/content/examples/reset-date-picker-field/index.mdx", + "urlPath": "examples/reset-date-picker-field", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "reset-date-picker-field", + "status": "published", + "categories": [] + }, + { + "id": "example-require-user-action-before-continuing", + "title": "Require user action before continuing", + "description": "Use a modal dialog to require users to confirm an action before proceeding, especially for irreversible operations or important decision points. ", + "content": "Use a modal dialog to require users to confirm an action before proceeding, especially for irreversible operations or important decision points.\n\n## When to use\n\nUse this pattern when:\n- The user is about to perform an action that cannot be undone\n- Navigation will cause data loss or prevent returning\n- Important information needs acknowledgment before proceeding\n- Users should confirm before submitting important forms\n\n## Considerations\n\n- Clearly explain the consequences of continuing\n- Provide a way to go back or cancel\n- Use clear, action-oriented button labels\n- Keep the modal content concise and focused\n- Ensure the primary action stands out from secondary options\n", + "component": "", + "filePath": "docs/src/content/examples/require-user-action-before-continuing/index.mdx", + "urlPath": "examples/require-user-action-before-continuing", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "require-user-action-before-continuing", + "status": "published", + "categories": [] + }, + { + "id": "example-remove-a-filter", + "title": "Remove a filter", + "description": "Allow users to remove active filters by clicking on filter chips, providing clear visual feedback and dynamic updates to filtered results. ", + "content": "Allow users to remove active filters by clicking on filter chips, providing clear visual feedback and dynamic updates to filtered results.\n\n## When to use\n\nUse this pattern when:\n- Users have applied filters that need to be removable\n- You want to show active filter state clearly\n- Filters should be easy to remove with a single click\n\n## Considerations\n\n- Each chip should clearly indicate what filter it represents\n- Provide visual feedback when removing filters\n- Results should update immediately when a filter is removed\n- Consider adding an \"x\" icon or clear affordance to indicate removeability\n", + "component": "", + "filePath": "docs/src/content/examples/remove-a-filter/index.mdx", + "urlPath": "examples/remove-a-filter", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "remove-a-filter", + "status": "published", + "categories": [] + }, + { + "id": "example-question-page", + "title": "Question page", + "description": "A question page pattern that presents one question at a time to help users focus, reduce cognitive load, and navigate complex forms more easily. ", + "content": "A question page pattern that presents one question at a time to help users focus, reduce cognitive load, and navigate complex forms more easily.\n\n## When to use\n\nUse this pattern when:\n- Building multi-step forms or wizards\n- Asking users for information that requires focused attention\n- The form has branching logic based on user responses\n- You want to reduce cognitive load and errors\n\n## Considerations\n\n- Each page should contain one idea: one question, one decision, or one piece of information\n- Progress indicators are optional - test without one first\n- The pattern helps with mobile responsiveness and accessibility\n- Enables automatic saving and better error handling\n- Consider adaptive questioning where subsequent questions depend on previous answers\n", + "component": "", + "filePath": "docs/src/content/examples/question-page/index.mdx", + "urlPath": "examples/question-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "question-page", + "status": "published", + "categories": [] + }, + { + "id": "example-public-form", + "title": "Public form", + "description": "The public form pattern provides a structure for citizen-facing form experiences, emphasizing simplicity, accessibility, and low cognitive load. ", + "content": "The public form pattern provides a structure for citizen-facing form experiences, emphasizing simplicity, accessibility, and low cognitive load.\n\n## When to use\n\nUse this pattern when:\n- Designing a public service for citizens\n- Building forms that should be simple and intuitive\n- Users need to make informed decisions while completing the form\n- The service should accommodate users who use it infrequently\n\n## Considerations\n\n- Follow the \"one idea per page\" principle to reduce cognitive load\n- Break complex forms into multiple pages with single questions\n- Use task list pages for longer processes with multiple sections\n- Consider using simple progress indicators rather than horizontal steppers\n- Ensure all form elements meet WCAG 2.2 AA accessibility standards\n", + "component": "", + "filePath": "docs/src/content/examples/public-form/index.mdx", + "urlPath": "examples/public-form", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "public-form", + "status": "published", + "categories": [] + }, + { + "id": "example-link-to-an-external-page", + "title": "Link to an external page", + "description": "Use an external link indicator to show users when a link will take them to a different website. ", + "content": "Use an external link indicator to show users when a link will take them to a different website.\n\n## When to use\n\nUse this pattern when:\n- Linking to websites outside your service\n- Users should be aware they're leaving the current site\n- Providing references to external resources\n- Following accessibility best practices for external links\n\n## Considerations\n\n- Use the \"open\" trailing icon to indicate external links\n- Consider whether the link should open in a new tab\n- Ensure the link text clearly describes the destination\n- External links should be used sparingly and with purpose\n", + "component": "", + "filePath": "docs/src/content/examples/link-to-an-external-page/index.mdx", + "urlPath": "examples/link-to-an-external-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "link-to-an-external-page", + "status": "published", + "categories": [] + }, + { + "id": "example-link-the-user-to-give-feedback-to-the-service", + "title": "Link the user to give feedback to the service", + "description": "Use the microsite header's feedback functionality to collect user feedback during alpha or beta phases of a service. ", + "content": "Use the microsite header's feedback functionality to collect user feedback during alpha or beta phases of a service.\n\n## When to use\n\nUse this pattern when:\n- Your service is in alpha or beta phase\n- You want to actively collect user feedback\n- Building a citizen-facing government service\n- The service is still being developed and improved\n\n## Considerations\n\n- Use the `onFeedbackClick` handler to define feedback behavior\n- Consider linking to a feedback form or opening a modal\n- The feedback link appears automatically on alpha/beta headers\n- Ensure the feedback mechanism is accessible and easy to use\n", + "component": "", + "filePath": "docs/src/content/examples/link-the-user-to-give-feedback-to-the-service/index.mdx", + "urlPath": "examples/link-the-user-to-give-feedback-to-the-service", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "link-the-user-to-give-feedback-to-the-service", + "status": "published", + "categories": [] + }, + { + "id": "example-include-descriptions-for-items-in-a-checkbox-list", + "title": "Include descriptions for items in a checkbox list", + "description": "Add descriptive text to radio button options to help users understand the implications of each choice. ", + "content": "Add descriptive text to radio button options to help users understand the implications of each choice.\n\n## When to use\n\nUse this pattern when:\n- Radio options need additional explanation\n- Users might not understand the difference between options\n- Each option has specific implications or requirements\n- Providing context helps users make informed decisions\n\n## Considerations\n\n- Keep descriptions concise but informative\n- Ensure the label and description work together\n- Use consistent description length across options\n- Consider whether all options need descriptions or just some\n", + "component": "", + "filePath": "docs/src/content/examples/include-descriptions-for-items-in-a-checkbox-list/index.mdx", + "urlPath": "examples/include-descriptions-for-items-in-a-checkbox-list", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "include-descriptions-for-items-in-a-checkbox-list", + "status": "published", + "categories": [] + }, + { + "id": "example-include-a-link-in-the-helper-text-of-an-option", + "title": "Include a link in the helper text of an option", + "description": "Add links within the description text of checkbox options to provide additional context or resources while users are making selections. ", + "content": "Add links within the description text of checkbox options to provide additional context or resources while users are making selections.\n\n## When to use\n\nUse this pattern when:\n- Checkbox options need additional context via links\n- Users might need more information before making a selection\n- Linking to terms, policies, or detailed explanations\n- The link is directly relevant to the specific option\n\n## Considerations\n\n- Keep description text concise even with links\n- Ensure link text is descriptive and accessible\n- Consider whether the link should open in a new tab\n- Use the description prop (React) or ng-template (Angular) for custom content\n", + "component": "", + "filePath": "docs/src/content/examples/include-a-link-in-the-helper-text-of-an-option/index.mdx", + "urlPath": "examples/include-a-link-in-the-helper-text-of-an-option", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "include-a-link-in-the-helper-text-of-an-option", + "status": "published", + "categories": [] + }, + { + "id": "example-hide-and-show-many-sections-of-information", + "title": "Hide and show many sections of information", + "description": "Allow users to expand and collapse multiple accordion sections, with a button to show or hide all sections at once. ", + "content": "Allow users to expand and collapse multiple accordion sections, with a button to show or hide all sections at once.\n\n## When to use\n\nUse this pattern when:\n- Presenting FAQ-style content\n- Users need to scan multiple sections quickly\n- Content is long and would benefit from progressive disclosure\n- Providing a \"show all\" and \"hide all\" option improves usability\n\n## Considerations\n\n- Track the open state of each accordion individually\n- Update the button text based on whether all sections are expanded or collapsed\n- Consider keyboard accessibility for the expand/collapse all functionality\n- Accordion headings should be descriptive and scannable\n", + "component": "", + "filePath": "docs/src/content/examples/hide-and-show-many-sections-of-information/index.mdx", + "urlPath": "examples/hide-and-show-many-sections-of-information", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "hide-and-show-many-sections-of-information", + "status": "published", + "categories": [] + }, + { + "id": "example-hero-banner-with-actions", + "title": "Hero banner with actions", + "description": "Create a hero banner with a call-to-action button to guide users toward the primary task on a landing page. ", + "content": "Create a hero banner with a call-to-action button to guide users toward the primary task on a landing page.\n\n## When to use\n\nUse this pattern when:\n- Creating a landing page for a service\n- You need a prominent call-to-action\n- Introducing users to a service or feature\n- Building a start page for public forms\n\n## Considerations\n\n- Use the \"start\" button type for primary actions\n- Keep the banner text concise and action-oriented\n- The actions slot positions the button appropriately\n- Ensure the heading clearly describes the service purpose\n", + "component": "", + "filePath": "docs/src/content/examples/hero-banner-with-actions/index.mdx", + "urlPath": "examples/hero-banner-with-actions", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "hero-banner-with-actions", + "status": "published", + "categories": [] + }, + { + "id": "example-header-with-navigation", + "title": "Header with navigation", + "description": "Implement a standard application header with navigation menus, search functionality, and sign-in links for government services. ", + "content": "Implement a standard application header with navigation menus, search functionality, and sign-in links for government services.\n\n## When to use\n\nUse this pattern when:\n- Building a government service application\n- You need consistent navigation across pages\n- Users need access to search, support, and authentication\n- Following the GoA header pattern\n\n## Considerations\n\n- Use the microsite header above the app header for government branding\n- Group related navigation items under dropdown menus\n- Include a sign-in link with the \"interactive\" class for proper styling\n- Consider mobile responsiveness for navigation items\n", + "component": "", + "filePath": "docs/src/content/examples/header-with-navigation/index.mdx", + "urlPath": "examples/header-with-navigation", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "header-with-navigation", + "status": "published", + "categories": [] + }, + { + "id": "example-header-with-menu-click-event", + "title": "Header with menu click event", + "description": "Handle custom menu click behavior in the app header, allowing you to intercept the mobile menu button click and implement custom functionality like custom navigation drawers. ", + "content": "Handle custom menu click behavior in the app header, allowing you to intercept the mobile menu button click and implement custom functionality like custom navigation drawers.\n\n## When to use\n\nUse this pattern when:\n- You need custom behavior when the mobile menu button is clicked\n- Building a custom navigation drawer or sidebar\n- The standard header menu behavior needs to be overridden\n- You want to control menu visibility programmatically\n\n## Considerations\n\n- Use the `fullMenuBreakpoint` prop to control when the hamburger menu appears\n- The `onMenuClick` handler fires when the menu button is clicked\n- Consider accessibility when implementing custom menu behavior\n- Test across different device widths to ensure proper behavior\n", + "component": "", + "filePath": "docs/src/content/examples/header-with-menu-click-event/index.mdx", + "urlPath": "examples/header-with-menu-click-event", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "header-with-menu-click-event", + "status": "published", + "categories": [] + }, + { + "id": "example-group-related-questions-together-on-a-question-page", + "title": "Group related questions together on a question page", + "description": "Group related form fields together on a single page to collect address information from users, making it easier to complete logically connected questions at once. ", + "content": "Group related form fields together on a single page to collect address information from users, making it easier to complete logically connected questions at once.\n\n## When to use\n\nUse this pattern when:\n- Collecting address or contact information\n- Form fields are logically related and should be completed together\n- Users need context between related fields\n- Following a question page pattern in a multi-step form\n\n## Considerations\n\n- Use clear, descriptive labels for each form field\n- Include a back link for navigation in multi-step forms\n- Consider adding a section title and subtitle to provide context\n- Use appropriate input widths based on expected content length\n", + "component": "", + "filePath": "docs/src/content/examples/group-related-questions-together-on-a-question-page/index.mdx", + "urlPath": "examples/group-related-questions-together-on-a-question-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "group-related-questions-together-on-a-question-page", + "status": "published", + "categories": [] + }, + { + "id": "example-give-context-before-asking-a-long-answer-question", + "title": "Give context before asking a long answer question", + "description": "Provide context and guidance before a long-answer text field to help users provide relevant information. ", + "content": "Provide context and guidance before a long-answer text field to help users provide relevant information.\n\n## When to use\n\nUse this pattern when:\n- Asking open-ended questions that require detailed responses\n- Users may not know what information is most helpful to provide\n- You want to encourage more useful and complete answers\n- Building citizen-facing forms with benefit inquiries or support requests\n\n## Considerations\n\n- Explain the purpose of the question briefly\n- Use a Details component to provide additional guidance without cluttering the form\n- Set appropriate character limits with `maxCount` and `countBy` props\n- Keep instructions focused on what will help process their request\n", + "component": "", + "filePath": "docs/src/content/examples/give-context-before-asking-a-long-answer-question/index.mdx", + "urlPath": "examples/give-context-before-asking-a-long-answer-question", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "give-context-before-asking-a-long-answer-question", + "status": "published", + "categories": [] + }, + { + "id": "example-give-background-information-before-asking-a-question", + "title": "Give background information before asking a question", + "description": "Provide explanatory context before asking a question to help users understand what is being asked. ", + "content": "Provide explanatory context before asking a question to help users understand what is being asked.\n\n## When to use\n\nUse this pattern when:\n- The question requires domain knowledge to answer correctly\n- Terms need clarification for users unfamiliar with the subject\n- Providing context will reduce confusion and incorrect answers\n- Building citizen-facing forms where accessibility of information is important\n\n## Considerations\n\n- Place context information before the question, not after\n- Use clear, plain language that citizens can understand\n- Suggest where users can get additional help if needed\n- Keep explanatory text focused and relevant to the question\n- Use appropriate heading hierarchy for screen reader accessibility\n", + "component": "", + "filePath": "docs/src/content/examples/give-background-information-before-asking-a-question/index.mdx", + "urlPath": "examples/give-background-information-before-asking-a-question", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "give-background-information-before-asking-a-question", + "status": "published", + "categories": [] + }, + { + "id": "example-form-stepper-with-controlled-navigation", + "title": "Form stepper with controlled navigation", + "description": "Create a multi-step form with controlled navigation using Previous/Next buttons. ", + "content": "Create a multi-step form with controlled navigation using Previous/Next buttons.\n\n## When to use\n\nUse this pattern when:\n- A form is too long to display on a single page\n- You want to guide users through a sequential process\n- Steps must be completed in order before proceeding\n- Users should not be able to skip ahead to incomplete steps\n\n## Considerations\n\n- Set an initial `step` value >= 1 to enable controlled mode\n- Steps that are \"Not started\" will not be clickable\n- Use Previous/Next buttons to control navigation programmatically\n- Validate step completion before allowing navigation forward\n- Consider showing skeleton content while loading step data\n", + "component": "", + "filePath": "docs/src/content/examples/form-stepper-with-controlled-navigation/index.mdx", + "urlPath": "examples/form-stepper-with-controlled-navigation", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "form-stepper-with-controlled-navigation", + "status": "published", + "categories": [] + }, + { + "id": "example-filter-data-in-a-table", + "title": "Filter data in a table", + "description": "Enable users to filter table data using search input and filter chips. ", + "content": "Enable users to filter table data using search input and filter chips.\n\n## When to use\n\nUse this pattern when:\n- Users need to narrow down large datasets\n- Multiple filters can be applied simultaneously\n- Filters should be visible and easily removable\n- You want to provide real-time filtering feedback\n\n## Considerations\n\n- Validate filter input to prevent empty or duplicate filters\n- Show applied filters as removable chips for visibility\n- Provide a \"Clear all\" option when multiple filters are applied\n- Display a \"No results found\" message when filters return empty results\n- Use case-insensitive matching for better user experience\n", + "component": "", + "filePath": "docs/src/content/examples/filter-data-in-a-table/index.mdx", + "urlPath": "examples/filter-data-in-a-table", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "filter-data-in-a-table", + "status": "published", + "categories": [] + }, + { + "id": "example-expand-or-collapse-part-of-a-form", + "title": "Expand or collapse part of a form", + "description": "Use accordions to organize form review sections that users can expand or collapse. ", + "content": "Use accordions to organize form review sections that users can expand or collapse.\n\n## When to use\n\nUse this pattern when:\n- Presenting a review summary of form sections before submission\n- Users need to verify information across multiple categories\n- Sections contain detailed information that may not need constant visibility\n- You want to highlight sections that have been updated\n\n## Considerations\n\n- Use `headingContent` to add badges or status indicators to section headers\n- Use definition lists (`
    `) for structured label/value pairs\n- Apply consistent spacing with CSS custom properties\n- Consider defaulting important or recently updated sections to expanded state\n", + "component": "", + "filePath": "docs/src/content/examples/expand-or-collapse-part-of-a-form/index.mdx", + "urlPath": "examples/expand-or-collapse-part-of-a-form", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "expand-or-collapse-part-of-a-form", + "status": "published", + "categories": [] + }, + { + "id": "example-dynamically-change-items-in-a-dropdown-list", + "title": "Dynamically change items in a dropdown list", + "description": "Update dropdown options based on the selection in another dropdown (cascading/dependent dropdowns). ", + "content": "Update dropdown options based on the selection in another dropdown (cascading/dependent dropdowns).\n\n## When to use\n\nUse this pattern when:\n- Options in one dropdown depend on the selection in another\n- You need to filter available choices based on a category\n- Building hierarchical selection interfaces (e.g., country/state/city)\n\n## Considerations\n\n- Use `mountType=\"reset\"` to clear and repopulate dropdown items\n- Generate unique keys for items to ensure proper re-rendering\n- Provide placeholder text to guide users when no selection is made\n- Consider loading states if data fetching is required\n", + "component": "", + "filePath": "docs/src/content/examples/dynamically-change-items-in-a-dropdown-list/index.mdx", + "urlPath": "examples/dynamically-change-items-in-a-dropdown-list", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "dynamically-change-items-in-a-dropdown-list", + "status": "published", + "categories": [] + }, + { + "id": "example-dynamically-add-an-item-to-a-dropdown-list", + "title": "Dynamically add an item to a dropdown list", + "description": "Allow users to add new items to a dropdown list dynamically. ", + "content": "Allow users to add new items to a dropdown list dynamically.\n\n## When to use\n\nUse this pattern when:\n- Users need to add custom options to a predefined list\n- The list of options can grow based on user input\n- You want to provide flexibility while maintaining structure\n\n## Considerations\n\n- Use the `mountType` prop to control where new items appear (prepend or append)\n- Validate input before adding to prevent empty or duplicate entries\n- Provide a reset option to restore the original list\n- Show clear feedback when items are added successfully\n", + "component": "", + "filePath": "docs/src/content/examples/dynamically-add-an-item-to-a-dropdown-list/index.mdx", + "urlPath": "examples/dynamically-add-an-item-to-a-dropdown-list", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "dynamically-add-an-item-to-a-dropdown-list", + "status": "published", + "categories": [] + }, + { + "id": "example-display-user-information", + "title": "Display user information", + "description": "Display user contact information and related data using containers with clear visual hierarchy. ", + "content": "Display user contact information and related data using containers with clear visual hierarchy.\n\n## When to use\n\nUse this pattern when:\n- Showing user profile or contact information\n- Displaying assigned advisor or representative details\n- Presenting upcoming dates or deadlines in a structured format\n- Creating summary views of user-related data\n\n## Considerations\n\n- Use containers to group related information\n- Apply consistent typography for labels and values\n- Use the `accent=\"thick\"` variant for important information sections\n- Include actions (like \"Add to calendar\") when relevant\n- Use tables with striped rows for date lists to improve scanability\n", + "component": "", + "filePath": "docs/src/content/examples/display-user-information/index.mdx", + "urlPath": "examples/display-user-information", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "display-user-information", + "status": "published", + "categories": [] + }, + { + "id": "example-display-numbers-in-a-table-so-they-can-be-scanned-easily", + "title": "Display numbers in a table so they can be scanned easily", + "description": "Right-align numeric columns in tables to make them easier to scan and compare. ", + "content": "Right-align numeric columns in tables to make them easier to scan and compare.\n\n## When to use\n\nUse this pattern when:\n- Displaying numeric data in table columns (IDs, amounts, counts)\n- Users need to quickly scan and compare values\n- The table contains a mix of text and numeric data\n\n## Considerations\n\n- Use the `goa-table-number-header` class on `` elements for numeric column headers\n- Use the `goa-table-number-column` class on `` elements for numeric data cells\n- Right-alignment helps users visually compare magnitudes of numbers\n- Consider consistent decimal formatting for financial data\n", + "component": "", + "filePath": "docs/src/content/examples/display-numbers-in-a-table-so-they-can-be-scanned-easily/index.mdx", + "urlPath": "examples/display-numbers-in-a-table-so-they-can-be-scanned-easily", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "display-numbers-in-a-table-so-they-can-be-scanned-easily", + "status": "published", + "categories": [] + }, + { + "id": "example-disabled-button-with-a-required-field", + "title": "Disabled button with a required field", + "description": "Disable a submit button until required form fields are completed. ", + "content": "Disable a submit button until required form fields are completed.\n\n## When to use\n\nUse this pattern when:\n- A form has required fields that must be filled before submission\n- You want to provide visual feedback that the form is incomplete\n- Preventing invalid form submissions is important\n\n## Considerations\n\n- Ensure the disabled state is visually distinct and accessible\n- Consider showing validation messages when users try to interact with disabled buttons\n- Use the `requirement=\"required\"` prop on form items to indicate mandatory fields\n- Enable the button as soon as all required fields have valid values\n", + "component": "", + "filePath": "docs/src/content/examples/disabled-button-with-a-required-field/index.mdx", + "urlPath": "examples/disabled-button-with-a-required-field", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "disabled-button-with-a-required-field", + "status": "published", + "categories": [] + }, + { + "id": "example-copy-to-clipboard", + "title": "Copy to clipboard", + "description": "Allow users to quickly copy text or data to their clipboard with a single click. ", + "content": "Allow users to quickly copy text or data to their clipboard with a single click.\n\n## When to use\n\nUse this pattern when:\n- Users need to copy values like tokens, codes, or IDs\n- Quick access to copy functionality improves workflow\n- The copied value is clearly visible alongside the copy action\n- Users benefit from instant feedback when copying\n\n## Considerations\n\n- Show visual feedback (\"Copied\") when the copy action succeeds\n- Use a tooltip to indicate the copy action before and after clicking\n- Position the copy button near the content being copied\n- Reset the \"Copied\" state after a short delay\n", + "component": "", + "filePath": "docs/src/content/examples/copy-to-clipboard/index.mdx", + "urlPath": "examples/copy-to-clipboard", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "copy-to-clipboard", + "status": "published", + "categories": [] + }, + { + "id": "example-confirm-that-an-application-was-submitted", + "title": "Confirm that an application was submitted", + "description": "Display a confirmation screen to indicate successful application submission. ", + "content": "Display a confirmation screen to indicate successful application submission.\n\n## When to use\n\nUse this pattern when:\n- A user has successfully completed an application or form\n- You need to confirm the submission was received\n- Users need a confirmation number for their records\n- You want to provide next steps after submission\n\n## Considerations\n\n- Use a success callout to clearly indicate success\n- Include a confirmation number users can reference later\n- Mention where a confirmation email will be sent\n- Provide clear next steps and navigation options\n- Include contact information for questions\n", + "component": "", + "filePath": "docs/src/content/examples/confirm-that-an-application-was-submitted/index.mdx", + "urlPath": "examples/confirm-that-an-application-was-submitted", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "confirm-that-an-application-was-submitted", + "status": "published", + "categories": [] + }, + { + "id": "example-confirm-before-navigating-away", + "title": "Confirm before navigating away", + "description": "Prompt the user in a modal before navigating to a new route to preserve context. ", + "content": "Prompt the user in a modal before navigating to a new route to preserve context.\n\n## When to use\n\nUse this pattern when:\n- The user has unsaved changes that would be lost\n- Navigation would interrupt an important workflow\n- You need to confirm the user's intent to leave the page\n- Context or data would be lost on navigation\n\n## Considerations\n\n- Allow users to cancel and stay on the current page\n- Use setTimeout for route changes after modal closes for smooth transitions\n- The secondary button should cancel the navigation\n- The primary button confirms the route change\n", + "component": "", + "filePath": "docs/src/content/examples/confirm-before-navigating-away/index.mdx", + "urlPath": "examples/confirm-before-navigating-away", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "confirm-before-navigating-away", + "status": "published", + "categories": [] + }, + { + "id": "example-confirm-a-destructive-action", + "title": "Confirm a destructive action", + "description": "Confirm a destructive action like deletion to prevent accidental data loss. ", + "content": "Confirm a destructive action like deletion to prevent accidental data loss.\n\n## When to use\n\nUse this pattern when:\n- A user is about to delete data permanently\n- The action cannot be undone\n- You need to prevent accidental destructive actions\n- Data loss would have significant impact\n\n## Considerations\n\n- Use the destructive button variant to emphasize the danger\n- Clearly state that the action cannot be undone\n- Provide a cancel option that's easy to access\n- Use a tertiary button with a trash icon for the initial action\n", + "component": "", + "filePath": "docs/src/content/examples/confirm-a-destructive-action/index.mdx", + "urlPath": "examples/confirm-a-destructive-action", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "confirm-a-destructive-action", + "status": "published", + "categories": [] + }, + { + "id": "example-confirm-a-change", + "title": "Confirm a change", + "description": "Ask the user to confirm a proposed change before it is applied. ", + "content": "Ask the user to confirm a proposed change before it is applied.\n\n## When to use\n\nUse this pattern when:\n- A user has made changes that need explicit confirmation\n- You want to show a before/after comparison\n- The change includes additional options like an effective date\n- Users should have the opportunity to undo the change\n\n## Considerations\n\n- Show clear before and after states for the change\n- Provide an \"undo\" option alongside the confirm action\n- Include any relevant additional inputs (like effective date)\n- Use a secondary button for the cancel/undo action\n", + "component": "", + "filePath": "docs/src/content/examples/confirm-a-change/index.mdx", + "urlPath": "examples/confirm-a-change", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "confirm-a-change", + "status": "published", + "categories": [] + }, + { + "id": "example-communicate-a-future-service-outage", + "title": "Communicate a future service outage", + "description": "Display a clear message to inform users about an upcoming service outage, including the date, time, and expected impact on service availability. ", + "content": "Display a clear message to inform users about an upcoming service outage, including the date, time, and expected impact on service availability.\n\n## When to use\n\nUse this pattern when:\n- Scheduled maintenance will affect service availability\n- Users need advance notice about system downtime\n- You need to communicate specific dates and times for an outage\n- Users should know how to get support during the outage\n\n## Considerations\n\n- Use the \"important\" notification type to draw attention\n- Include specific dates, times, and duration of the outage\n- Provide contact information for questions or concerns\n- Place the notification prominently on affected pages\n", + "component": "", + "filePath": "docs/src/content/examples/communicate-a-future-service-outage/index.mdx", + "urlPath": "examples/communicate-a-future-service-outage", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "communicate-a-future-service-outage", + "status": "published", + "categories": [] + }, + { + "id": "example-card-view-of-case-files", + "title": "Card view of case files", + "description": "Present a visual overview of individual case files in a card format for scanning and access. ", + "content": "Present a visual overview of individual case files in a card format for scanning and access.\n\n## When to use\n\nUse this pattern when:\n- Displaying a list of case files or records that workers need to manage\n- Each record has a status that needs to be clearly visible\n- Users need quick access to view or edit individual records\n- Showing summary information with actions for each item\n\n## Considerations\n\n- Use badges to clearly indicate the status of each case\n- Provide consistent action buttons (Edit, View) based on the case status\n- Include key identifying information like dates and fiscal years\n- Consider responsive layout for smaller screens\n", + "component": "", + "filePath": "docs/src/content/examples/card-view-of-case-files/index.mdx", + "urlPath": "examples/card-view-of-case-files", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "card-view-of-case-files", + "status": "published", + "categories": [] + }, + { + "id": "example-card-grid", + "title": "Card grid", + "description": "Display multiple cards in a grid layout, each containing related content or actions. ", + "content": "Display multiple cards in a grid layout, each containing related content or actions.\n\n## When to use\n\nUse this pattern when:\n- Presenting multiple related items in a scannable format\n- Creating a dashboard or landing page with navigable sections\n- Users need to choose between several options or services\n- Content can be grouped into discrete, equally-weighted items\n\n## Considerations\n\n- Use consistent card heights where possible for visual alignment\n- Link titles should clearly describe where the user will navigate\n- Keep descriptions concise to maintain scannability\n- Use the grid's minChildWidth to ensure cards wrap appropriately on smaller screens\n", + "component": "", + "filePath": "docs/src/content/examples/card-grid/index.mdx", + "urlPath": "examples/card-grid", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "card-grid", + "status": "published", + "categories": [] + }, + { + "id": "example-button-with-icon", + "title": "Button with Icon", + "description": "Shows how to add leading or trailing icons to buttons for enhanced visual communication. ", + "content": "Shows how to add leading or trailing icons to buttons for enhanced visual communication.\n\n## Use cases\n\n- Back navigation buttons with arrow icon\n- Add buttons with plus icon\n- Download buttons with download icon\n- External link buttons with external icon\n\n## Considerations\n\n- Keep icon and text semantically aligned\n- Don't use icons just for decoration\n- Leading icons for actions that \"go back\" or \"add\"\n- Trailing icons for actions that \"go forward\" or \"external\"\n", + "component": "", + "filePath": "docs/src/content/examples/button-with-icon/index.mdx", + "urlPath": "examples/button-with-icon", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "button-with-icon", + "status": "published", + "categories": [] + }, + { + "id": "example-basic-page-layout", + "title": "Basic page layout", + "description": "A basic page template to use as a starting point. ", + "content": "A basic page template to use as a starting point.\n\n## When to use\n\nUse this pattern when:\n- Starting a new government service or application\n- You need a standard page structure with header and footer\n- Building pages that need consistent layout across your service\n\n## Considerations\n\n- Include both microsite header and app header for proper government branding\n- Use page-block to constrain content width appropriately\n- The skeleton loaders show content areas during loading states\n- Always include an app footer for consistent navigation and required links\n", + "component": "", + "filePath": "docs/src/content/examples/basic-page-layout/index.mdx", + "urlPath": "examples/basic-page-layout", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "basic-page-layout", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-one-question-at-a-time", + "title": "Ask a user one question at a time", + "description": "Ask a user one question at a time. ", + "content": "Ask a user one question at a time.\n\n## When to use\n\nUse this pattern when:\n- Building a public-facing form for citizens\n- You want to reduce cognitive load by focusing on one question\n- The question requires careful consideration from the user\n- Following the one-question-per-page pattern for government services\n\n## Considerations\n\n- Include a back link to allow users to navigate to previous questions\n- Use a large label size to make the question prominent\n- Provide help text when the question may need clarification\n- Use a clear call-to-action button to progress\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-one-question-at-a-time/index.mdx", + "urlPath": "examples/ask-a-user-one-question-at-a-time", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-one-question-at-a-time", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-for-dollar-amounts", + "title": "Ask a user for dollar amounts", + "description": "Prompt users to enter monetary values using a consistent input format that supports validation and currency symbols. ", + "content": "Prompt users to enter monetary values using a consistent input format that supports validation and currency symbols.\n\n## When to use\n\nUse this pattern when:\n- Collecting cost or expense information\n- Users need to enter multiple monetary values\n- You want consistent currency formatting\n\n## Considerations\n\n- Use the `leadingContent` prop to show the $ symbol\n- Consider if decimal places are needed\n- Group related amounts together\n- Provide clear labels for each amount field\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-for-dollar-amounts/index.mdx", + "urlPath": "examples/ask-a-user-for-dollar-amounts", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-for-dollar-amounts", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-for-direct-deposit-information", + "title": "Ask a user for direct deposit information", + "description": "Gather banking details from users to enable direct deposit, including account number and financial institution information. ", + "content": "Gather banking details from users to enable direct deposit, including account number and financial institution information.\n\n## When to use\n\nUse this pattern when:\n- Setting up direct deposit for payments or refunds\n- Collecting banking information for recurring transactions\n- Users need to provide financial institution details\n\n## Considerations\n\n- Provide clear help text about where to find each number\n- Use the details component to show visual guidance (cheque image)\n- Set appropriate field widths based on expected input length\n- Be clear about security and how the information will be used\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-for-direct-deposit-information/index.mdx", + "urlPath": "examples/ask-a-user-for-direct-deposit-information", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-for-direct-deposit-information", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-for-an-indian-registration-number", + "title": "Ask a user for an Indian registration number", + "description": "Request a user's Indian registration number with appropriate validation and context. ", + "content": "Request a user's Indian registration number with appropriate validation and context.\n\n## When to use\n\nUse this pattern when:\n- Collecting Indigenous identity information\n- The registration number is required for benefits or services\n- You need to validate the format (3-digit band, up to 5-digit family, 2-digit position)\n\n## Considerations\n\n- Use separate fields for each component of the number\n- Set appropriate field widths to hint at expected input length\n- Provide clear help text for each field\n- Be respectful of the cultural significance of this information\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-for-an-indian-registration-number/index.mdx", + "urlPath": "examples/ask-a-user-for-an-indian-registration-number", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-for-an-indian-registration-number", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-for-an-address", + "title": "Ask a user for an address", + "description": "Collect a complete mailing address from the user, including fields like street, city, and postal code. ", + "content": "Collect a complete mailing address from the user, including fields like street, city, and postal code.\n\n## When to use\n\nUse this pattern when:\n- Collecting mailing addresses for correspondence\n- Gathering location information for services\n- Users need to provide physical address details\n\n## Considerations\n\n- Pre-select the most common province/territory\n- Use appropriate field widths (postal code is always 7 characters)\n- Consider address autocomplete for improved UX\n- Group related fields (province and postal code on same row)\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-for-an-address/index.mdx", + "urlPath": "examples/ask-a-user-for-an-address", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-for-an-address", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-for-a-birthday", + "title": "Ask a user for a birthday", + "description": "Asks for a user's birthday using the date picker component. ", + "content": "Asks for a user's birthday using the date picker component.\n\n## When to use\n\nUse this pattern when you need to collect a date of birth for:\n- Age verification\n- Identity confirmation\n- Benefits eligibility\n\n## Considerations\n\n- Consider whether you really need exact birthday vs just year or age range\n- The date picker provides a consistent, accessible date selection experience\n- Users can type the date directly or use the calendar picker\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-for-a-birthday/index.mdx", + "urlPath": "examples/ask-a-user-for-a-birthday", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-for-a-birthday", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-long-answer-question-with-a-maximum-word-count", + "title": "Ask a long answer question with a maximum word count", + "description": "Restrict a long answer input to a maximum number of words or characters. ", + "content": "Restrict a long answer input to a maximum number of words or characters.\n\n## When to use\n\nUse this pattern when:\n- Collecting open-ended responses\n- You need to limit response length\n- Users benefit from seeing remaining word count\n\n## Considerations\n\n- Choose between word count or character count based on the use case\n- Provide clear guidance on expected response length\n- Show remaining count to help users gauge their response\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-long-answer-question-with-a-maximum-word-count/index.mdx", + "urlPath": "examples/ask-a-long-answer-question-with-a-maximum-word-count", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-long-answer-question-with-a-maximum-word-count", + "status": "published", + "categories": [] + }, + { + "id": "example-add-another-item-in-a-modal", + "title": "Add another item in a modal", + "description": "Add a new item within a modal window without navigating away from the current context. ", + "content": "Add a new item within a modal window without navigating away from the current context.\n\n## When to use\n\nUse this pattern when:\n- Adding items to an existing list\n- The form is short and focused\n- Users need to stay in context of the main view\n\n## Considerations\n\n- Keep modal forms focused and brief\n- Provide clear cancel and save actions\n- Validate input before allowing save\n", + "component": "", + "filePath": "docs/src/content/examples/add-another-item-in-a-modal/index.mdx", + "urlPath": "examples/add-another-item-in-a-modal", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "add-another-item-in-a-modal", + "status": "published", + "categories": [] + }, + { + "id": "example-add-and-edit-lots-of-filters", + "title": "Add and edit lots of filters", + "description": "Add and edit filters using a drawer. This pattern is useful when you have many filter options that would clutter the main interface. ", + "content": "Add and edit filters using a drawer. This pattern is useful when you have many filter options that would clutter the main interface.\n\n## When to use\n\nUse this pattern when:\n- There are many filter options to manage\n- Filters need to persist across sessions\n- Users need to see current filter state while editing\n\n## Considerations\n\n- Group related filters together\n- Provide clear apply/reset actions\n- Show active filter count on the trigger button\n", + "component": "", + "filePath": "docs/src/content/examples/add-and-edit-lots-of-filters/index.mdx", + "urlPath": "examples/add-and-edit-lots-of-filters", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "add-and-edit-lots-of-filters", + "status": "published", + "categories": [] + }, + { + "id": "example-add-a-record-using-a-drawer", + "title": "Add a record using a drawer", + "description": "Add a record using a drawer. The drawer slides in from the side to allow data entry without navigating away from the current view. ", + "content": "Add a record using a drawer. The drawer slides in from the side to allow data entry without navigating away from the current view.\n\n## When to use\n\nUse this pattern when:\n- Adding records to a list or table\n- The form is secondary to the main content\n- Users need to see the main view while entering data\n\n## Considerations\n\n- Keep the drawer width appropriate for the form content\n- Provide clear save/cancel actions\n- Consider validation before closing\n", + "component": "", + "filePath": "docs/src/content/examples/add-a-record-using-a-drawer/index.mdx", + "urlPath": "examples/add-a-record-using-a-drawer", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "add-a-record-using-a-drawer", + "status": "published", + "categories": [] + }, + { + "id": "example-add-a-filter-chip", + "title": "Add a filter chip", + "description": "Allow users to apply filters using selectable chips, which visually represent active filters and can be removed to update results dynamically. ", + "content": "Allow users to apply filters using selectable chips, which visually represent active filters and can be removed to update results dynamically.\n\n## When to use\n\nUse this pattern when:\n- Users need to apply multiple filters to a dataset\n- Filters should be visible and easily removable\n- You want to show active filter state clearly\n\n## Considerations\n\n- Each chip should clearly indicate what filter it represents\n- Provide visual feedback when adding/removing filters\n- Consider the order of chips (most recent, alphabetical, etc.)\n", + "component": "", + "filePath": "docs/src/content/examples/add-a-filter-chip/index.mdx", + "urlPath": "examples/add-a-filter-chip", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "add-a-filter-chip", + "status": "published", + "categories": [] + }, + { + "id": "tokens-color", + "title": "Color Tokens", + "description": "Color design tokens for text, backgrounds, borders, interactive elements, and status indicators", + "content": "--goa-color-interactive-default --goa-color-interactive-secondary --goa-color-interactive-hover --goa-color-interactive-secondary-hover --goa-color-interactive-disabled --goa-color-interactive-error --goa-color-interactive-error-hover --goa-color-interactive-error-disabled --goa-color-interactive-focus --goa-color-interactive-focus-black --goa-color-interactive-visited --goa-color-brand-default --goa-color-brand-dark --goa-color-brand-light --goa-color-text-default --goa-color-text-secondary --goa-color-text-light --goa-color-text-disabled --goa-color-info-default --goa-color-info-light --goa-color-info-dark --goa-color-info-background --goa-color-info-border --goa-color-info-text --goa-color-info-textDark --goa-color-info-textInverse --goa-color-warning-default --goa-color-warning-light --goa-color-warning-dark --goa-color-warning-background --goa-color-warning-border --goa-color-warning-text --goa-color-warning-textDark --goa-color-important-default --goa-color-important-light --goa-color-important-dark --goa-color-important-background --goa-color-important-border --goa-color-important-text --goa-color-important-text-dark --goa-color-emergency-default --goa-color-emergency-light --goa-color-emergency-dark --goa-color-emergency-background --goa-color-emergency-border --goa-color-emergency-text --goa-color-emergency-textDark --goa-color-emergency-textInverse --goa-color-success-default --goa-color-success-light --goa-color-success-dark --goa-color-success-background --goa-color-success-border --goa-color-success-text --goa-color-success-textDark --goa-color-success-textInverse --goa-color-critical-default --goa-color-greyscale-50 --goa-color-greyscale-100 --goa-color-greyscale-150 --goa-color-greyscale-200 --goa-color-greyscale-300 --goa-color-greyscale-400 --goa-color-greyscale-500 --goa-color-greyscale-600 --goa-color-greyscale-700 --goa-color-greyscale-800 --goa-color-greyscale-black --goa-color-greyscale-white --goa-color-extended-sky-default --goa-color-extended-sky-light --goa-color-extended-sky-border --goa-color-extended-sky-text --goa-color-extended-pasture-default --goa-color-extended-pasture-light --goa-color-extended-pasture-border --goa-color-extended-pasture-text --goa-color-extended-sunset-default --goa-color-extended-sunset-light --goa-color-extended-sunset-border --goa-color-extended-sunset-text --goa-color-extended-dawn-default --goa-color-extended-dawn-light --goa-color-extended-dawn-border --goa-color-extended-dawn-text --goa-color-extended-lilac-default --goa-color-extended-lilac-light --goa-color-extended-lilac-border --goa-color-extended-lilac-text --goa-color-extended-prairie-default --goa-color-extended-prairie-light --goa-color-extended-prairie-border --goa-color-extended-prairie-text", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "color", + "design token", + "palette", + "theme" + ], + "type": "token", + "slug": "color", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-default", + "title": "--goa-color-interactive-default", + "name": "--goa-color-interactive-default", + "description": "color token: interactive default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-secondary", + "title": "--goa-color-interactive-secondary", + "name": "--goa-color-interactive-secondary", + "description": "color token: interactive secondary", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-secondary", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-hover", + "title": "--goa-color-interactive-hover", + "name": "--goa-color-interactive-hover", + "description": "color token: interactive hover", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-hover", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-secondary-hover", + "title": "--goa-color-interactive-secondary-hover", + "name": "--goa-color-interactive-secondary-hover", + "description": "color token: interactive secondary hover", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-secondary-hover", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-disabled", + "title": "--goa-color-interactive-disabled", + "name": "--goa-color-interactive-disabled", + "description": "color token: interactive disabled", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-disabled", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-error", + "title": "--goa-color-interactive-error", + "name": "--goa-color-interactive-error", + "description": "color token: interactive error", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-error", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-error-hover", + "title": "--goa-color-interactive-error-hover", + "name": "--goa-color-interactive-error-hover", + "description": "color token: interactive error hover", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-error-hover", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-error-disabled", + "title": "--goa-color-interactive-error-disabled", + "name": "--goa-color-interactive-error-disabled", + "description": "color token: interactive error disabled", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-error-disabled", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-focus", + "title": "--goa-color-interactive-focus", + "name": "--goa-color-interactive-focus", + "description": "color token: interactive focus", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-focus", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-focus-black", + "title": "--goa-color-interactive-focus-black", + "name": "--goa-color-interactive-focus-black", + "description": "color token: interactive focus black", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-focus-black", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-visited", + "title": "--goa-color-interactive-visited", + "name": "--goa-color-interactive-visited", + "description": "color token: interactive visited", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-visited", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-brand-default", + "title": "--goa-color-brand-default", + "name": "--goa-color-brand-default", + "description": "color token: brand default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-brand-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-brand-dark", + "title": "--goa-color-brand-dark", + "name": "--goa-color-brand-dark", + "description": "color token: brand dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-brand-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-brand-light", + "title": "--goa-color-brand-light", + "name": "--goa-color-brand-light", + "description": "color token: brand light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-brand-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-text-default", + "title": "--goa-color-text-default", + "name": "--goa-color-text-default", + "description": "color token: text default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-text-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-text-secondary", + "title": "--goa-color-text-secondary", + "name": "--goa-color-text-secondary", + "description": "color token: text secondary", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-text-secondary", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-text-light", + "title": "--goa-color-text-light", + "name": "--goa-color-text-light", + "description": "color token: text light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-text-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-text-disabled", + "title": "--goa-color-text-disabled", + "name": "--goa-color-text-disabled", + "description": "color token: text disabled", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-text-disabled", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-default", + "title": "--goa-color-info-default", + "name": "--goa-color-info-default", + "description": "color token: info default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-light", + "title": "--goa-color-info-light", + "name": "--goa-color-info-light", + "description": "color token: info light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-dark", + "title": "--goa-color-info-dark", + "name": "--goa-color-info-dark", + "description": "color token: info dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-background", + "title": "--goa-color-info-background", + "name": "--goa-color-info-background", + "description": "color token: info background", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-background", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-border", + "title": "--goa-color-info-border", + "name": "--goa-color-info-border", + "description": "color token: info border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-text", + "title": "--goa-color-info-text", + "name": "--goa-color-info-text", + "description": "color token: info text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-textDark", + "title": "--goa-color-info-textDark", + "name": "--goa-color-info-textDark", + "description": "color token: info textDark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-textDark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-textInverse", + "title": "--goa-color-info-textInverse", + "name": "--goa-color-info-textInverse", + "description": "color token: info textInverse", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-textInverse", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-default", + "title": "--goa-color-warning-default", + "name": "--goa-color-warning-default", + "description": "color token: warning default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-light", + "title": "--goa-color-warning-light", + "name": "--goa-color-warning-light", + "description": "color token: warning light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-dark", + "title": "--goa-color-warning-dark", + "name": "--goa-color-warning-dark", + "description": "color token: warning dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-background", + "title": "--goa-color-warning-background", + "name": "--goa-color-warning-background", + "description": "color token: warning background", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-background", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-border", + "title": "--goa-color-warning-border", + "name": "--goa-color-warning-border", + "description": "color token: warning border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-text", + "title": "--goa-color-warning-text", + "name": "--goa-color-warning-text", + "description": "color token: warning text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-textDark", + "title": "--goa-color-warning-textDark", + "name": "--goa-color-warning-textDark", + "description": "color token: warning textDark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-textDark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-default", + "title": "--goa-color-important-default", + "name": "--goa-color-important-default", + "description": "color token: important default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-light", + "title": "--goa-color-important-light", + "name": "--goa-color-important-light", + "description": "color token: important light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-dark", + "title": "--goa-color-important-dark", + "name": "--goa-color-important-dark", + "description": "color token: important dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-background", + "title": "--goa-color-important-background", + "name": "--goa-color-important-background", + "description": "color token: important background", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-background", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-border", + "title": "--goa-color-important-border", + "name": "--goa-color-important-border", + "description": "color token: important border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-text", + "title": "--goa-color-important-text", + "name": "--goa-color-important-text", + "description": "color token: important text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-text-dark", + "title": "--goa-color-important-text-dark", + "name": "--goa-color-important-text-dark", + "description": "color token: important text dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-text-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-default", + "title": "--goa-color-emergency-default", + "name": "--goa-color-emergency-default", + "description": "color token: emergency default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-light", + "title": "--goa-color-emergency-light", + "name": "--goa-color-emergency-light", + "description": "color token: emergency light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-dark", + "title": "--goa-color-emergency-dark", + "name": "--goa-color-emergency-dark", + "description": "color token: emergency dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-background", + "title": "--goa-color-emergency-background", + "name": "--goa-color-emergency-background", + "description": "color token: emergency background", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-background", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-border", + "title": "--goa-color-emergency-border", + "name": "--goa-color-emergency-border", + "description": "color token: emergency border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-text", + "title": "--goa-color-emergency-text", + "name": "--goa-color-emergency-text", + "description": "color token: emergency text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-textDark", + "title": "--goa-color-emergency-textDark", + "name": "--goa-color-emergency-textDark", + "description": "color token: emergency textDark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-textDark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-textInverse", + "title": "--goa-color-emergency-textInverse", + "name": "--goa-color-emergency-textInverse", + "description": "color token: emergency textInverse", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-textInverse", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-default", + "title": "--goa-color-success-default", + "name": "--goa-color-success-default", + "description": "color token: success default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-light", + "title": "--goa-color-success-light", + "name": "--goa-color-success-light", + "description": "color token: success light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-dark", + "title": "--goa-color-success-dark", + "name": "--goa-color-success-dark", + "description": "color token: success dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-background", + "title": "--goa-color-success-background", + "name": "--goa-color-success-background", + "description": "color token: success background", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-background", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-border", + "title": "--goa-color-success-border", + "name": "--goa-color-success-border", + "description": "color token: success border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-text", + "title": "--goa-color-success-text", + "name": "--goa-color-success-text", + "description": "color token: success text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-text", "status": "stable", - "category": "content-layout", + "category": "color" + }, + { + "id": "token-color-success-textDark", + "title": "--goa-color-success-textDark", + "name": "--goa-color-success-textDark", + "description": "color token: success textDark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "expand", - "blind", - "collapse", - "content layout", - "expandable panel", - "expand" + "token", + "design token", + "color" ], - "slug": "accordion" + "type": "token", + "slug": "color-success-textDark", + "status": "stable", + "category": "color" }, { - "type": "component", - "id": "app-header", - "name": "Header", - "description": "Provide structure to help users find their way around the service.", + "id": "token-color-success-textInverse", + "title": "--goa-color-success-textInverse", + "name": "--goa-color-success-textInverse", + "description": "color token: success textInverse", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-textInverse", "status": "stable", - "category": "structure-and-navigation", + "category": "color" + }, + { + "id": "token-color-critical-default", + "title": "--goa-color-critical-default", + "name": "--goa-color-critical-default", + "description": "color token: critical default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "app header", - "global navigation", - "header", - "header and navigation", - "main navigation", - "navigation header", - "navigation menu", - "primary navigation", - "service header", - "structure and navigation", - "top navigation" + "token", + "design token", + "color" ], - "slug": "app-header" + "type": "token", + "slug": "color-critical-default", + "status": "stable", + "category": "color" }, { - "type": "component", - "id": "badge", - "name": "Badge", - "description": "Small labels which hold small amounts of information, system feedback, or states.", + "id": "token-color-greyscale-50", + "title": "--goa-color-greyscale-50", + "name": "--goa-color-greyscale-50", + "description": "color token: greyscale 50", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-50", "status": "stable", - "category": "feedback-and-alerts", + "category": "color" + }, + { + "id": "token-color-greyscale-100", + "title": "--goa-color-greyscale-100", + "name": "--goa-color-greyscale-100", + "description": "color token: greyscale 100", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "feedback and alerts", - "label", - "lozenge", - "status", - "tag", - "token" + "token", + "design token", + "color" ], - "slug": "badge" + "type": "token", + "slug": "color-greyscale-100", + "status": "stable", + "category": "color" }, { - "type": "component", - "id": "block", - "name": "Block", - "description": "Group components into a block with consistent space between.", + "id": "token-color-greyscale-150", + "title": "--goa-color-greyscale-150", + "name": "--goa-color-greyscale-150", + "description": "color token: greyscale 150", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-150", "status": "stable", - "category": "utilities", + "category": "color" + }, + { + "id": "token-color-greyscale-200", + "title": "--goa-color-greyscale-200", + "name": "--goa-color-greyscale-200", + "description": "color token: greyscale 200", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "utility" + "token", + "design token", + "color" ], - "slug": "block" + "type": "token", + "slug": "color-greyscale-200", + "status": "stable", + "category": "color" }, { - "type": "component", - "id": "button-group", - "name": "Button group", - "description": "Display multiple related actions stacked or in a horizontal row to help with arrangement and spacing.", + "id": "token-color-greyscale-300", + "title": "--goa-color-greyscale-300", + "name": "--goa-color-greyscale-300", + "description": "color token: greyscale 300", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-300", "status": "stable", - "category": "inputs-and-actions", + "category": "color" + }, + { + "id": "token-color-greyscale-400", + "title": "--goa-color-greyscale-400", + "name": "--goa-color-greyscale-400", + "description": "color token: greyscale 400", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "action", - "inputs and actions", - "submit" + "token", + "design token", + "color" ], - "slug": "button-group" + "type": "token", + "slug": "color-greyscale-400", + "status": "stable", + "category": "color" }, { - "type": "component", - "id": "button", - "name": "Button", - "description": "Carry out an important action or navigate to another page.", + "id": "token-color-greyscale-500", + "title": "--goa-color-greyscale-500", + "name": "--goa-color-greyscale-500", + "description": "color token: greyscale 500", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-500", "status": "stable", - "category": "inputs-and-actions", + "category": "color" + }, + { + "id": "token-color-greyscale-600", + "title": "--goa-color-greyscale-600", + "name": "--goa-color-greyscale-600", + "description": "color token: greyscale 600", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "action", - "inputs and actions", - "submit" + "token", + "design token", + "color" ], - "slug": "button" + "type": "token", + "slug": "color-greyscale-600", + "status": "stable", + "category": "color" }, { - "type": "component", - "id": "callout", - "name": "Callout", - "description": "Communicate important information through a strong visual emphasis.", + "id": "token-color-greyscale-700", + "title": "--goa-color-greyscale-700", + "name": "--goa-color-greyscale-700", + "description": "color token: greyscale 700", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-700", "status": "stable", - "category": "feedback-and-alerts", + "category": "color" + }, + { + "id": "token-color-greyscale-800", + "title": "--goa-color-greyscale-800", + "name": "--goa-color-greyscale-800", + "description": "color token: greyscale 800", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "alert", - "feedback and alerts", - "show more information" + "token", + "design token", + "color" ], - "slug": "callout" + "type": "token", + "slug": "color-greyscale-800", + "status": "stable", + "category": "color" }, { - "type": "component", - "id": "checkbox-list", - "name": "Checkbox list", - "description": "A multiple selection input.", + "id": "token-color-greyscale-black", + "title": "--goa-color-greyscale-black", + "name": "--goa-color-greyscale-black", + "description": "color token: greyscale black", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-black", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-white", + "title": "--goa-color-greyscale-white", + "name": "--goa-color-greyscale-white", + "description": "color token: greyscale white", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-white", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sky-default", + "title": "--goa-color-extended-sky-default", + "name": "--goa-color-extended-sky-default", + "description": "color token: extended sky default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sky-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sky-light", + "title": "--goa-color-extended-sky-light", + "name": "--goa-color-extended-sky-light", + "description": "color token: extended sky light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sky-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sky-border", + "title": "--goa-color-extended-sky-border", + "name": "--goa-color-extended-sky-border", + "description": "color token: extended sky border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sky-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sky-text", + "title": "--goa-color-extended-sky-text", + "name": "--goa-color-extended-sky-text", + "description": "color token: extended sky text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sky-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-pasture-default", + "title": "--goa-color-extended-pasture-default", + "name": "--goa-color-extended-pasture-default", + "description": "color token: extended pasture default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-pasture-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-pasture-light", + "title": "--goa-color-extended-pasture-light", + "name": "--goa-color-extended-pasture-light", + "description": "color token: extended pasture light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-pasture-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-pasture-border", + "title": "--goa-color-extended-pasture-border", + "name": "--goa-color-extended-pasture-border", + "description": "color token: extended pasture border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-pasture-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-pasture-text", + "title": "--goa-color-extended-pasture-text", + "name": "--goa-color-extended-pasture-text", + "description": "color token: extended pasture text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-pasture-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sunset-default", + "title": "--goa-color-extended-sunset-default", + "name": "--goa-color-extended-sunset-default", + "description": "color token: extended sunset default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sunset-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sunset-light", + "title": "--goa-color-extended-sunset-light", + "name": "--goa-color-extended-sunset-light", + "description": "color token: extended sunset light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sunset-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sunset-border", + "title": "--goa-color-extended-sunset-border", + "name": "--goa-color-extended-sunset-border", + "description": "color token: extended sunset border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sunset-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sunset-text", + "title": "--goa-color-extended-sunset-text", + "name": "--goa-color-extended-sunset-text", + "description": "color token: extended sunset text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sunset-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-dawn-default", + "title": "--goa-color-extended-dawn-default", + "name": "--goa-color-extended-dawn-default", + "description": "color token: extended dawn default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-dawn-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-dawn-light", + "title": "--goa-color-extended-dawn-light", + "name": "--goa-color-extended-dawn-light", + "description": "color token: extended dawn light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-dawn-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-dawn-border", + "title": "--goa-color-extended-dawn-border", + "name": "--goa-color-extended-dawn-border", + "description": "color token: extended dawn border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-dawn-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-dawn-text", + "title": "--goa-color-extended-dawn-text", + "name": "--goa-color-extended-dawn-text", + "description": "color token: extended dawn text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-dawn-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-lilac-default", + "title": "--goa-color-extended-lilac-default", + "name": "--goa-color-extended-lilac-default", + "description": "color token: extended lilac default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-lilac-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-lilac-light", + "title": "--goa-color-extended-lilac-light", + "name": "--goa-color-extended-lilac-light", + "description": "color token: extended lilac light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-lilac-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-lilac-border", + "title": "--goa-color-extended-lilac-border", + "name": "--goa-color-extended-lilac-border", + "description": "color token: extended lilac border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-lilac-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-lilac-text", + "title": "--goa-color-extended-lilac-text", + "name": "--goa-color-extended-lilac-text", + "description": "color token: extended lilac text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-lilac-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-prairie-default", + "title": "--goa-color-extended-prairie-default", + "name": "--goa-color-extended-prairie-default", + "description": "color token: extended prairie default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-prairie-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-prairie-light", + "title": "--goa-color-extended-prairie-light", + "name": "--goa-color-extended-prairie-light", + "description": "color token: extended prairie light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-prairie-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-prairie-border", + "title": "--goa-color-extended-prairie-border", + "name": "--goa-color-extended-prairie-border", + "description": "color token: extended prairie border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-prairie-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-prairie-text", + "title": "--goa-color-extended-prairie-text", + "name": "--goa-color-extended-prairie-text", + "description": "color token: extended prairie text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-prairie-text", + "status": "stable", + "category": "color" + }, + { + "id": "tokens-opacity", + "title": "Opacity Tokens", + "description": "Opacity values for overlays, disabled states, and transparency effects", + "content": "--goa-opacity-page-transparent --goa-opacity-page-full --goa-opacity-background-modal --goa-opacity-background-loading", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "opacity", + "transparency", + "design token" + ], + "type": "token", + "slug": "opacity", + "status": "stable", + "category": "opacity" + }, + { + "id": "token-opacity-page-transparent", + "title": "--goa-opacity-page-transparent", + "name": "--goa-opacity-page-transparent", + "description": "opacity token: page transparent", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "opacity" + ], + "type": "token", + "slug": "opacity-page-transparent", + "status": "stable", + "category": "opacity" + }, + { + "id": "token-opacity-page-full", + "title": "--goa-opacity-page-full", + "name": "--goa-opacity-page-full", + "description": "opacity token: page full", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "opacity" + ], + "type": "token", + "slug": "opacity-page-full", + "status": "stable", + "category": "opacity" + }, + { + "id": "token-opacity-background-modal", + "title": "--goa-opacity-background-modal", + "name": "--goa-opacity-background-modal", + "description": "opacity token: background modal", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "opacity" + ], + "type": "token", + "slug": "opacity-background-modal", + "status": "stable", + "category": "opacity" + }, + { + "id": "token-opacity-background-loading", + "title": "--goa-opacity-background-loading", + "name": "--goa-opacity-background-loading", + "description": "opacity token: background loading", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "opacity" + ], + "type": "token", + "slug": "opacity-background-loading", + "status": "stable", + "category": "opacity" + }, + { + "id": "tokens-borderRadius", + "title": "Border Radius Tokens", + "description": "Border radius values for rounded corners on cards, buttons, and containers", + "content": "--goa-borderRadius-none --goa-borderRadius-xs --goa-borderRadius-s --goa-borderRadius-m --goa-borderRadius-l --goa-borderRadius-xl --goa-borderRadius-2xl --goa-borderRadius-3xl --goa-borderRadius-round", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "border", + "radius", + "corners", + "design token" + ], + "type": "token", + "slug": "borderRadius", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-none", + "title": "--goa-borderRadius-none", + "name": "--goa-borderRadius-none", + "description": "border radius token: none", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-none", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-xs", + "title": "--goa-borderRadius-xs", + "name": "--goa-borderRadius-xs", + "description": "border radius token: xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-xs", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-s", + "title": "--goa-borderRadius-s", + "name": "--goa-borderRadius-s", + "description": "border radius token: s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-s", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-m", + "title": "--goa-borderRadius-m", + "name": "--goa-borderRadius-m", + "description": "border radius token: m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-m", "status": "stable", - "category": "inputs-and-actions", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-l", + "title": "--goa-borderRadius-l", + "name": "--goa-borderRadius-l", + "description": "border radius token: l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-l", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-xl", + "title": "--goa-borderRadius-xl", + "name": "--goa-borderRadius-xl", + "description": "border radius token: xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-xl", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-2xl", + "title": "--goa-borderRadius-2xl", + "name": "--goa-borderRadius-2xl", + "description": "border radius token: 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-2xl", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-3xl", + "title": "--goa-borderRadius-3xl", + "name": "--goa-borderRadius-3xl", + "description": "border radius token: 3xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "checkbox", - "input", - "inputs and actions" + "token", + "design token", + "borderRadius" ], - "slug": "checkbox-list" + "type": "token", + "slug": "borderRadius-3xl", + "status": "stable", + "category": "borderRadius" }, { - "type": "component", - "id": "checkbox", - "name": "Checkbox", - "description": "Let the user select one or more options.", - "status": "stable", - "category": "inputs-and-actions", + "id": "token-borderRadius-round", + "title": "--goa-borderRadius-round", + "name": "--goa-borderRadius-round", + "description": "border radius token: round", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "checklist", - "input", - "inputs and actions", - "options" + "token", + "design token", + "borderRadius" ], - "slug": "checkbox" + "type": "token", + "slug": "borderRadius-round", + "status": "stable", + "category": "borderRadius" }, { - "type": "component", - "id": "circular-progress", - "name": "Circular progress indicator", - "description": "Provide feedback of progress to users while loading.", + "id": "tokens-borderWidth", + "title": "Border Width Tokens", + "description": "Border width values for outlines, dividers, and component borders", + "content": "--goa-borderWidth-none --goa-borderWidth-2xs --goa-borderWidth-xs --goa-borderWidth-s --goa-borderWidth-m --goa-borderWidth-l --goa-borderWidth-xl", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "border", + "width", + "stroke", + "design token" + ], + "type": "token", + "slug": "borderWidth", "status": "stable", - "category": "feedback-and-alerts", + "category": "borderWidth" + }, + { + "id": "token-borderWidth-none", + "title": "--goa-borderWidth-none", + "name": "--goa-borderWidth-none", + "description": "border width token: none", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "feedback and alerts", - "loading", - "loader", - "loading indicator", - "progress spinner", - "process timer", - "spinner" + "token", + "design token", + "borderWidth" ], - "slug": "circular-progress" + "type": "token", + "slug": "borderWidth-none", + "status": "stable", + "category": "borderWidth" }, { - "type": "component", - "id": "container", - "name": "Container", - "description": "Group information, create hierarchy, and show related information.", - "status": "stable", - "category": "content-layout", + "id": "token-borderWidth-2xs", + "title": "--goa-borderWidth-2xs", + "name": "--goa-borderWidth-2xs", + "description": "border width token: 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "card", - "content", - "content layout", - "group", - "structure" + "token", + "design token", + "borderWidth" ], - "slug": "container" + "type": "token", + "slug": "borderWidth-2xs", + "status": "stable", + "category": "borderWidth" }, { - "type": "component", - "id": "data-grid", - "name": "Data Grid", - "description": "Advanced table with sorting and selection.", + "id": "token-borderWidth-xs", + "title": "--goa-borderWidth-xs", + "name": "--goa-borderWidth-xs", + "description": "border width token: xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderWidth" + ], + "type": "token", + "slug": "borderWidth-xs", "status": "stable", - "category": "content-layout", - "tags": [], - "slug": "data-grid" + "category": "borderWidth" }, { - "type": "component", - "id": "date-picker", - "name": "Date picker", - "description": "Lets users select a date through a calendar without the need to manually type it in a field.", - "status": "stable", - "category": "inputs-and-actions", + "id": "token-borderWidth-s", + "title": "--goa-borderWidth-s", + "name": "--goa-borderWidth-s", + "description": "border width token: s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "calendar", - "date", - "date picker", - "inputs and actions", - "input" + "token", + "design token", + "borderWidth" ], - "slug": "date-picker" + "type": "token", + "slug": "borderWidth-s", + "status": "stable", + "category": "borderWidth" }, { - "type": "component", - "id": "details", - "name": "Details", - "description": "Let users reveal more detailed information when they need it.", - "status": "stable", - "category": "content-layout", + "id": "token-borderWidth-m", + "title": "--goa-borderWidth-m", + "name": "--goa-borderWidth-m", + "description": "border width token: m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "accordion details", - "additional info", - "additional information", - "content layout", - "detail accordion", - "details expander", - "details toggle", - "disclosure", - "expand", - "expander", - "expanding detail", - "expandable details", - "expandable help text", - "more info", - "see more", - "show more", - "show more information" + "token", + "design token", + "borderWidth" ], - "slug": "details" + "type": "token", + "slug": "borderWidth-m", + "status": "stable", + "category": "borderWidth" }, { - "type": "component", - "id": "divider", - "name": "Divider", - "description": "Indicate a separation of layout, or to distinguish large chunks of information on a page.", - "status": "stable", - "category": "utilities", + "id": "token-borderWidth-l", + "title": "--goa-borderWidth-l", + "name": "--goa-borderWidth-l", + "description": "border width token: l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "dividing line", - "page divider", - "utilities" + "token", + "design token", + "borderWidth" ], - "slug": "divider" + "type": "token", + "slug": "borderWidth-l", + "status": "stable", + "category": "borderWidth" }, { - "type": "component", - "id": "drawer", - "name": "Drawer", - "description": "A panel that slides in from the side of the screen to display additional content or actions without navigating away from the current view.", - "status": "stable", - "category": "content-layout", + "id": "token-borderWidth-xl", + "title": "--goa-borderWidth-xl", + "name": "--goa-borderWidth-xl", + "description": "border width token: xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "sections", - "structure and navigation", - "sheet", - "sidesheet", - "sidepanel" + "token", + "design token", + "borderWidth" ], - "slug": "drawer" + "type": "token", + "slug": "borderWidth-xl", + "status": "stable", + "category": "borderWidth" }, { - "type": "component", - "id": "dropdown", - "name": "Dropdown", - "description": "Present a list of options to the user to select from.", - "status": "stable", - "category": "inputs-and-actions", + "id": "tokens-space", + "title": "Spacing Tokens", + "description": "Spacing values for margins, padding, and gaps between elements", + "content": "--goa-space-none --goa-space-3xs --goa-space-2xs --goa-space-xs --goa-space-s --goa-space-m --goa-space-l --goa-space-xl --goa-space-2xl --goa-space-3xl --goa-space-4xl --goa-space-fill", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "inputs and actions", - "select", - "single select dropdown" + "token", + "space", + "spacing", + "margin", + "padding", + "gap", + "design token" ], - "slug": "dropdown" + "type": "token", + "slug": "space", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "file-upload-input", - "name": "File uploader", - "description": "Help users select and upload a file.", - "status": "stable", - "category": "inputs-and-actions", + "id": "token-space-none", + "title": "--goa-space-none", + "name": "--goa-space-none", + "description": "spacing token: none", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "drag and drop", - "file upload", - "inputs and actions", - "uploader" + "token", + "design token", + "space" ], - "slug": "file-upload-input" + "type": "token", + "slug": "space-none", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "filter-chip", - "name": "Filter chip", - "description": "Allow the user to enter information, filter content, and make selections.", - "status": "stable", - "category": "feedback-and-alerts", + "id": "token-space-3xs", + "title": "--goa-space-3xs", + "name": "--goa-space-3xs", + "description": "spacing token: 3xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "inputs and actions", - "pill" + "token", + "design token", + "space" ], - "slug": "filter-chip" + "type": "token", + "slug": "space-3xs", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "footer", - "name": "Footer", - "description": "Provides information related your service at the bottom of every page.", - "status": "stable", - "category": "structure-and-navigation", + "id": "token-space-2xs", + "title": "--goa-space-2xs", + "name": "--goa-space-2xs", + "description": "spacing token: 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "page footer", - "structure and navigation" + "token", + "design token", + "space" ], - "slug": "footer" + "type": "token", + "slug": "space-2xs", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "form-item", - "name": "Form item", - "description": "Wraps an input control with a text label, requirement label, helper text, and error text.", - "status": "stable", - "category": "utilities", + "id": "token-space-xs", + "title": "--goa-space-xs", + "name": "--goa-space-xs", + "description": "spacing token: xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "form", - "input", - "inputs and actions" + "token", + "design token", + "space" ], - "slug": "form-item" + "type": "token", + "slug": "space-xs", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "form-stepper", - "name": "Form stepper", - "description": "Provides a visual representation of a form through a series of steps.", - "status": "deprecated", - "category": "structure-and-navigation", + "id": "token-space-s", + "title": "--goa-space-s", + "name": "--goa-space-s", + "description": "spacing token: s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "form stepper", - "horizontal step navigation", - "process overview", - "progress indicator", - "steps", - "structure and navigation", - "wizard" + "token", + "design token", + "space" ], - "slug": "form-stepper" + "type": "token", + "slug": "space-s", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "form", - "name": "Form", - "description": "Container for form inputs and validation.", + "id": "token-space-m", + "title": "--goa-space-m", + "name": "--goa-space-m", + "description": "spacing token: m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-m", "status": "stable", - "category": "inputs-and-actions", - "tags": [], - "slug": "form" + "category": "space" }, { - "type": "component", - "id": "grid", - "name": "Grid", - "description": "Arrange a number of components into a responsive grid pattern.", - "status": "stable", - "category": "utilities", + "id": "token-space-l", + "title": "--goa-space-l", + "name": "--goa-space-l", + "description": "spacing token: l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "utilities" + "token", + "design token", + "space" ], - "slug": "grid" + "type": "token", + "slug": "space-l", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "hero-banner", - "name": "Hero banner", - "description": "A visual band of text, including an image and a call to action.", - "status": "stable", - "category": "content-layout", + "id": "token-space-xl", + "title": "--goa-space-xl", + "name": "--goa-space-xl", + "description": "spacing token: xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "promotion banner", - "hero panel", - "structure and navigation" + "token", + "design token", + "space" ], - "slug": "hero-banner" + "type": "token", + "slug": "space-xl", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "icon-button", - "name": "Icon button", - "description": "A compact button with an icon and no text.", - "status": "stable", - "category": "inputs-and-actions", + "id": "token-space-2xl", + "title": "--goa-space-2xl", + "name": "--goa-space-2xl", + "description": "spacing token: 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "action", - "inputs and actions", - "submit" + "token", + "design token", + "space" ], - "slug": "icon-button" + "type": "token", + "slug": "space-2xl", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "icon", - "name": "Icons", - "description": "A simple and universal graphic symbol representing an action, object, or concept to help guide the user.", - "status": "stable", - "category": "utilities", + "id": "token-space-3xl", + "title": "--goa-space-3xl", + "name": "--goa-space-3xl", + "description": "spacing token: 3xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "utilities" + "token", + "design token", + "space" ], - "slug": "icon" + "type": "token", + "slug": "space-3xl", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "input", - "name": "Input", - "description": "A single-line field where users can input and edit text.", - "status": "stable", - "category": "inputs-and-actions", + "id": "token-space-4xl", + "title": "--goa-space-4xl", + "name": "--goa-space-4xl", + "description": "spacing token: 4xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "inputs and actions", - "text field", - "text box", - "search", - "text input" + "token", + "design token", + "space" ], - "slug": "input" + "type": "token", + "slug": "space-4xl", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "linear-progress", - "name": "Linear progress indicator", - "description": "Provide visual feedback to users while loading.", - "status": "stable", - "category": "feedback-and-alerts", + "id": "token-space-fill", + "title": "--goa-space-fill", + "name": "--goa-space-fill", + "description": "spacing token: fill", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "progress", - "feedback and alerts", - "loading", - "loader", - "loading indicator", - "process timer" + "token", + "design token", + "space" ], - "slug": "linear-progress" + "type": "token", + "slug": "space-fill", + "status": "stable", + "category": "space" }, { - "type": "component", - "id": "link-button", - "name": "Link Button", - "description": "Button styled as a link for secondary actions.", + "id": "tokens-iconSize", + "title": "Icon Size Tokens", + "description": "Standard icon sizes for consistent iconography across the design system", + "content": "--goa-iconSize-1 --goa-iconSize-2 --goa-iconSize-3 --goa-iconSize-4 --goa-iconSize-5 --goa-iconSize-6 --goa-iconSize-xs --goa-iconSize-s --goa-iconSize-m --goa-iconSize-l --goa-iconSize-xl", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "icon", + "size", + "design token" + ], + "type": "token", + "slug": "iconSize", "status": "stable", - "category": "inputs-and-actions", - "tags": [], - "slug": "link-button" + "category": "iconSize" }, { - "type": "component", - "id": "link", - "name": "Link", - "description": "Wraps an anchor element to add icons or margins.", - "status": "stable", - "category": "utilities", + "id": "token-iconSize-1", + "title": "--goa-iconSize-1", + "name": "--goa-iconSize-1", + "description": "icon size token: 1", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "utilities", - "text" + "token", + "design token", + "iconSize" ], - "slug": "link" + "type": "token", + "slug": "iconSize-1", + "status": "stable", + "category": "iconSize" }, { - "type": "component", - "id": "menu-button", - "name": "Menu button", - "description": "A button with more than one action.", - "status": "stable", - "category": "inputs-and-actions", + "id": "token-iconSize-2", + "title": "--goa-iconSize-2", + "name": "--goa-iconSize-2", + "description": "icon size token: 2", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "menu button", - "split button" + "token", + "design token", + "iconSize" ], - "slug": "menu-button" + "type": "token", + "slug": "iconSize-2", + "status": "stable", + "category": "iconSize" }, { - "type": "component", - "id": "microsite-header", - "name": "Microsite header", - "description": "Communicate what stage the service is at, connect to Alberta.ca, and gather feedback on your service.", - "status": "stable", - "category": "structure-and-navigation", + "id": "token-iconSize-3", + "title": "--goa-iconSize-3", + "name": "--goa-iconSize-3", + "description": "icon size token: 3", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "banner", - "development header", - "feedback bar", - "microheader", - "microsite banner", - "service header", - "service bar", - "service stage banner", - "service state banner", - "status bar", - "structure and navigation" + "token", + "design token", + "iconSize" ], - "slug": "microsite-header" + "type": "token", + "slug": "iconSize-3", + "status": "stable", + "category": "iconSize" }, { - "type": "component", - "id": "modal", - "name": "Modal", - "description": "An overlay that appears in front of all other content, and requires a user to take an action before continuing.", - "status": "stable", - "category": "feedback-and-alerts", + "id": "token-iconSize-4", + "title": "--goa-iconSize-4", + "name": "--goa-iconSize-4", + "description": "icon size token: 4", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "feedback and alerts", - "popup modal", - "popup box", - "modal dialog", - "show more information" + "token", + "design token", + "iconSize" ], - "slug": "modal" + "type": "token", + "slug": "iconSize-4", + "status": "stable", + "category": "iconSize" }, { - "type": "component", - "id": "notification", - "name": "Notification banner", - "description": "Display important page level information or notifications.", - "status": "stable", - "category": "feedback-and-alerts", + "id": "token-iconSize-5", + "title": "--goa-iconSize-5", + "name": "--goa-iconSize-5", + "description": "icon size token: 5", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "alert banner", - "banner", - "feedback and alerts" + "token", + "design token", + "iconSize" ], - "slug": "notification" + "type": "token", + "slug": "iconSize-5", + "status": "stable", + "category": "iconSize" }, { - "type": "component", - "id": "page-block", - "name": "Page Block", - "description": "Full-width section with optional background.", + "id": "token-iconSize-6", + "title": "--goa-iconSize-6", + "name": "--goa-iconSize-6", + "description": "icon size token: 6", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-6", "status": "stable", - "category": "content-layout", - "tags": [], - "slug": "page-block" + "category": "iconSize" }, { - "type": "component", - "id": "pagination", - "name": "Pagination", - "description": "Help users navigation between multiple pages or screens as part of a set.", - "status": "stable", - "category": "structure-and-navigation", + "id": "token-iconSize-xs", + "title": "--goa-iconSize-xs", + "name": "--goa-iconSize-xs", + "description": "icon size token: xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "pager", - "pagination controls", - "structure and navigation" + "token", + "design token", + "iconSize" ], - "slug": "pagination" + "type": "token", + "slug": "iconSize-xs", + "status": "stable", + "category": "iconSize" }, { - "type": "component", - "id": "popover", - "name": "Popover", - "description": "A small overlay that opens on demand, used in other components.", - "status": "stable", - "category": "content-layout", + "id": "token-iconSize-s", + "title": "--goa-iconSize-s", + "name": "--goa-iconSize-s", + "description": "icon size token: s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "content layout", - "show more information" + "token", + "design token", + "iconSize" ], - "slug": "popover" + "type": "token", + "slug": "iconSize-s", + "status": "stable", + "category": "iconSize" }, { - "type": "component", - "id": "radio-group", - "name": "Radio", - "description": "Allow users to select one option from a set.", - "status": "stable", - "category": "inputs-and-actions", + "id": "token-iconSize-m", + "title": "--goa-iconSize-m", + "name": "--goa-iconSize-m", + "description": "icon size token: m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "inputs and actions", - "option button", - "radio button group", - "radio buttons" + "token", + "design token", + "iconSize" ], - "slug": "radio-group" + "type": "token", + "slug": "iconSize-m", + "status": "stable", + "category": "iconSize" }, { - "type": "component", - "id": "side-menu", - "name": "Side menu", - "description": "A side navigation that helps the user navigate between pages.", - "status": "stable", - "category": "structure-and-navigation", + "id": "token-iconSize-l", + "title": "--goa-iconSize-l", + "name": "--goa-iconSize-l", + "description": "icon size token: l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "secondary navigation", - "side nav", - "side bar", - "structure and navigation" + "token", + "design token", + "iconSize" ], - "slug": "side-menu" + "type": "token", + "slug": "iconSize-l", + "status": "stable", + "category": "iconSize" }, { - "type": "component", - "id": "skeleton", - "name": "Skeleton loader", - "description": "Provide visual feedback to users while loading a content heavy page or page element.", - "status": "stable", - "category": "feedback-and-alerts", + "id": "token-iconSize-xl", + "title": "--goa-iconSize-xl", + "name": "--goa-iconSize-xl", + "description": "icon size token: xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "content layout", - "loading" + "token", + "design token", + "iconSize" ], - "slug": "skeleton" + "type": "token", + "slug": "iconSize-xl", + "status": "stable", + "category": "iconSize" }, { - "type": "component", - "id": "spacer", - "name": "Spacer", - "description": "Negative area between the components and the interface.", + "id": "tokens-shadow", + "title": "Shadow Tokens", + "description": "Box shadow values for elevation and depth effects on cards and modals", + "content": "--goa-shadow-100 --goa-shadow-150 --goa-shadow-200 --goa-shadow-300 --goa-shadow-400 --goa-shadow-500 --goa-shadow-600 --goa-shadow-modal --goa-shadow-raised-light --goa-shadow-raised-heavy --goa-shadow-shallow-above --goa-shadow-shallow-below", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "shadow", + "elevation", + "depth", + "design token" + ], + "type": "token", + "slug": "shadow", "status": "stable", - "category": "utilities", + "category": "shadow" + }, + { + "id": "token-shadow-100", + "title": "--goa-shadow-100", + "name": "--goa-shadow-100", + "description": "shadow token: 100", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "gap", - "margin", - "padding", - "space", - "utilities" + "token", + "design token", + "shadow" ], - "slug": "spacer" + "type": "token", + "slug": "shadow-100", + "status": "stable", + "category": "shadow" }, { - "type": "component", - "id": "table", - "name": "Table", - "description": "A set of structured data that is easy for a user to scan, examine, and compare.", - "status": "stable", - "category": "content-layout", + "id": "token-shadow-150", + "title": "--goa-shadow-150", + "name": "--goa-shadow-150", + "description": "shadow token: 150", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "data table", - "content layout", - "interactive table", - "sortable table" + "token", + "design token", + "shadow" ], - "slug": "table" + "type": "token", + "slug": "shadow-150", + "status": "stable", + "category": "shadow" }, { - "type": "component", - "id": "tabs", - "name": "Tabs", - "description": "Let users navigate between related sections of content, displaying one section at a time.", - "status": "stable", - "category": "structure-and-navigation", + "id": "token-shadow-200", + "title": "--goa-shadow-200", + "name": "--goa-shadow-200", + "description": "shadow token: 200", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "sections", - "structure and navigation", - "tabbed interface" + "token", + "design token", + "shadow" ], - "slug": "tabs" + "type": "token", + "slug": "shadow-200", + "status": "stable", + "category": "shadow" }, { - "type": "component", - "id": "temporary-notification", - "name": "Temporary notification", - "description": "A notification that appears at the bottom of the screen.", - "status": "stable", - "category": "feedback-and-alerts", + "id": "token-shadow-300", + "title": "--goa-shadow-300", + "name": "--goa-shadow-300", + "description": "shadow token: 300", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "snackbar", - "toast", - "temporary notification" + "token", + "design token", + "shadow" ], - "slug": "temporary-notification" + "type": "token", + "slug": "shadow-300", + "status": "stable", + "category": "shadow" }, { - "type": "component", - "id": "text-area", - "name": "Text area", - "description": "A multi-line field where users can input and edit text.", - "status": "stable", - "category": "inputs-and-actions", + "id": "token-shadow-400", + "title": "--goa-shadow-400", + "name": "--goa-shadow-400", + "description": "shadow token: 400", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "inputs and actions", - "long answer input field", - "multi line text input", - "multiple text box", - "text box", - "text input area" + "token", + "design token", + "shadow" ], - "slug": "text-area" + "type": "token", + "slug": "shadow-400", + "status": "stable", + "category": "shadow" }, { - "type": "component", - "id": "text", - "name": "Text", - "description": "Provides consistent sizing, spacing, and colour to written content.", + "id": "token-shadow-500", + "title": "--goa-shadow-500", + "name": "--goa-shadow-500", + "description": "shadow token: 500", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-500", "status": "stable", - "category": "content-layout", + "category": "shadow" + }, + { + "id": "token-shadow-600", + "title": "--goa-shadow-600", + "name": "--goa-shadow-600", + "description": "shadow token: 600", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "text", - "body", - "copy" + "token", + "design token", + "shadow" ], - "slug": "text" + "type": "token", + "slug": "shadow-600", + "status": "stable", + "category": "shadow" }, { - "type": "component", - "id": "tooltip", - "name": "Tooltip", - "description": "A small popover that displays more information about an item.", - "status": "stable", - "category": "feedback-and-alerts", + "id": "token-shadow-modal", + "title": "--goa-shadow-modal", + "name": "--goa-shadow-modal", + "description": "shadow token: modal", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "feedback and alerts" + "token", + "design token", + "shadow" ], - "slug": "tooltip" + "type": "token", + "slug": "shadow-modal", + "status": "stable", + "category": "shadow" }, { - "type": "component", - "id": "work-side-menu", - "name": "Work Side Menu", - "description": "Side menu variant for worker applications.", + "id": "token-shadow-raised-light", + "title": "--goa-shadow-raised-light", + "name": "--goa-shadow-raised-light", + "description": "shadow token: raised light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-raised-light", "status": "stable", - "category": "structure-and-navigation", - "tags": [], - "slug": "work-side-menu" + "category": "shadow" }, { - "type": "example", - "id": "add-a-filter-chip", - "title": "Add a filter chip", - "description": "Allow users to apply filters using selectable chips, which visually represent active filters and can be removed to update results dynamically.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-shadow-raised-heavy", + "title": "--goa-shadow-raised-heavy", + "name": "--goa-shadow-raised-heavy", + "description": "shadow token: raised heavy", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "filtering", - "chips", - "dynamic" + "token", + "design token", + "shadow" ], - "components": [ - "filter-chip", - "button" - ], - "scale": "interaction", - "userType": "both", - "slug": "add-a-filter-chip" + "type": "token", + "slug": "shadow-raised-heavy", + "status": "stable", + "category": "shadow" }, { - "type": "example", - "id": "add-a-record-using-a-drawer", - "title": "Add a record using a drawer", - "description": "Add a record using a drawer. The drawer slides in from the side to allow data entry without navigating away from the current view.", - "status": "published", - "categories": [ - "structure-and-navigation" - ], + "id": "token-shadow-shallow-above", + "title": "--goa-shadow-shallow-above", + "name": "--goa-shadow-shallow-above", + "description": "shadow token: shallow above", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "drawer", - "forms", - "records", - "data-entry" + "token", + "design token", + "shadow" ], - "components": [ - "drawer", - "button", - "button-group", - "form-item", - "dropdown", - "input", - "radio-group", - "block" - ], - "scale": "task", - "userType": "worker", - "slug": "add-a-record-using-a-drawer" + "type": "token", + "slug": "shadow-shallow-above", + "status": "stable", + "category": "shadow" }, { - "type": "example", - "id": "add-and-edit-lots-of-filters", - "title": "Add and edit lots of filters", - "description": "Add and edit filters using a drawer. This pattern is useful when you have many filter options that would clutter the main interface.", - "status": "published", - "categories": [ - "structure-and-navigation" - ], + "id": "token-shadow-shallow-below", + "title": "--goa-shadow-shallow-below", + "name": "--goa-shadow-shallow-below", + "description": "shadow token: shallow below", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "filtering", - "drawer", - "forms", - "data-management" + "token", + "design token", + "shadow" ], - "components": [ - "drawer", - "button", - "button-group", - "form-item", - "checkbox-list", - "checkbox", - "dropdown", - "radio-group" - ], - "scale": "task", - "userType": "worker", - "slug": "add-and-edit-lots-of-filters" + "type": "token", + "slug": "shadow-shallow-below", + "status": "stable", + "category": "shadow" }, { - "type": "example", - "id": "add-another-item-in-a-modal", - "title": "Add another item in a modal", - "description": "Add a new item within a modal window without navigating away from the current context.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "tokens-lineHeight", + "title": "Line Height Tokens", + "description": "Line height values for readable text and proper vertical rhythm", + "content": "--goa-lineHeight-1 --goa-lineHeight-2 --goa-lineHeight-3 --goa-lineHeight-4 --goa-lineHeight-5 --goa-lineHeight-6 --goa-lineHeight-7 --goa-lineHeight-8 --goa-lineHeight-05", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "modal", - "forms", - "data-entry" - ], - "components": [ - "modal", - "button", - "button-group", - "form-item", - "dropdown", - "input", - "text-area" - ], - "scale": "task", - "userType": "both", - "slug": "add-another-item-in-a-modal" + "token", + "line", + "height", + "leading", + "typography", + "design token" + ], + "type": "token", + "slug": "lineHeight", + "status": "stable", + "category": "lineHeight" }, { - "type": "example", - "id": "ask-a-long-answer-question-with-a-maximum-word-count", - "title": "Ask a long answer question with a maximum word count", - "description": "Restrict a long answer input to a maximum number of words or characters.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-lineHeight-1", + "title": "--goa-lineHeight-1", + "name": "--goa-lineHeight-1", + "description": "line height token: 1", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "text-area", - "validation", - "word-count" - ], - "components": [ - "form-item", - "text-area" + "token", + "design token", + "lineHeight" ], - "scale": "task", - "userType": "citizen", - "slug": "ask-a-long-answer-question-with-a-maximum-word-count" + "type": "token", + "slug": "lineHeight-1", + "status": "stable", + "category": "lineHeight" }, { - "type": "example", - "id": "ask-a-user-for-a-birthday", - "title": "Ask a user for a birthday", - "description": "Asks for a user's birthday using the date picker component.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-lineHeight-2", + "title": "--goa-lineHeight-2", + "name": "--goa-lineHeight-2", + "description": "line height token: 2", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "date-input", - "ask-a-user-for" - ], - "components": [ - "form-item", - "date-picker" + "token", + "design token", + "lineHeight" ], - "scale": "task", - "userType": "citizen", - "slug": "ask-a-user-for-a-birthday" + "type": "token", + "slug": "lineHeight-2", + "status": "stable", + "category": "lineHeight" }, { - "type": "example", - "id": "ask-a-user-for-an-address", - "title": "Ask a user for an address", - "description": "Collect a complete mailing address from the user, including fields like street, city, and postal code.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-lineHeight-3", + "title": "--goa-lineHeight-3", + "name": "--goa-lineHeight-3", + "description": "line height token: 3", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "address", - "location" - ], - "components": [ - "form-item", - "input", - "dropdown", - "block", - "button", - "button-group", - "text" + "token", + "design token", + "lineHeight" ], - "scale": "task", - "userType": "citizen", - "slug": "ask-a-user-for-an-address" + "type": "token", + "slug": "lineHeight-3", + "status": "stable", + "category": "lineHeight" }, { - "type": "example", - "id": "ask-a-user-for-an-indian-registration-number", - "title": "Ask a user for an Indian registration number", - "description": "Request a user's Indian registration number with appropriate validation and context.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-lineHeight-4", + "title": "--goa-lineHeight-4", + "name": "--goa-lineHeight-4", + "description": "line height token: 4", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "identity", - "registration" - ], - "components": [ - "form-item", - "input", - "block" + "token", + "design token", + "lineHeight" ], - "scale": "task", - "userType": "citizen", - "slug": "ask-a-user-for-an-indian-registration-number" + "type": "token", + "slug": "lineHeight-4", + "status": "stable", + "category": "lineHeight" }, { - "type": "example", - "id": "ask-a-user-for-direct-deposit-information", - "title": "Ask a user for direct deposit information", - "description": "Gather banking details from users to enable direct deposit, including account number and financial institution information.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-lineHeight-5", + "title": "--goa-lineHeight-5", + "name": "--goa-lineHeight-5", + "description": "line height token: 5", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "banking", - "financial" - ], - "components": [ - "form-item", - "input", - "details", - "text" + "token", + "design token", + "lineHeight" ], - "scale": "task", - "userType": "citizen", - "slug": "ask-a-user-for-direct-deposit-information" + "type": "token", + "slug": "lineHeight-5", + "status": "stable", + "category": "lineHeight" }, { - "type": "example", - "id": "ask-a-user-for-dollar-amounts", - "title": "Ask a user for dollar amounts", - "description": "Prompt users to enter monetary values using a consistent input format that supports validation and currency symbols.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-lineHeight-6", + "title": "--goa-lineHeight-6", + "name": "--goa-lineHeight-6", + "description": "line height token: 6", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "currency", - "financial" - ], - "components": [ - "form-item", - "input" + "token", + "design token", + "lineHeight" ], - "scale": "task", - "userType": "citizen", - "slug": "ask-a-user-for-dollar-amounts" + "type": "token", + "slug": "lineHeight-6", + "status": "stable", + "category": "lineHeight" }, { - "type": "example", - "id": "ask-a-user-one-question-at-a-time", - "title": "Ask a user one question at a time", - "description": "Ask a user one question at a time.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-lineHeight-7", + "title": "--goa-lineHeight-7", + "name": "--goa-lineHeight-7", + "description": "line height token: 7", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "questions", - "public-form" - ], - "components": [ - "form-item", - "radio-group", - "radio-item", - "button" + "token", + "design token", + "lineHeight" ], - "scale": "page", - "userType": "citizen", - "slug": "ask-a-user-one-question-at-a-time" + "type": "token", + "slug": "lineHeight-7", + "status": "stable", + "category": "lineHeight" }, { - "type": "example", - "id": "basic-page-layout", - "title": "Basic page layout", - "description": "A basic page template to use as a starting point.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-lineHeight-8", + "title": "--goa-lineHeight-8", + "name": "--goa-lineHeight-8", + "description": "line height token: 8", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "layout", - "page-structure", - "template" - ], - "components": [ - "microsite-header", - "app-header", - "footer", - "page-block", - "skeleton", - "grid" + "token", + "design token", + "lineHeight" ], - "scale": "page", - "userType": "both", - "slug": "basic-page-layout" + "type": "token", + "slug": "lineHeight-8", + "status": "stable", + "category": "lineHeight" }, { - "type": "example", - "id": "button-with-icon", - "title": "Button with Icon", - "description": "Shows how to add leading or trailing icons to buttons for enhanced visual communication.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-lineHeight-05", + "title": "--goa-lineHeight-05", + "name": "--goa-lineHeight-05", + "description": "line height token: 05", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "icons", - "buttons", - "actions" - ], - "components": [ - "button", - "button-group", - "icon" + "token", + "design token", + "lineHeight" ], - "scale": "interaction", - "userType": "both", - "slug": "button-with-icon" + "type": "token", + "slug": "lineHeight-05", + "status": "stable", + "category": "lineHeight" }, { - "type": "example", - "id": "card-grid", - "title": "Card grid", - "description": "Display multiple cards in a grid layout, each containing related content or actions.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "tokens-fontFamily", + "title": "Font Family Tokens", + "description": "Font family values for the design system typefaces", + "content": "--goa-fontFamily-sans --goa-fontFamily-number", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "cards", - "grid", - "navigation", - "dashboard" - ], - "components": [ - "container", - "grid", - "link", - "text" - ], - "scale": "task", - "userType": "both", - "slug": "card-grid" + "token", + "font", + "family", + "typeface", + "design token" + ], + "type": "token", + "slug": "fontFamily", + "status": "stable", + "category": "fontFamily" }, { - "type": "example", - "id": "card-view-of-case-files", - "title": "Card view of case files", - "description": "Present a visual overview of individual case files in a card format for scanning and access.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-fontFamily-sans", + "title": "--goa-fontFamily-sans", + "name": "--goa-fontFamily-sans", + "description": "font family token: sans", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "cards", - "case-management", - "status", - "list" + "token", + "design token", + "fontFamily" ], - "components": [ - "container", - "block", - "badge", - "button" - ], - "scale": "task", - "userType": "worker", - "slug": "card-view-of-case-files" + "type": "token", + "slug": "fontFamily-sans", + "status": "stable", + "category": "fontFamily" }, { - "type": "example", - "id": "communicate-a-future-service-outage", - "title": "Communicate a future service outage", - "description": "Display a clear message to inform users about an upcoming service outage, including the date, time, and expected impact on service availability.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], + "id": "token-fontFamily-number", + "title": "--goa-fontFamily-number", + "name": "--goa-fontFamily-number", + "description": "font family token: number", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "notification", - "maintenance", - "alerts", - "system-status" + "token", + "design token", + "fontFamily" ], - "components": [ - "notification" - ], - "scale": "task", - "userType": "both", - "slug": "communicate-a-future-service-outage" + "type": "token", + "slug": "fontFamily-number", + "status": "stable", + "category": "fontFamily" }, { - "type": "example", - "id": "confirm-a-change", - "title": "Confirm a change", - "description": "Ask the user to confirm a proposed change before it is applied.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "tokens-fontSize", + "title": "Font Size Tokens", + "description": "Font size values for text hierarchy and responsive typography", + "content": "--goa-fontSize-1 --goa-fontSize-2 --goa-fontSize-3 --goa-fontSize-4 --goa-fontSize-5 --goa-fontSize-6 --goa-fontSize-7 --goa-fontSize-8 --goa-fontSize-9 --goa-fontSize-10 --goa-fontSize-05", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "modal", - "confirmation", - "forms", - "changes" - ], - "components": [ - "modal", - "button", - "button-group", - "container", - "form-item", - "date-picker" - ], - "scale": "task", - "userType": "both", - "slug": "confirm-a-change" + "token", + "font", + "size", + "typography", + "design token" + ], + "type": "token", + "slug": "fontSize", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "confirm-a-destructive-action", - "title": "Confirm a destructive action", - "description": "Confirm a destructive action like deletion to prevent accidental data loss.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], + "id": "token-fontSize-1", + "title": "--goa-fontSize-1", + "name": "--goa-fontSize-1", + "description": "font size token: 1", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "modal", - "confirmation", - "delete", - "destructive" - ], - "components": [ - "modal", - "button", - "button-group" + "token", + "design token", + "fontSize" ], - "scale": "task", - "userType": "both", - "slug": "confirm-a-destructive-action" + "type": "token", + "slug": "fontSize-1", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "confirm-before-navigating-away", - "title": "Confirm before navigating away", - "description": "Prompt the user in a modal before navigating to a new route to preserve context.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], + "id": "token-fontSize-2", + "title": "--goa-fontSize-2", + "name": "--goa-fontSize-2", + "description": "font size token: 2", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "modal", - "navigation", - "confirmation", - "routing" - ], - "components": [ - "modal", - "button", - "button-group" + "token", + "design token", + "fontSize" ], - "scale": "task", - "userType": "worker", - "slug": "confirm-before-navigating-away" + "type": "token", + "slug": "fontSize-2", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "confirm-that-an-application-was-submitted", - "title": "Confirm that an application was submitted", - "description": "Display a confirmation screen to indicate successful application submission.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], + "id": "token-fontSize-3", + "title": "--goa-fontSize-3", + "name": "--goa-fontSize-3", + "description": "font size token: 3", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "confirmation", - "success", - "callout", - "application" - ], - "components": [ - "callout", - "button", - "button-group" + "token", + "design token", + "fontSize" ], - "scale": "page", - "userType": "citizen", - "slug": "confirm-that-an-application-was-submitted" + "type": "token", + "slug": "fontSize-3", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "copy-to-clipboard", - "title": "Copy to clipboard", - "description": "Allow users to quickly copy text or data to their clipboard with a single click.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-fontSize-4", + "title": "--goa-fontSize-4", + "name": "--goa-fontSize-4", + "description": "font size token: 4", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "clipboard", - "copy", - "tooltip", - "icon-button" - ], - "components": [ - "block", - "icon-button", - "tooltip" + "token", + "design token", + "fontSize" ], - "scale": "interaction", - "userType": "both", - "slug": "copy-to-clipboard" + "type": "token", + "slug": "fontSize-4", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "disabled-button-with-a-required-field", - "title": "Disabled button with a required field", - "description": "Disable a submit button until required form fields are completed.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-fontSize-5", + "title": "--goa-fontSize-5", + "name": "--goa-fontSize-5", + "description": "font size token: 5", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "button", - "form", - "validation", - "disabled", - "required" - ], - "components": [ - "button", - "button-group", - "form-item", - "input" + "token", + "design token", + "fontSize" ], - "scale": "interaction", - "userType": "both", - "slug": "disabled-button-with-a-required-field" + "type": "token", + "slug": "fontSize-5", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "display-numbers-in-a-table-so-they-can-be-scanned-easily", - "title": "Display numbers in a table so they can be scanned easily", - "description": "Right-align numeric columns in tables to make them easier to scan and compare.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-fontSize-6", + "title": "--goa-fontSize-6", + "name": "--goa-fontSize-6", + "description": "font size token: 6", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "table", - "numbers", - "data", - "alignment", - "scanning" - ], - "components": [ - "table" + "token", + "design token", + "fontSize" ], - "scale": "task", - "userType": "worker", - "slug": "display-numbers-in-a-table-so-they-can-be-scanned-easily" + "type": "token", + "slug": "fontSize-6", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "display-user-information", - "title": "Display user information", - "description": "Display user contact information and related data using containers with clear visual hierarchy.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-fontSize-7", + "title": "--goa-fontSize-7", + "name": "--goa-fontSize-7", + "description": "font size token: 7", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "container", - "user-info", - "contact", - "profile", - "table" - ], - "components": [ - "container", - "block", - "button", - "table", - "text" + "token", + "design token", + "fontSize" ], - "scale": "task", - "userType": "worker", - "slug": "display-user-information" + "type": "token", + "slug": "fontSize-7", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "dynamically-add-an-item-to-a-dropdown-list", - "title": "Dynamically add an item to a dropdown list", - "description": "Allow users to add new items to a dropdown list dynamically.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-fontSize-8", + "title": "--goa-fontSize-8", + "name": "--goa-fontSize-8", + "description": "font size token: 8", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "dropdown", - "dynamic", - "form", - "input", - "radio" - ], - "components": [ - "dropdown", - "dropdown-item", - "form-item", - "input", - "button" + "token", + "design token", + "fontSize" ], - "scale": "interaction", - "userType": "both", - "slug": "dynamically-add-an-item-to-a-dropdown-list" + "type": "token", + "slug": "fontSize-8", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "dynamically-change-items-in-a-dropdown-list", - "title": "Dynamically change items in a dropdown list", - "description": "Update dropdown options based on the selection in another dropdown (cascading/dependent dropdowns).", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-fontSize-9", + "title": "--goa-fontSize-9", + "name": "--goa-fontSize-9", + "description": "font size token: 9", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "dropdown", - "dynamic", - "cascading", - "dependent", - "form" - ], - "components": [ - "dropdown", - "dropdown-item", - "form-item" + "token", + "design token", + "fontSize" ], - "scale": "interaction", - "userType": "both", - "slug": "dynamically-change-items-in-a-dropdown-list" + "type": "token", + "slug": "fontSize-9", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "expand-or-collapse-part-of-a-form", - "title": "Expand or collapse part of a form", - "description": "Use accordions to organize form review sections that users can expand or collapse.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-fontSize-10", + "title": "--goa-fontSize-10", + "name": "--goa-fontSize-10", + "description": "font size token: 10", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "accordion", - "form", - "review", - "collapsible", - "badge" - ], - "components": [ - "accordion", - "badge" + "token", + "design token", + "fontSize" ], - "scale": "task", - "userType": "both", - "slug": "expand-or-collapse-part-of-a-form" + "type": "token", + "slug": "fontSize-10", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "filter-data-in-a-table", - "title": "Filter data in a table", - "description": "Enable users to filter table data using search input and filter chips.", - "status": "published", - "categories": [ - "structure-and-navigation" - ], + "id": "token-fontSize-05", + "title": "--goa-fontSize-05", + "name": "--goa-fontSize-05", + "description": "font size token: 05", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "table", - "filter", - "search", - "chips", - "data" - ], - "components": [ - "table", - "filter-chip", - "input", - "button", - "block", - "form-item", - "badge", - "text" + "token", + "design token", + "fontSize" ], - "scale": "task", - "userType": "worker", - "slug": "filter-data-in-a-table" + "type": "token", + "slug": "fontSize-05", + "status": "stable", + "category": "fontSize" }, { - "type": "example", - "id": "form-stepper-with-controlled-navigation", - "title": "Form stepper with controlled navigation", - "description": "Create a multi-step form with controlled navigation using Previous/Next buttons.", - "status": "published", - "categories": [ - "forms" - ], + "id": "tokens-fontWeight", + "title": "Font Weight Tokens", + "description": "Font weight values for text emphasis and hierarchy", + "content": "--goa-fontWeight-regular --goa-fontWeight-medium --goa-fontWeight-semiBold --goa-fontWeight-bold", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "stepper", - "form", - "wizard", - "multi-step", - "navigation", - "pages" - ], - "components": [ - "form-stepper", - "form-step", - "pages", - "button", - "skeleton", - "spacer" - ], - "scale": "task", - "userType": "both", - "slug": "form-stepper-with-controlled-navigation" + "token", + "font", + "weight", + "bold", + "design token" + ], + "type": "token", + "slug": "fontWeight", + "status": "stable", + "category": "fontWeight" }, { - "type": "example", - "id": "give-background-information-before-asking-a-question", - "title": "Give background information before asking a question", - "description": "Provide explanatory context before asking a question to help users understand what is being asked.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-fontWeight-regular", + "title": "--goa-fontWeight-regular", + "name": "--goa-fontWeight-regular", + "description": "font weight token: regular", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "form", - "question", - "context", - "radio", - "citizen-facing" + "token", + "design token", + "fontWeight" ], - "components": [ - "form-item", - "radio-group", - "radio-item", - "button" - ], - "scale": "task", - "userType": "citizen", - "slug": "give-background-information-before-asking-a-question" + "type": "token", + "slug": "fontWeight-regular", + "status": "stable", + "category": "fontWeight" }, { - "type": "example", - "id": "give-context-before-asking-a-long-answer-question", - "title": "Give context before asking a long answer question", - "description": "Provide context and guidance before a long-answer text field to help users provide relevant information.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-fontWeight-medium", + "title": "--goa-fontWeight-medium", + "name": "--goa-fontWeight-medium", + "description": "font weight token: medium", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "form", - "text-area", - "question", - "context", - "details", - "citizen-facing" + "token", + "design token", + "fontWeight" ], - "components": [ - "text-area", - "form-item", - "details", - "button", - "button-group" - ], - "scale": "task", - "userType": "citizen", - "slug": "give-context-before-asking-a-long-answer-question" + "type": "token", + "slug": "fontWeight-medium", + "status": "stable", + "category": "fontWeight" }, { - "type": "example", - "id": "group-related-questions-together-on-a-question-page", - "title": "Group related questions together on a question page", - "description": "Group related form fields together on a single page to collect address information from users, making it easier to complete logically connected questions at once.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-fontWeight-semiBold", + "title": "--goa-fontWeight-semiBold", + "name": "--goa-fontWeight-semiBold", + "description": "font weight token: semiBold", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "address", - "question-page" + "token", + "design token", + "fontWeight" ], - "components": [ - "form-item", - "input", - "dropdown", - "dropdown-item", - "button" - ], - "scale": "page", - "userType": "citizen", - "slug": "group-related-questions-together-on-a-question-page" + "type": "token", + "slug": "fontWeight-semiBold", + "status": "stable", + "category": "fontWeight" }, { - "type": "example", - "id": "header-with-menu-click-event", - "title": "Header with menu click event", - "description": "Handle custom menu click behavior in the app header, allowing you to intercept the mobile menu button click and implement custom functionality like custom navigation drawers.", - "status": "published", - "categories": [ - "structure-and-navigation" - ], + "id": "token-fontWeight-bold", + "title": "--goa-fontWeight-bold", + "name": "--goa-fontWeight-bold", + "description": "font weight token: bold", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "header", - "navigation", - "mobile", - "menu" + "token", + "design token", + "fontWeight" ], - "components": [ - "app-header", - "app-header-menu", - "radio-group", - "radio-item" - ], - "scale": "interaction", - "userType": "both", - "slug": "header-with-menu-click-event" + "type": "token", + "slug": "fontWeight-bold", + "status": "stable", + "category": "fontWeight" }, { - "type": "example", - "id": "header-with-navigation", - "title": "Header with navigation", - "description": "Implement a standard application header with navigation menus, search functionality, and sign-in links for government services.", - "status": "published", - "categories": [ - "structure-and-navigation" - ], + "id": "tokens-letterSpacing", + "title": "Letter Spacing Tokens", + "description": "Letter spacing values for text tracking adjustments", + "content": "--goa-letterSpacing-3xs --goa-letterSpacing-2xs --goa-letterSpacing-xs --goa-letterSpacing-s --goa-letterSpacing-m --goa-letterSpacing-l --goa-letterSpacing-xl --goa-letterSpacing-2xl --goa-letterSpacing-mobile-3xs --goa-letterSpacing-mobile-2xs --goa-letterSpacing-mobile-xs --goa-letterSpacing-mobile-s --goa-letterSpacing-mobile-m --goa-letterSpacing-mobile-l --goa-letterSpacing-mobile-xl --goa-letterSpacing-mobile-2xl", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "header", - "navigation", - "menu" - ], - "components": [ - "app-header", - "app-header-menu", - "microsite-header" - ], - "scale": "task", - "userType": "both", - "slug": "header-with-navigation" + "token", + "letter", + "spacing", + "tracking", + "typography", + "design token" + ], + "type": "token", + "slug": "letterSpacing", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "hero-banner-with-actions", - "title": "Hero banner with actions", - "description": "Create a hero banner with a call-to-action button to guide users toward the primary task on a landing page.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-letterSpacing-3xs", + "title": "--goa-letterSpacing-3xs", + "name": "--goa-letterSpacing-3xs", + "description": "letter spacing token: 3xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "hero", - "banner", - "cta", - "landing" - ], - "components": [ - "hero-banner", - "button" + "token", + "design token", + "letterSpacing" ], - "scale": "task", - "userType": "both", - "slug": "hero-banner-with-actions" + "type": "token", + "slug": "letterSpacing-3xs", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "hide-and-show-many-sections-of-information", - "title": "Hide and show many sections of information", - "description": "Allow users to expand and collapse multiple accordion sections, with a button to show or hide all sections at once.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-letterSpacing-2xs", + "title": "--goa-letterSpacing-2xs", + "name": "--goa-letterSpacing-2xs", + "description": "letter spacing token: 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "accordion", - "expand", - "collapse", - "faq" - ], - "components": [ - "accordion", - "button" + "token", + "design token", + "letterSpacing" ], - "scale": "task", - "userType": "both", - "slug": "hide-and-show-many-sections-of-information" + "type": "token", + "slug": "letterSpacing-2xs", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "include-a-link-in-the-helper-text-of-an-option", - "title": "Include a link in the helper text of an option", - "description": "Add links within the description text of checkbox options to provide additional context or resources while users are making selections.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-letterSpacing-xs", + "title": "--goa-letterSpacing-xs", + "name": "--goa-letterSpacing-xs", + "description": "letter spacing token: xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "checkbox", - "helper-text", - "links", - "forms" - ], - "components": [ - "checkbox", - "form-item" + "token", + "design token", + "letterSpacing" ], - "scale": "interaction", - "userType": "both", - "slug": "include-a-link-in-the-helper-text-of-an-option" + "type": "token", + "slug": "letterSpacing-xs", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "include-descriptions-for-items-in-a-checkbox-list", - "title": "Include descriptions for items in a checkbox list", - "description": "Add descriptive text to radio button options to help users understand the implications of each choice.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-letterSpacing-s", + "title": "--goa-letterSpacing-s", + "name": "--goa-letterSpacing-s", + "description": "letter spacing token: s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "radio", - "descriptions", - "forms" - ], - "components": [ - "form-item", - "radio-group", - "radio-item" + "token", + "design token", + "letterSpacing" ], - "scale": "task", - "userType": "both", - "slug": "include-descriptions-for-items-in-a-checkbox-list" + "type": "token", + "slug": "letterSpacing-s", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "link-the-user-to-give-feedback-to-the-service", - "title": "Link the user to give feedback to the service", - "description": "Use the microsite header's feedback functionality to collect user feedback during alpha or beta phases of a service.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], + "id": "token-letterSpacing-m", + "title": "--goa-letterSpacing-m", + "name": "--goa-letterSpacing-m", + "description": "letter spacing token: m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "feedback", - "microsite-header", - "alpha", - "beta" + "token", + "design token", + "letterSpacing" ], - "components": [ - "microsite-header" + "type": "token", + "slug": "letterSpacing-m", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-l", + "title": "--goa-letterSpacing-l", + "name": "--goa-letterSpacing-l", + "description": "letter spacing token: l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" ], - "scale": "interaction", - "userType": "citizen", - "slug": "link-the-user-to-give-feedback-to-the-service" + "type": "token", + "slug": "letterSpacing-l", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "link-to-an-external-page", - "title": "Link to an external page", - "description": "Use an external link indicator to show users when a link will take them to a different website.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-letterSpacing-xl", + "title": "--goa-letterSpacing-xl", + "name": "--goa-letterSpacing-xl", + "description": "letter spacing token: xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "link", - "external", - "navigation" + "token", + "design token", + "letterSpacing" ], - "components": [ - "link" - ], - "scale": "interaction", - "userType": "both", - "slug": "link-to-an-external-page" + "type": "token", + "slug": "letterSpacing-xl", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "public-form", - "title": "Public form", - "description": "The public form pattern provides a structure for citizen-facing form experiences, emphasizing simplicity, accessibility, and low cognitive load.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-letterSpacing-2xl", + "title": "--goa-letterSpacing-2xl", + "name": "--goa-letterSpacing-2xl", + "description": "letter spacing token: 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "form", - "public", - "citizen", - "pattern" + "token", + "design token", + "letterSpacing" ], - "components": [], - "scale": "service", - "userType": "citizen", - "slug": "public-form" + "type": "token", + "slug": "letterSpacing-2xl", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "question-page", - "title": "Question page", - "description": "A question page pattern that presents one question at a time to help users focus, reduce cognitive load, and navigate complex forms more easily.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-letterSpacing-mobile-3xs", + "title": "--goa-letterSpacing-mobile-3xs", + "name": "--goa-letterSpacing-mobile-3xs", + "description": "letter spacing token: mobile 3xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "question", - "wizard", - "one-thing-per-page" + "token", + "design token", + "letterSpacing" ], - "components": [ - "form-item", - "input", - "button", - "button-group" - ], - "scale": "page", - "userType": "citizen", - "slug": "question-page" + "type": "token", + "slug": "letterSpacing-mobile-3xs", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "remove-a-filter", - "title": "Remove a filter", - "description": "Allow users to remove active filters by clicking on filter chips, providing clear visual feedback and dynamic updates to filtered results.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-letterSpacing-mobile-2xs", + "title": "--goa-letterSpacing-mobile-2xs", + "name": "--goa-letterSpacing-mobile-2xs", + "description": "letter spacing token: mobile 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "filtering", - "chips", - "remove" + "token", + "design token", + "letterSpacing" ], - "components": [ - "filter-chip" - ], - "scale": "interaction", - "userType": "both", - "slug": "remove-a-filter" + "type": "token", + "slug": "letterSpacing-mobile-2xs", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "require-user-action-before-continuing", - "title": "Require user action before continuing", - "description": "Use a modal dialog to require users to confirm an action before proceeding, especially for irreversible operations or important decision points.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-letterSpacing-mobile-xs", + "title": "--goa-letterSpacing-mobile-xs", + "name": "--goa-letterSpacing-mobile-xs", + "description": "letter spacing token: mobile xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "modal", - "confirmation", - "warning", - "action" + "token", + "design token", + "letterSpacing" ], - "components": [ - "modal", - "button", - "button-group" - ], - "scale": "task", - "userType": "both", - "slug": "require-user-action-before-continuing" + "type": "token", + "slug": "letterSpacing-mobile-xs", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "reset-date-picker-field", - "title": "Reset date picker field", - "description": "Allow users to programmatically set or clear a date picker field value, useful for reset functionality or setting default dates.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-letterSpacing-mobile-s", + "title": "--goa-letterSpacing-mobile-s", + "name": "--goa-letterSpacing-mobile-s", + "description": "letter spacing token: mobile s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "date-picker", - "form", - "reset", - "clear" + "token", + "design token", + "letterSpacing" ], - "components": [ - "date-picker", - "form-item", - "button", - "button-group" - ], - "scale": "interaction", - "userType": "both", - "slug": "reset-date-picker-field" + "type": "token", + "slug": "letterSpacing-mobile-s", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "result-page", - "title": "Result page", - "description": "A result page shown after form submission to confirm success, provide next steps, and offer relevant contact information.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-letterSpacing-mobile-m", + "title": "--goa-letterSpacing-mobile-m", + "name": "--goa-letterSpacing-mobile-m", + "description": "letter spacing token: mobile m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "confirmation", - "success", - "completion", - "forms" + "token", + "design token", + "letterSpacing" ], - "components": [ - "block", - "callout" - ], - "scale": "page", - "userType": "citizen", - "slug": "result-page" + "type": "token", + "slug": "letterSpacing-mobile-m", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "reveal-input-based-on-a-selection", - "title": "Reveal input based on a selection", - "description": "Progressively reveal additional form fields based on user selections, reducing visual complexity while gathering necessary information.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-letterSpacing-mobile-l", + "title": "--goa-letterSpacing-mobile-l", + "name": "--goa-letterSpacing-mobile-l", + "description": "letter spacing token: mobile l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "conditional", - "reveal", - "radio", - "checkbox", - "progressive-disclosure" + "token", + "design token", + "letterSpacing" ], - "components": [ - "radio-group", - "radio-item", - "checkbox", - "form-item", - "input" - ], - "scale": "task", - "userType": "both", - "slug": "reveal-input-based-on-a-selection" + "type": "token", + "slug": "letterSpacing-mobile-l", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "review-and-action", - "title": "Review and action", - "description": "A side-by-side layout for workers to review case details while taking an action, commonly used in case management and approval workflows.", - "status": "published", - "categories": [ - "structure-and-navigation" - ], + "id": "token-letterSpacing-mobile-xl", + "title": "--goa-letterSpacing-mobile-xl", + "name": "--goa-letterSpacing-mobile-xl", + "description": "letter spacing token: mobile xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "review", - "action", - "container", - "case-management", - "worker" + "token", + "design token", + "letterSpacing" ], - "components": [ - "container", - "grid", - "block", - "form-item", - "radio-group", - "dropdown", - "text-area", - "button" - ], - "scale": "task", - "userType": "worker", - "slug": "review-and-action" + "type": "token", + "slug": "letterSpacing-mobile-xl", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "review-page", - "title": "Review page", - "description": "A review page where users can check their answers before submitting a form, with options to change individual responses.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-letterSpacing-mobile-2xl", + "title": "--goa-letterSpacing-mobile-2xl", + "name": "--goa-letterSpacing-mobile-2xl", + "description": "letter spacing token: mobile 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "review", - "check-answers", - "forms", - "submission" + "token", + "design token", + "letterSpacing" ], - "components": [ - "table", - "button", - "button-group" - ], - "scale": "page", - "userType": "citizen", - "slug": "review-page" + "type": "token", + "slug": "letterSpacing-mobile-2xl", + "status": "stable", + "category": "letterSpacing" }, { - "type": "example", - "id": "search", - "title": "Search", - "description": "A search input pattern with a search icon and button for users to find content or filter results.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "tokens-typography", + "title": "Typography Tokens", + "description": "Typography presets combining font family, size, weight, and line height", + "content": "--goa-typography-heading-2xs --goa-typography-heading-xs --goa-typography-heading-s --goa-typography-heading-m --goa-typography-heading-l --goa-typography-heading-xl --goa-typography-heading-2xl --goa-typography-body-xs --goa-typography-body-s --goa-typography-body-m --goa-typography-body-l --goa-typography-number-s --goa-typography-number-m --goa-typography-number-l --goa-typography-mobile-heading-2xs --goa-typography-mobile-heading-xs --goa-typography-mobile-heading-s --goa-typography-mobile-heading-m --goa-typography-mobile-heading-l --goa-typography-mobile-heading-xl --goa-typography-mobile-heading-2xl --goa-typography-mobile-body-xs --goa-typography-mobile-body-s --goa-typography-mobile-body-m --goa-typography-mobile-body-l --goa-typography-mobile-number-s --goa-typography-mobile-number-m --goa-typography-mobile-number-l", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "search", - "input", - "filtering" - ], - "components": [ - "input", - "button", - "block", - "form-item" + "token", + "typography", + "font", + "text", + "heading", + "body", + "design token" ], - "scale": "task", - "userType": "both", - "slug": "search" + "type": "token", + "slug": "typography", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "select-one-or-more-from-a-list-of-options", - "title": "Select one or more from a list of options", - "description": "Use checkboxes to let users select one or more options from a list when multiple selections are valid.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-typography-heading-2xs", + "title": "--goa-typography-heading-2xs", + "name": "--goa-typography-heading-2xs", + "description": "typography token: heading 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "checkbox", - "selection", - "multiple", - "form" + "token", + "design token", + "typography" ], - "components": [ - "checkbox", - "form-item" - ], - "scale": "task", - "userType": "both", - "slug": "select-one-or-more-from-a-list-of-options" + "type": "token", + "slug": "typography-heading-2xs", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "set-a-max-width-on-a-long-radio-item", - "title": "Set a max width on a long radio item", - "description": "Set a max width on a long radio item to control line wrapping.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-typography-heading-xs", + "title": "--goa-typography-heading-xs", + "name": "--goa-typography-heading-xs", + "description": "typography token: heading xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "radio", - "forms", - "layout" + "token", + "design token", + "typography" ], - "components": [ - "form-item", - "radio-group", - "radio-item" - ], - "scale": "interaction", - "userType": "both", - "slug": "set-a-max-width-on-a-long-radio-item" + "type": "token", + "slug": "typography-heading-xs", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "set-a-specific-tab-to-be-active", - "title": "Set a specific tab to be active", - "description": "Set a specific tab to be active on page load using the initialTab property.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-typography-heading-s", + "title": "--goa-typography-heading-s", + "name": "--goa-typography-heading-s", + "description": "typography token: heading s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "tabs", - "navigation", - "tables" + "token", + "design token", + "typography" ], - "components": [ - "tabs", - "tab", - "table", - "badge", - "button" - ], - "scale": "interaction", - "userType": "both", - "slug": "set-a-specific-tab-to-be-active" + "type": "token", + "slug": "typography-heading-s", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "set-the-status-of-step-on-a-form-stepper", - "title": "Set the status of step on a form stepper", - "description": "Set the status of each step on a form stepper to indicate completion progress.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-typography-heading-m", + "title": "--goa-typography-heading-m", + "name": "--goa-typography-heading-m", + "description": "typography token: heading m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "stepper", - "multi-step", - "navigation" + "token", + "design token", + "typography" ], - "components": [ - "form-stepper", - "form-step", - "pages", - "button" - ], - "scale": "task", - "userType": "both", - "slug": "set-the-status-of-step-on-a-form-stepper" + "type": "token", + "slug": "typography-heading-m", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-a-label-on-an-icon-only-button", - "title": "Show a label on an icon only button", - "description": "Show a label on an icon-only button using a tooltip to improve discoverability.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-typography-heading-l", + "title": "--goa-typography-heading-l", + "name": "--goa-typography-heading-l", + "description": "typography token: heading l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "buttons", - "icons", - "accessibility", - "tooltip" + "token", + "design token", + "typography" ], - "components": [ - "icon-button", - "tooltip", - "button-group" - ], - "scale": "interaction", - "userType": "both", - "slug": "show-a-label-on-an-icon-only-button" + "type": "token", + "slug": "typography-heading-l", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-a-list-to-help-answer-a-question", - "title": "Show a list to help answer a question", - "description": "Show a list to help answer a question using an expandable details component.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-typography-heading-xl", + "title": "--goa-typography-heading-xl", + "name": "--goa-typography-heading-xl", + "description": "typography token: heading xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "details", - "guidance", - "help" + "token", + "design token", + "typography" ], - "components": [ - "form-item", - "radio-group", - "radio-item", - "details", - "block" - ], - "scale": "task", - "userType": "citizen", - "slug": "show-a-list-to-help-answer-a-question" + "type": "token", + "slug": "typography-heading-xl", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-a-notification", - "title": "Show a notification", - "description": "Show a temporary notification to confirm an action was completed successfully.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], + "id": "token-typography-heading-2xl", + "title": "--goa-typography-heading-2xl", + "name": "--goa-typography-heading-2xl", + "description": "typography token: heading 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "notification", - "feedback", - "success", - "toast" + "token", + "design token", + "typography" ], - "components": [ - "temporary-notification", - "button" - ], - "scale": "interaction", - "userType": "both", - "slug": "show-a-notification" + "type": "token", + "slug": "typography-heading-2xl", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-a-notification-with-an-action", - "title": "Show a notification with an action", - "description": "Show a temporary notification with an action button for user interaction.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], + "id": "token-typography-body-xs", + "title": "--goa-typography-body-xs", + "name": "--goa-typography-body-xs", + "description": "typography token: body xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "notification", - "feedback", - "action", - "toast" + "token", + "design token", + "typography" ], - "components": [ - "temporary-notification", - "button" - ], - "scale": "interaction", - "userType": "both", - "slug": "show-a-notification-with-an-action" + "type": "token", + "slug": "typography-body-xs", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-a-section-title-on-a-question-page", - "title": "Show a section title on a question page", - "description": "Show a section title on a question page to help users understand which part of the form they are completing.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-typography-body-s", + "title": "--goa-typography-body-s", + "name": "--goa-typography-body-s", + "description": "typography token: body s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "questions", - "navigation", - "section" + "token", + "design token", + "typography" ], - "components": [ - "form-item", - "radio-group", - "radio-item", - "button" - ], - "scale": "task", - "userType": "citizen", - "slug": "show-a-section-title-on-a-question-page" + "type": "token", + "slug": "typography-body-s", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-a-simple-progress-indicator-on-a-question-page", - "title": "Show a simple progress indicator on a question page", - "description": "Show a simple progress indicator on a question page to help users understand their progress through the form.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-typography-body-m", + "title": "--goa-typography-body-m", + "name": "--goa-typography-body-m", + "description": "typography token: body m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "questions", - "progress", - "navigation" + "token", + "design token", + "typography" ], - "components": [ - "form-item", - "radio-group", - "radio-item", - "button" - ], - "scale": "task", - "userType": "citizen", - "slug": "show-a-simple-progress-indicator-on-a-question-page" + "type": "token", + "slug": "typography-body-m", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions", - "title": "Show a simple progress indicator on a question page with multiple questions", - "description": "Show a simple progress indicator on a question page when grouping multiple related questions together.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-typography-body-l", + "title": "--goa-typography-body-l", + "name": "--goa-typography-body-l", + "description": "typography token: body l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "forms", - "questions", - "progress", - "navigation", - "multi-question" + "token", + "design token", + "typography" ], - "components": [ - "form-item", - "input", - "button" - ], - "scale": "task", - "userType": "citizen", - "slug": "show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions" + "type": "token", + "slug": "typography-body-l", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-a-user-progress", - "title": "Show a user progress", - "description": "Display progress feedback during long-running operations like downloads, showing percentage completion with the ability to cancel and receive success confirmation.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], + "id": "token-typography-number-s", + "title": "--goa-typography-number-s", + "name": "--goa-typography-number-s", + "description": "typography token: number s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "progress", - "notification", - "download", - "feedback" + "token", + "design token", + "typography" ], - "components": [ - "temporary-notification", - "button" - ], - "scale": "task", - "userType": "both", - "slug": "show-a-user-progress" + "type": "token", + "slug": "typography-number-s", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-a-user-progress-when-the-time-is-unknown", - "title": "Show a user progress when the time is unknown", - "description": "Display indeterminate progress for operations where completion time cannot be estimated, such as complex searches or external system queries.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], + "id": "token-typography-number-m", + "title": "--goa-typography-number-m", + "name": "--goa-typography-number-m", + "description": "typography token: number m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "progress", - "notification", - "indeterminate", - "search", - "feedback" + "token", + "design token", + "typography" ], - "components": [ - "temporary-notification", - "button" - ], - "scale": "task", - "userType": "both", - "slug": "show-a-user-progress-when-the-time-is-unknown" + "type": "token", + "slug": "typography-number-m", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-different-views-of-data-in-a-table", - "title": "Show different views of data in a table", - "description": "Use tabs to organize table data into different views based on status or category, showing counts in each tab to help workers quickly navigate to relevant items.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-typography-number-l", + "title": "--goa-typography-number-l", + "name": "--goa-typography-number-l", + "description": "typography token: number l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "table", - "tabs", - "filtering", - "status", - "data-views" + "token", + "design token", + "typography" ], - "components": [ - "tabs", - "tab", - "table", - "badge", - "button" - ], - "scale": "task", - "userType": "worker", - "slug": "show-different-views-of-data-in-a-table" + "type": "token", + "slug": "typography-number-l", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-full-date-in-a-tooltip", - "title": "Show full date in a tooltip", - "description": "Display relative time (like \"4 hours ago\") while providing the full date and time on hover via tooltip for users who need exact timestamps.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-typography-mobile-heading-2xs", + "title": "--goa-typography-mobile-heading-2xs", + "name": "--goa-typography-mobile-heading-2xs", + "description": "typography token: mobile heading 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "tooltip", - "date", - "relative-time", - "hover" + "token", + "design token", + "typography" ], - "components": [ - "tooltip", - "container" - ], - "scale": "interaction", - "userType": "both", - "slug": "show-full-date-in-a-tooltip" + "type": "token", + "slug": "typography-mobile-heading-2xs", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-links-to-navigation-items", - "title": "Show links to navigation items", - "description": "Use the app footer to display comprehensive navigation links organized into sections, along with meta links for common utilities like privacy and accessibility.", - "status": "published", - "categories": [ - "structure-and-navigation" - ], + "id": "token-typography-mobile-heading-xs", + "title": "--goa-typography-mobile-heading-xs", + "name": "--goa-typography-mobile-heading-xs", + "description": "typography token: mobile heading xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "footer", - "navigation", - "links", - "sitemap" + "token", + "design token", + "typography" ], - "components": [ - "footer", - "footer-nav-section", - "footer-meta-section" - ], - "scale": "task", - "userType": "both", - "slug": "show-links-to-navigation-items" + "type": "token", + "slug": "typography-mobile-heading-xs", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-more-information-to-help-answer-a-question", - "title": "Show more information to help answer a question", - "description": "Use the Details component to provide optional contextual help that explains why a question is being asked, helping users understand the purpose without cluttering the main form.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-typography-mobile-heading-s", + "title": "--goa-typography-mobile-heading-s", + "name": "--goa-typography-mobile-heading-s", + "description": "typography token: mobile heading s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "form", - "details", - "help", - "question-page", - "expandable" + "token", + "design token", + "typography" ], - "components": [ - "details", - "form-item", - "radio-group", - "radio-item", - "button" - ], - "scale": "task", - "userType": "citizen", - "slug": "show-more-information-to-help-answer-a-question" + "type": "token", + "slug": "typography-mobile-heading-s", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-multiple-actions-in-a-compact-table", - "title": "Show multiple actions in a compact table", - "description": "Use icon buttons to provide multiple row actions in tables where space is limited, keeping the interface compact while maintaining accessibility through aria labels.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-typography-mobile-heading-m", + "title": "--goa-typography-mobile-heading-m", + "name": "--goa-typography-mobile-heading-m", + "description": "typography token: mobile heading m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "table", - "icon-button", - "actions", - "compact", - "worker-ui" + "token", + "design token", + "typography" ], - "components": [ - "table", - "icon-button", - "badge", - "block" - ], - "scale": "task", - "userType": "worker", - "slug": "show-multiple-actions-in-a-compact-table" + "type": "token", + "slug": "typography-mobile-heading-m", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-multiple-tags-together", - "title": "Show multiple tags together", - "description": "Display multiple badges together using GoabBlock with tight spacing to show multiple statuses or categories for a single item.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-typography-mobile-heading-l", + "title": "--goa-typography-mobile-heading-l", + "name": "--goa-typography-mobile-heading-l", + "description": "typography token: mobile heading l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "badge", - "tags", - "status", - "grouping" + "token", + "design token", + "typography" ], - "components": [ - "badge", - "block" - ], - "scale": "interaction", - "userType": "both", - "slug": "show-multiple-tags-together" + "type": "token", + "slug": "typography-mobile-heading-l", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-number-of-results-per-page", - "title": "Show number of results per page", - "description": "Combine pagination with a dropdown selector to let users control how many results appear per page, improving data browsing for different use cases.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-typography-mobile-heading-xl", + "title": "--goa-typography-mobile-heading-xl", + "name": "--goa-typography-mobile-heading-xl", + "description": "typography token: mobile heading xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "pagination", - "table", - "dropdown", - "results", - "per-page" + "token", + "design token", + "typography" ], - "components": [ - "pagination", - "dropdown", - "dropdown-item", - "table", - "block", - "spacer" - ], - "scale": "task", - "userType": "both", - "slug": "show-number-of-results-per-page" + "type": "token", + "slug": "typography-mobile-heading-xl", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-quick-links", - "title": "Show quick links", - "description": "Use the app footer meta section to display essential quick links like feedback, accessibility, privacy, and contact information without the full navigation structure.", - "status": "published", - "categories": [ - "structure-and-navigation" - ], + "id": "token-typography-mobile-heading-2xl", + "title": "--goa-typography-mobile-heading-2xl", + "name": "--goa-typography-mobile-heading-2xl", + "description": "typography token: mobile heading 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "footer", - "navigation", - "meta-links", - "quick-access" + "token", + "design token", + "typography" ], - "components": [ - "footer", - "footer-meta-section" - ], - "scale": "task", - "userType": "both", - "slug": "show-quick-links" + "type": "token", + "slug": "typography-mobile-heading-2xl", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-status-in-a-table", - "title": "Show status in a table", - "description": "Display status information within table rows using badges to provide clear visual indicators of item states like pending, complete, failed, or in progress.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-typography-mobile-body-xs", + "title": "--goa-typography-mobile-body-xs", + "name": "--goa-typography-mobile-body-xs", + "description": "typography token: mobile body xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "table", - "badge", - "status" + "token", + "design token", + "typography" ], - "components": [ - "table", - "badge", - "button" - ], - "scale": "task", - "userType": "worker", - "slug": "show-status-in-a-table" + "type": "token", + "slug": "typography-mobile-body-xs", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-status-on-a-card", - "title": "Show status on a card", - "description": "Display status indicators on cards using badges in the actions slot, allowing workers to quickly see the priority or state of each item.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-typography-mobile-body-s", + "title": "--goa-typography-mobile-body-s", + "name": "--goa-typography-mobile-body-s", + "description": "typography token: mobile body s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "card", - "container", - "badge", - "status" + "token", + "design token", + "typography" ], - "components": [ - "container", - "badge" - ], - "scale": "task", - "userType": "worker", - "slug": "show-status-on-a-card" + "type": "token", + "slug": "typography-mobile-body-s", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "show-version-number", - "title": "Show version number", - "description": "Display version information in the microsite header using the version slot, allowing custom formatting and styling of version text.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "token-typography-mobile-body-m", + "title": "--goa-typography-mobile-body-m", + "name": "--goa-typography-mobile-body-m", + "description": "typography token: mobile body m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "microsite-header", - "version", - "alpha", - "beta" + "token", + "design token", + "typography" ], - "components": [ - "microsite-header" - ], - "scale": "interaction", - "userType": "both", - "slug": "show-version-number" + "type": "token", + "slug": "typography-mobile-body-m", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "slotted-error-text-in-a-form-item", - "title": "Slotted error text in a form item", - "description": "Use the error slot in a form item to display formatted error messages with custom styling like bold or italic text.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-typography-mobile-body-l", + "title": "--goa-typography-mobile-body-l", + "name": "--goa-typography-mobile-body-l", + "description": "typography token: mobile body l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "form", - "form-item", - "error", - "validation", - "slot" + "token", + "design token", + "typography" ], - "components": [ - "form-item", - "input" - ], - "scale": "interaction", - "userType": "both", - "slug": "slotted-error-text-in-a-form-item" + "type": "token", + "slug": "typography-mobile-body-l", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "slotted-helper-text-in-a-form-item", - "title": "Slotted helper text in a form item", - "description": "Use the helpText slot in a form item to display formatted helper text with custom styling like bold, italic, or links.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-typography-mobile-number-s", + "title": "--goa-typography-mobile-number-s", + "name": "--goa-typography-mobile-number-s", + "description": "typography token: mobile number s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "form", - "form-item", - "helper-text", - "slot" + "token", + "design token", + "typography" ], - "components": [ - "form-item", - "input" - ], - "scale": "interaction", - "userType": "both", - "slug": "slotted-helper-text-in-a-form-item" + "type": "token", + "slug": "typography-mobile-number-s", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "sort-data-in-a-table", - "title": "Sort data in a table", - "description": "Enable column sorting in tables using sort headers, allowing workers to organize data by clicking column headers to toggle ascending/descending order.", - "status": "published", - "categories": [ - "content-layout" - ], + "id": "token-typography-mobile-number-m", + "title": "--goa-typography-mobile-number-m", + "name": "--goa-typography-mobile-number-m", + "description": "typography token: mobile number m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "table", - "sorting", - "data" + "token", + "design token", + "typography" ], - "components": [ - "table", - "table-sort-header" - ], - "scale": "task", - "userType": "worker", - "slug": "sort-data-in-a-table" + "type": "token", + "slug": "typography-mobile-number-m", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "start-page", - "title": "Start page", - "description": "A start page is the front door to a government service for citizens. It provides essential information about the service and a clear call to action to begin.", - "status": "published", - "categories": [ - "forms" - ], + "id": "token-typography-mobile-number-l", + "title": "--goa-typography-mobile-number-l", + "name": "--goa-typography-mobile-number-l", + "description": "typography token: mobile number l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", "tags": [ - "page", - "service", - "start", - "citizen" + "token", + "design token", + "typography" ], - "components": [ - "button" - ], - "scale": "page", - "userType": "citizen", - "slug": "start-page" + "type": "token", + "slug": "typography-mobile-number-l", + "status": "stable", + "category": "typography" }, { - "type": "example", - "id": "task-list-page", - "title": "Task list page", - "description": "A task list page provides a structure for multi-step services, showing users their progress through a series of tasks with clear status indicators.", - "status": "published", - "categories": [ - "forms" - ], + "id": "get-started", + "title": "Get started", + "name": "Get started", + "description": "Introduction to the GoA Design System early adopters program", + "content": "", + "component": "", + "filePath": "docs/src/pages/get-started", + "urlPath": "get-started", "tags": [ - "page", - "task-list", - "progress", - "form" + "get started", + "introduction", + "onboarding" ], - "components": [ - "table", - "badge", - "callout" - ], - "scale": "page", - "userType": "both", - "slug": "task-list-page" + "type": "page", + "slug": "get-started", + "status": "stable", + "category": "get started" }, { - "type": "example", - "id": "type-to-create-a-new-filter", - "title": "Type to create a new filter", - "description": "Allow users to type custom filter values and create filter chips by pressing Enter, with the ability to remove chips using Backspace or by clicking them.", - "status": "published", - "categories": [ - "inputs-and-actions" - ], + "id": "get-started-developers", + "title": "Get started as a developer", + "name": "Get started as a developer", + "description": "Developer onboarding: package setup, template repo, branches, and compatibility", + "content": "", + "component": "", + "filePath": "docs/src/pages/get-started/developers", + "urlPath": "get-started/developers", "tags": [ - "filter-chip", - "input", - "dynamic", - "keyboard" - ], - "components": [ - "filter-chip", - "input", - "form-item", - "container" - ], - "scale": "interaction", - "userType": "both", - "slug": "type-to-create-a-new-filter" + "get started", + "developer", + "setup", + "installation", + "packages", + "npm" + ], + "type": "page", + "slug": "get-started/developers", + "status": "stable", + "category": "get started" }, { - "type": "example", - "id": "warn-a-user-of-a-deadline", - "title": "Warn a user of a deadline", - "description": "Use a modal with important callout styling to warn users about time-sensitive deadlines that could affect their submission or action.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], + "id": "get-started-designers", + "title": "Get started as a designer", + "name": "Get started as a designer", + "description": "Designer onboarding: Figma libraries, BETA components, and illustration requests", + "content": "", + "component": "", + "filePath": "docs/src/pages/get-started/designers", + "urlPath": "get-started/designers", "tags": [ - "modal", - "warning", - "deadline", - "callout" - ], - "components": [ - "modal", - "button", - "button-group" - ], - "scale": "task", - "userType": "both", - "slug": "warn-a-user-of-a-deadline" + "get started", + "designer", + "figma", + "libraries", + "illustrations" + ], + "type": "page", + "slug": "get-started/designers", + "status": "stable", + "category": "get started" } ] \ No newline at end of file diff --git a/docs/search-index.json b/docs/search-index.json index aab298aa2c..995cf35e9a 100644 --- a/docs/search-index.json +++ b/docs/search-index.json @@ -1,29 +1,6882 @@ [ + { + "id": "work-side-menu", + "title": "Work Side Menu", + "name": "Work Side Menu", + "description": "Side menu variant for worker applications.", + "content": "", + "component": "work-side-menu", + "filePath": "docs/src/content/components/work-side-menu.mdx", + "urlPath": "components/work-side-menu", + "tags": [], + "type": "component", + "slug": "work-side-menu", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "tooltip", + "title": "Tooltip", + "name": "Tooltip", + "description": "A small popover that displays more information about an item.", + "content": "", + "component": "tooltip", + "filePath": "docs/src/content/components/tooltip.mdx", + "urlPath": "components/tooltip", + "tags": [], + "type": "component", + "slug": "tooltip", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "text", + "title": "Text", + "name": "Text", + "description": "Provides consistent sizing, spacing, and colour to written content.", + "content": "", + "component": "text", + "filePath": "docs/src/content/components/text.mdx", + "urlPath": "components/text", + "tags": [], + "type": "component", + "slug": "text", + "status": "stable", + "category": "content-layout" + }, + { + "id": "text-area", + "title": "Text area", + "name": "Text area", + "description": "A multi-line field where users can input and edit text.", + "content": "", + "component": "text-area", + "filePath": "docs/src/content/components/text-area.mdx", + "urlPath": "components/text-area", + "tags": [], + "type": "component", + "slug": "text-area", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "temporary-notification", + "title": "Temporary notification", + "name": "Temporary notification", + "description": "A notification that appears at the bottom of the screen.", + "content": "", + "component": "temporary-notification", + "filePath": "docs/src/content/components/temporary-notification.mdx", + "urlPath": "components/temporary-notification", + "tags": [], + "type": "component", + "slug": "temporary-notification", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "tabs", + "title": "Tabs", + "name": "Tabs", + "description": "Let users navigate between related sections of content, displaying one section at a time.", + "content": "", + "component": "tabs", + "filePath": "docs/src/content/components/tabs.mdx", + "urlPath": "components/tabs", + "tags": [], + "type": "component", + "slug": "tabs", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "table", + "title": "Table", + "name": "Table", + "description": "A set of structured data that is easy for a user to scan, examine, and compare.", + "content": "", + "component": "table", + "filePath": "docs/src/content/components/table.mdx", + "urlPath": "components/table", + "tags": [], + "type": "component", + "slug": "table", + "status": "stable", + "category": "content-layout" + }, + { + "id": "tab", + "title": "Tab", + "name": "Tab", + "description": "Individual tab within a tabs component.", + "content": "", + "component": "tab", + "filePath": "docs/src/content/components/tab.mdx", + "urlPath": "components/tab", + "tags": [], + "type": "component", + "slug": "tab", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "spinner", + "title": "Spinner", + "name": "Spinner", + "description": "Loading indicator for async operations.", + "content": "", + "component": "spinner", + "filePath": "docs/src/content/components/spinner.mdx", + "urlPath": "components/spinner", + "tags": [], + "type": "component", + "slug": "spinner", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "spacer", + "title": "Spacer", + "name": "Spacer", + "description": "Negative area between the components and the interface.", + "content": "", + "component": "spacer", + "filePath": "docs/src/content/components/spacer.mdx", + "urlPath": "components/spacer", + "tags": [], + "type": "component", + "slug": "spacer", + "status": "stable", + "category": "utilities" + }, + { + "id": "skeleton", + "title": "Skeleton loader", + "name": "Skeleton loader", + "description": "Provide visual feedback to users while loading a content heavy page or page element.", + "content": "", + "component": "skeleton", + "filePath": "docs/src/content/components/skeleton.mdx", + "urlPath": "components/skeleton", + "tags": [], + "type": "component", + "slug": "skeleton", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "side-menu", + "title": "Side menu", + "name": "Side menu", + "description": "A side navigation that helps the user navigate between pages.", + "content": "", + "component": "side-menu", + "filePath": "docs/src/content/components/side-menu.mdx", + "urlPath": "components/side-menu", + "tags": [], + "type": "component", + "slug": "side-menu", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "side-menu-heading", + "title": "Side Menu Heading", + "name": "Side Menu Heading", + "description": "Section heading in side menu.", + "content": "", + "component": "side-menu-heading", + "filePath": "docs/src/content/components/side-menu-heading.mdx", + "urlPath": "components/side-menu-heading", + "tags": [], + "type": "component", + "slug": "side-menu-heading", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "side-menu-group", + "title": "Side Menu Group", + "name": "Side Menu Group", + "description": "Group of related side menu items.", + "content": "", + "component": "side-menu-group", + "filePath": "docs/src/content/components/side-menu-group.mdx", + "urlPath": "components/side-menu-group", + "tags": [], + "type": "component", + "slug": "side-menu-group", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "scrollable", + "title": "Scrollable", + "name": "Scrollable", + "description": "Container with overflow scrolling.", + "content": "", + "component": "scrollable", + "filePath": "docs/src/content/components/scrollable.mdx", + "urlPath": "components/scrollable", + "tags": [], + "type": "component", + "slug": "scrollable", + "status": "stable", + "category": "utilities" + }, + { + "id": "radio-item", + "title": "Radio Item", + "name": "Radio Item", + "description": "Individual radio option within a group.", + "content": "", + "component": "radio-item", + "filePath": "docs/src/content/components/radio-item.mdx", + "urlPath": "components/radio-item", + "tags": [], + "type": "component", + "slug": "radio-item", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "radio-group", + "title": "Radio", + "name": "Radio", + "description": "Allow users to select one option from a set.", + "content": "", + "component": "radio-group", + "filePath": "docs/src/content/components/radio-group.mdx", + "urlPath": "components/radio-group", + "tags": [], + "type": "component", + "slug": "radio-group", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "popover", + "title": "Popover", + "name": "Popover", + "description": "A small overlay that opens on demand, used in other components.", + "content": "", + "component": "popover", + "filePath": "docs/src/content/components/popover.mdx", + "urlPath": "components/popover", + "tags": [], + "type": "component", + "slug": "popover", + "status": "stable", + "category": "content-layout" + }, + { + "id": "pagination", + "title": "Pagination", + "name": "Pagination", + "description": "Help users navigation between multiple pages or screens as part of a set.", + "content": "", + "component": "pagination", + "filePath": "docs/src/content/components/pagination.mdx", + "urlPath": "components/pagination", + "tags": [], + "type": "component", + "slug": "pagination", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "pages", + "title": "Pages", + "name": "Pages", + "description": "Container for paginated content views.", + "content": "", + "component": "pages", + "filePath": "docs/src/content/components/pages.mdx", + "urlPath": "components/pages", + "tags": [], + "type": "component", + "slug": "pages", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "page-block", + "title": "Page Block", + "name": "Page Block", + "description": "Full-width section with optional background.", + "content": "", + "component": "page-block", + "filePath": "docs/src/content/components/page-block.mdx", + "urlPath": "components/page-block", + "tags": [], + "type": "component", + "slug": "page-block", + "status": "stable", + "category": "content-layout" + }, + { + "id": "notification", + "title": "Notification banner", + "name": "Notification banner", + "description": "Display important page level information or notifications.", + "content": "", + "component": "notification", + "filePath": "docs/src/content/components/notification.mdx", + "urlPath": "components/notification", + "tags": [], + "type": "component", + "slug": "notification", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "modal", + "title": "Modal", + "name": "Modal", + "description": "An overlay that appears in front of all other content, and requires a user to take an action before continuing.", + "content": "", + "component": "modal", + "filePath": "docs/src/content/components/modal.mdx", + "urlPath": "components/modal", + "tags": [], + "type": "component", + "slug": "modal", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "microsite-header", + "title": "Microsite header", + "name": "Microsite header", + "description": "Communicate what stage the service is at, connect to Alberta.ca, and gather feedback on your service.", + "content": "", + "component": "microsite-header", + "filePath": "docs/src/content/components/microsite-header.mdx", + "urlPath": "components/microsite-header", + "tags": [], + "type": "component", + "slug": "microsite-header", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "menu-button", + "title": "Menu button", + "name": "Menu button", + "description": "A button with more than one action.", + "content": "", + "component": "menu-button", + "filePath": "docs/src/content/components/menu-button.mdx", + "urlPath": "components/menu-button", + "tags": [], + "type": "component", + "slug": "menu-button", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "link", + "title": "Link", + "name": "Link", + "description": "Wraps an anchor element to add icons or margins.", + "content": "", + "component": "link", + "filePath": "docs/src/content/components/link.mdx", + "urlPath": "components/link", + "tags": [], + "type": "component", + "slug": "link", + "status": "stable", + "category": "utilities" + }, + { + "id": "link-button", + "title": "Link Button", + "name": "Link Button", + "description": "Button styled as a link for secondary actions.", + "content": "", + "component": "link-button", + "filePath": "docs/src/content/components/link-button.mdx", + "urlPath": "components/link-button", + "tags": [], + "type": "component", + "slug": "link-button", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "linear-progress", + "title": "Linear progress indicator", + "name": "Linear progress indicator", + "description": "Provide visual feedback to users while loading.", + "content": "", + "component": "linear-progress", + "filePath": "docs/src/content/components/linear-progress.mdx", + "urlPath": "components/linear-progress", + "tags": [], + "type": "component", + "slug": "linear-progress", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "input", + "title": "Input", + "name": "Input", + "description": "A single-line field where users can input and edit text.", + "content": "Capture text input from users in forms.\n\n## When to use\n\nUse Input when you need users to enter:\n- Short text answers (names, email addresses)\n- Numbers (phone numbers, quantities)\n- Dates and times\n- Search queries\n\n## When not to use\n\nDon't use Input when:\n- Users need to enter multiple lines of text (use Textarea)\n- Users need to select from predefined options (use Dropdown or Radio)\n- The input requires complex formatting (consider specialized components)\n\n## Types\n\nInput supports multiple HTML input types:\n\n- **text** - General text entry (default)\n- **email** - Email addresses with validation\n- **password** - Masked password entry\n- **number** - Numeric values with stepper\n- **date** - Date picker\n- **tel** - Phone numbers\n- **search** - Search with clear button\n\n## States\n\n- **Default** - Normal interactive state\n- **Focused** - When the input has keyboard focus\n- **Error** - When validation fails\n- **Disabled** - When input is not available\n- **Read-only** - When showing value without editing\n", + "component": "input", + "filePath": "docs/src/content/components/input.mdx", + "urlPath": "components/input", + "tags": [], + "type": "component", + "slug": "input", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "icon", + "title": "Icons", + "name": "Icons", + "description": "A simple and universal graphic symbol representing an action, object, or concept to help guide the user.", + "content": "", + "component": "icon", + "filePath": "docs/src/content/components/icon.mdx", + "urlPath": "components/icon", + "tags": [], + "type": "component", + "slug": "icon", + "status": "stable", + "category": "utilities" + }, + { + "id": "icon-button", + "title": "Icon button", + "name": "Icon button", + "description": "A compact button with an icon and no text.", + "content": "", + "component": "icon-button", + "filePath": "docs/src/content/components/icon-button.mdx", + "urlPath": "components/icon-button", + "tags": [], + "type": "component", + "slug": "icon-button", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "hero-banner", + "title": "Hero banner", + "name": "Hero banner", + "description": "A visual band of text, including an image and a call to action.", + "content": "", + "component": "hero-banner", + "filePath": "docs/src/content/components/hero-banner.mdx", + "urlPath": "components/hero-banner", + "tags": [], + "type": "component", + "slug": "hero-banner", + "status": "stable", + "category": "content-layout" + }, + { + "id": "grid", + "title": "Grid", + "name": "Grid", + "description": "Arrange a number of components into a responsive grid pattern.", + "content": "", + "component": "grid", + "filePath": "docs/src/content/components/grid.mdx", + "urlPath": "components/grid", + "tags": [], + "type": "component", + "slug": "grid", + "status": "stable", + "category": "utilities" + }, + { + "id": "form", + "title": "Form", + "name": "Form", + "description": "Container for form inputs and validation.", + "content": "", + "component": "form", + "filePath": "docs/src/content/components/form.mdx", + "urlPath": "components/form", + "tags": [], + "type": "component", + "slug": "form", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "form-stepper", + "title": "Form stepper", + "name": "Form stepper", + "description": "Provides a visual representation of a form through a series of steps.", + "content": "", + "component": "form-stepper", + "filePath": "docs/src/content/components/form-stepper.mdx", + "urlPath": "components/form-stepper", + "tags": [], + "type": "component", + "slug": "form-stepper", + "status": "deprecated", + "category": "structure-and-navigation" + }, + { + "id": "form-step", + "title": "Form Step", + "name": "Form Step", + "description": "Individual step in a multi-step form.", + "content": "", + "component": "form-step", + "filePath": "docs/src/content/components/form-step.mdx", + "urlPath": "components/form-step", + "tags": [], + "type": "component", + "slug": "form-step", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "form-item", + "title": "Form item", + "name": "Form item", + "description": "Wraps an input control with a text label, requirement label, helper text, and error text.", + "content": "", + "component": "form-item", + "filePath": "docs/src/content/components/form-item.mdx", + "urlPath": "components/form-item", + "tags": [], + "type": "component", + "slug": "form-item", + "status": "stable", + "category": "utilities" + }, + { + "id": "footer", + "title": "Footer", + "name": "Footer", + "description": "Provides information related your service at the bottom of every page.", + "content": "", + "component": "footer", + "filePath": "docs/src/content/components/footer.mdx", + "urlPath": "components/footer", + "tags": [], + "type": "component", + "slug": "footer", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "footer-nav-section", + "title": "Footer Nav Section", + "name": "Footer Nav Section", + "description": "Navigation links section in footer.", + "content": "", + "component": "footer-nav-section", + "filePath": "docs/src/content/components/footer-nav-section.mdx", + "urlPath": "components/footer-nav-section", + "tags": [], + "type": "component", + "slug": "footer-nav-section", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "footer-meta-section", + "title": "Footer Meta Section", + "name": "Footer Meta Section", + "description": "Copyright and legal links in footer.", + "content": "", + "component": "footer-meta-section", + "filePath": "docs/src/content/components/footer-meta-section.mdx", + "urlPath": "components/footer-meta-section", + "tags": [], + "type": "component", + "slug": "footer-meta-section", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "focus-trap", + "title": "Focus Trap", + "name": "Focus Trap", + "description": "Trap focus within a container for accessibility.", + "content": "", + "component": "focus-trap", + "filePath": "docs/src/content/components/focus-trap.mdx", + "urlPath": "components/focus-trap", + "tags": [], + "type": "component", + "slug": "focus-trap", + "status": "stable", + "category": "utilities" + }, + { + "id": "filter-chip", + "title": "Filter chip", + "name": "Filter chip", + "description": "Allow the user to enter information, filter content, and make selections.", + "content": "", + "component": "filter-chip", + "filePath": "docs/src/content/components/filter-chip.mdx", + "urlPath": "components/filter-chip", + "tags": [], + "type": "component", + "slug": "filter-chip", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "file-upload-input", + "title": "File uploader", + "name": "File uploader", + "description": "Help users select and upload a file.", + "content": "", + "component": "file-upload-input", + "filePath": "docs/src/content/components/file-upload-input.mdx", + "urlPath": "components/file-upload-input", + "tags": [], + "type": "component", + "slug": "file-upload-input", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "file-upload-card", + "title": "File Upload Card", + "name": "File Upload Card", + "description": "Display uploaded file with actions.", + "content": "", + "component": "file-upload-card", + "filePath": "docs/src/content/components/file-upload-card.mdx", + "urlPath": "components/file-upload-card", + "tags": [], + "type": "component", + "slug": "file-upload-card", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "dropdown", + "title": "Dropdown", + "name": "Dropdown", + "description": "Present a list of options to the user to select from.", + "content": "", + "component": "dropdown", + "filePath": "docs/src/content/components/dropdown.mdx", + "urlPath": "components/dropdown", + "tags": [], + "type": "component", + "slug": "dropdown", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "drawer", + "title": "Drawer", + "name": "Drawer", + "description": "A panel that slides in from the side of the screen to display additional content or actions without navigating away from the current view.", + "content": "", + "component": "drawer", + "filePath": "docs/src/content/components/drawer.mdx", + "urlPath": "components/drawer", + "tags": [], + "type": "component", + "slug": "drawer", + "status": "stable", + "category": "content-layout" + }, + { + "id": "divider", + "title": "Divider", + "name": "Divider", + "description": "Indicate a separation of layout, or to distinguish large chunks of information on a page.", + "content": "", + "component": "divider", + "filePath": "docs/src/content/components/divider.mdx", + "urlPath": "components/divider", + "tags": [], + "type": "component", + "slug": "divider", + "status": "stable", + "category": "utilities" + }, + { + "id": "details", + "title": "Details", + "name": "Details", + "description": "Let users reveal more detailed information when they need it.", + "content": "", + "component": "details", + "filePath": "docs/src/content/components/details.mdx", + "urlPath": "components/details", + "tags": [], + "type": "component", + "slug": "details", + "status": "stable", + "category": "content-layout" + }, + { + "id": "date-picker", + "title": "Date picker", + "name": "Date picker", + "description": "Lets users select a date through a calendar without the need to manually type it in a field.", + "content": "", + "component": "date-picker", + "filePath": "docs/src/content/components/date-picker.mdx", + "urlPath": "components/date-picker", + "tags": [], + "type": "component", + "slug": "date-picker", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "data-grid", + "title": "Data Grid", + "name": "Data Grid", + "description": "Advanced table with sorting and selection.", + "content": "", + "component": "data-grid", + "filePath": "docs/src/content/components/data-grid.mdx", + "urlPath": "components/data-grid", + "tags": [], + "type": "component", + "slug": "data-grid", + "status": "stable", + "category": "content-layout" + }, + { + "id": "container", + "title": "Container", + "name": "Container", + "description": "Group information, create hierarchy, and show related information.", + "content": "", + "component": "container", + "filePath": "docs/src/content/components/container.mdx", + "urlPath": "components/container", + "tags": [], + "type": "component", + "slug": "container", + "status": "stable", + "category": "content-layout" + }, + { + "id": "circular-progress", + "title": "Circular progress indicator", + "name": "Circular progress indicator", + "description": "Provide feedback of progress to users while loading.", + "content": "", + "component": "circular-progress", + "filePath": "docs/src/content/components/circular-progress.mdx", + "urlPath": "components/circular-progress", + "tags": [], + "type": "component", + "slug": "circular-progress", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "chip", + "title": "Chip", + "name": "Chip", + "description": "Compact element for labels, tags, or selections.", + "content": "", + "component": "chip", + "filePath": "docs/src/content/components/chip.mdx", + "urlPath": "components/chip", + "tags": [], + "type": "component", + "slug": "chip", + "status": "deprecated", + "category": "inputs-and-actions" + }, + { + "id": "checkbox", + "title": "Checkbox", + "name": "Checkbox", + "description": "Let the user select one or more options.", + "content": "", + "component": "checkbox", + "filePath": "docs/src/content/components/checkbox.mdx", + "urlPath": "components/checkbox", + "tags": [], + "type": "component", + "slug": "checkbox", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "checkbox-list", + "title": "Checkbox list", + "name": "Checkbox list", + "description": "A multiple selection input.", + "content": "", + "component": "checkbox-list", + "filePath": "docs/src/content/components/checkbox-list.mdx", + "urlPath": "components/checkbox-list", + "tags": [], + "type": "component", + "slug": "checkbox-list", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "card", + "title": "Card", + "name": "Card", + "description": "Container for grouped related content.", + "content": "", + "component": "card", + "filePath": "docs/src/content/components/card.mdx", + "urlPath": "components/card", + "tags": [], + "type": "component", + "slug": "card", + "status": "stable", + "category": "content-layout" + }, + { + "id": "card-image", + "title": "Card Image", + "name": "Card Image", + "description": "Image display within a card.", + "content": "", + "component": "card-image", + "filePath": "docs/src/content/components/card-image.mdx", + "urlPath": "components/card-image", + "tags": [], + "type": "component", + "slug": "card-image", + "status": "stable", + "category": "content-layout" + }, + { + "id": "card-group", + "title": "Card Group", + "name": "Card Group", + "description": "Layout for multiple cards.", + "content": "", + "component": "card-group", + "filePath": "docs/src/content/components/card-group.mdx", + "urlPath": "components/card-group", + "tags": [], + "type": "component", + "slug": "card-group", + "status": "stable", + "category": "content-layout" + }, + { + "id": "card-content", + "title": "Card Content", + "name": "Card Content", + "description": "Content area within a card.", + "content": "", + "component": "card-content", + "filePath": "docs/src/content/components/card-content.mdx", + "urlPath": "components/card-content", + "tags": [], + "type": "component", + "slug": "card-content", + "status": "stable", + "category": "content-layout" + }, + { + "id": "card-actions", + "title": "Card Actions", + "name": "Card Actions", + "description": "Action buttons within a card footer.", + "content": "", + "component": "card-actions", + "filePath": "docs/src/content/components/card-actions.mdx", + "urlPath": "components/card-actions", + "tags": [], + "type": "component", + "slug": "card-actions", + "status": "stable", + "category": "content-layout" + }, + { + "id": "callout", + "title": "Callout", + "name": "Callout", + "description": "Communicate important information through a strong visual emphasis.", + "content": "", + "component": "callout", + "filePath": "docs/src/content/components/callout.mdx", + "urlPath": "components/callout", + "tags": [], + "type": "component", + "slug": "callout", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "calendar", + "title": "Calendar", + "name": "Calendar", + "description": "Visual calendar for date selection.", + "content": "", + "component": "calendar", + "filePath": "docs/src/content/components/calendar.mdx", + "urlPath": "components/calendar", + "tags": [], + "type": "component", + "slug": "calendar", + "status": "stable", + "category": "utilities" + }, + { + "id": "button", + "title": "Button", + "name": "Button", + "description": "Carry out an important action or navigate to another page.", + "content": "", + "component": "button", + "filePath": "docs/src/content/components/button.mdx", + "urlPath": "components/button", + "tags": [], + "type": "component", + "slug": "button", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "button-group", + "title": "Button group", + "name": "Button group", + "description": "Display multiple related actions stacked or in a horizontal row to help with arrangement and spacing.", + "content": "", + "component": "button-group", + "filePath": "docs/src/content/components/button-group.mdx", + "urlPath": "components/button-group", + "tags": [], + "type": "component", + "slug": "button-group", + "status": "stable", + "category": "inputs-and-actions" + }, + { + "id": "block", + "title": "Block", + "name": "Block", + "description": "Group components into a block with consistent space between.", + "content": "", + "component": "block", + "filePath": "docs/src/content/components/block.mdx", + "urlPath": "components/block", + "tags": [], + "type": "component", + "slug": "block", + "status": "stable", + "category": "utilities" + }, { "id": "badge", "title": "Badge", - "description": " Small labels which hold small amounts of information, system feedback, or states. ", - "content": "# Badge\n\nSmall labels which hold small amounts of information, system feedback, or states.\n", + "name": "Badge", + "description": "Small labels which hold small amounts of information, system feedback, or states.", + "content": "", "component": "badge", - "filePath": "docs/src/pages/components/badge/badge.mdx", + "filePath": "docs/src/content/components/badge.mdx", "urlPath": "components/badge", - "tags": [ - "filter chip", - "icons", - "table" - ] + "tags": [], + "type": "component", + "slug": "badge", + "status": "stable", + "category": "feedback-and-alerts" + }, + { + "id": "app-header", + "title": "Header", + "name": "Header", + "description": "Provide structure to help users find their way around the service.", + "content": "", + "component": "app-header", + "filePath": "docs/src/content/components/app-header.mdx", + "urlPath": "components/app-header", + "tags": [], + "type": "component", + "slug": "app-header", + "status": "stable", + "category": "structure-and-navigation" + }, + { + "id": "app-header-menu", + "title": "App Header Menu", + "name": "App Header Menu", + "description": "Menu items within the app header.", + "content": "", + "component": "app-header-menu", + "filePath": "docs/src/content/components/app-header-menu.mdx", + "urlPath": "components/app-header-menu", + "tags": [], + "type": "component", + "slug": "app-header-menu", + "status": "stable", + "category": "structure-and-navigation" }, { "id": "accordion", "title": "Accordion", - "description": "Some additional description for the component", - "content": "# Accordion\nAccordion containers enable multiple content sections to be displayed in a limited space and collapsed or expanded by the user. You can create hierarchy of information by hiding secondary content inside collapsed expand containers.\n\n## Examples\n\n\n
    \n
    Name
    \n
    Joan Smith
    \n
    Contact preference
    \n
    Text message
    \n
    \n
    \n\n### Close all\n\nconst AccordionCloseAllExample => () {\n const [expandedAll, setExpandedAll] = useState(false);\n const [expandedList, setExpandedList] = useState([]);\n useEffect(() => {\n setExpandedAll(expandedList.length === 4);\n }, [expandedList.length]);\n\n const expandOrCollapseAll = () => {\n setExpandedAll((prev) => {\n const newState = !prev;\n setExpandedList(newState ? [1, 2, 3, 4] : []);\n return newState;\n });\n };\n\n const updateAccordion = (order: number, isOpen: boolean) => {\n setExpandedList((prev) => {\n if (isOpen) {\n return prev.includes(order) ? prev: [...prev, order];\n }\n return prev.filter((item) => item !== order);\n });\n\n return (\n expandOrCollapseAll()}>\n {expandedAll ? \"Hide all sections\" : \"Show all sections\"}\n \n\n updateAccordion(1, open)}>\n To create an account you will need to contact your office admin.\n \n\n updateAccordion(2, open)}>\n You will need to verify your identity through our two factor authentication in addition to the digital signature.\n \n\n updateAccordion(3, open)}>\n Yes, you can see the status of your application on the main service dashboard when you login. You will receive updates and notifications in your email as your request progresses.\n \n\n updateAccordion(4, open)}>\n Yes, our digital service is designed with accessibility in mind. More information on accessibility.\n \n )\n}\n\n\n", + "name": "Accordion", + "description": "Let users show and hide sections of related content on a page.", + "content": "", "component": "accordion", - "filePath": "docs/src/pages/components/accordion/accordion.mdx", + "filePath": "docs/src/content/components/accordion.mdx", "urlPath": "components/accordion", + "tags": [], + "type": "component", + "slug": "accordion", + "status": "stable", + "category": "content-layout" + }, + { + "id": "example-warn-a-user-of-a-deadline", + "title": "Warn a user of a deadline", + "description": "Use a modal with important callout styling to warn users about time-sensitive deadlines that could affect their submission or action. ", + "content": "Use a modal with important callout styling to warn users about time-sensitive deadlines that could affect their submission or action.\n\n## When to use\n\nUse this pattern when:\n- Users are about to take an action with a time constraint\n- Missing a deadline could have significant consequences\n- The warning requires acknowledgment before proceeding\n\n## Considerations\n\n- Be specific about the deadline (time, date, timezone)\n- Explain the consequences of missing the deadline\n- Provide a clear acknowledgment action\n- Use the \"important\" callout variant for urgency\n- Keep the message concise but informative\n", + "component": "", + "filePath": "docs/src/content/examples/warn-a-user-of-a-deadline/index.mdx", + "urlPath": "examples/warn-a-user-of-a-deadline", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "warn-a-user-of-a-deadline", + "status": "published", + "categories": [] + }, + { + "id": "example-type-to-create-a-new-filter", + "title": "Type to create a new filter", + "description": "Allow users to type custom filter values and create filter chips by pressing Enter, with the ability to remove chips using Backspace or by clicking them. ", + "content": "Allow users to type custom filter values and create filter chips by pressing Enter, with the ability to remove chips using Backspace or by clicking them.\n\n## When to use\n\nUse this pattern when:\n- Users need to create custom filter values not from a predefined list\n- Free-form text filtering is appropriate for the data\n- Users may want to quickly add multiple related filters\n\n## Considerations\n\n- Clear the input after a chip is created\n- Allow Backspace to delete the last chip when the input is empty\n- Provide visual feedback as chips are added\n- Consider input validation before creating chips\n- Show chips inline with the input for clear association\n", + "component": "", + "filePath": "docs/src/content/examples/type-to-create-a-new-filter/index.mdx", + "urlPath": "examples/type-to-create-a-new-filter", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "type-to-create-a-new-filter", + "status": "published", + "categories": [] + }, + { + "id": "example-task-list-page", + "title": "Task list page", + "description": "A task list page provides a structure for multi-step services, showing users their progress through a series of tasks with clear status indicators. ", + "content": "A task list page provides a structure for multi-step services, showing users their progress through a series of tasks with clear status indicators.\n\n## When to use\n\nUse this pattern when:\n- A service has multiple distinct tasks or sections to complete\n- Users need to see their overall progress\n- Tasks can potentially be completed in different orders\n- Users may return to complete tasks over multiple sessions\n\n## Considerations\n\n- Group related actions into logical tasks\n- Show status badges for each task (Completed, In progress, Not started, Cannot start yet)\n- Include a summary callout showing how many sections are complete\n- Allow users to complete tasks in any order when possible\n- Clearly indicate when tasks have dependencies\n", + "component": "", + "filePath": "docs/src/content/examples/task-list-page/index.mdx", + "urlPath": "examples/task-list-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "task-list-page", + "status": "published", + "categories": [] + }, + { + "id": "example-start-page", + "title": "Start page", + "description": "A start page is the front door to a government service for citizens. It provides essential information about the service and a clear call to action to begin. ", + "content": "A start page is the front door to a government service for citizens. It provides essential information about the service and a clear call to action to begin.\n\n## When to use\n\nUse this pattern when:\n- Creating the entry point for a citizen-facing government service\n- Citizens need to understand what the service does before starting\n- You need to communicate prerequisites, time estimates, or required documents\n\n## Considerations\n\n- Keep the overview concise and focused on what users can do\n- List what documents or information users will need\n- Include an estimated completion time\n- Use a prominent \"Get started\" or \"Start now\" button\n- Provide contact information and alternative ways to access the service below the main call to action\n", + "component": "", + "filePath": "docs/src/content/examples/start-page/index.mdx", + "urlPath": "examples/start-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "start-page", + "status": "published", + "categories": [] + }, + { + "id": "example-sort-data-in-a-table", + "title": "Sort data in a table", + "description": "Enable column sorting in tables using sort headers, allowing workers to organize data by clicking column headers to toggle ascending/descending order. ", + "content": "Enable column sorting in tables using sort headers, allowing workers to organize data by clicking column headers to toggle ascending/descending order.\n\n## When to use\n\nUse this pattern when:\n- Workers need to organize tabular data by different columns\n- Data sets are large enough that sorting improves usability\n- Multiple columns could reasonably be used as sort criteria\n\n## Considerations\n\n- Indicate the current sort direction with visual cues\n- Set a sensible default sort order when the table loads\n- Consider which columns should be sortable based on data type\n- Numeric columns typically sort numerically, text columns alphabetically\n- Maintain sort state when data updates if appropriate\n", + "component": "", + "filePath": "docs/src/content/examples/sort-data-in-a-table/index.mdx", + "urlPath": "examples/sort-data-in-a-table", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "sort-data-in-a-table", + "status": "published", + "categories": [] + }, + { + "id": "example-slotted-helper-text-in-a-form-item", + "title": "Slotted helper text in a form item", + "description": "Use the helpText slot in a form item to display formatted helper text with custom styling like bold, italic, or links. ", + "content": "Use the helpText slot in a form item to display formatted helper text with custom styling like bold, italic, or links.\n\n## When to use\n\nUse this pattern when:\n- You need to display helper text with custom formatting\n- Helper text requires links to additional resources\n- Standard string-based helper text is insufficient\n\n## Considerations\n\n- Keep helper text concise and relevant to the field\n- Use formatting to highlight important information\n- Ensure helper text is accessible to screen readers\n- Consider using links to provide additional guidance without cluttering the form\n", + "component": "", + "filePath": "docs/src/content/examples/slotted-helper-text-in-a-form-item/index.mdx", + "urlPath": "examples/slotted-helper-text-in-a-form-item", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "slotted-helper-text-in-a-form-item", + "status": "published", + "categories": [] + }, + { + "id": "example-slotted-error-text-in-a-form-item", + "title": "Slotted error text in a form item", + "description": "Use the error slot in a form item to display formatted error messages with custom styling like bold or italic text. ", + "content": "Use the error slot in a form item to display formatted error messages with custom styling like bold or italic text.\n\n## When to use\n\nUse this pattern when:\n- You need to display error messages with custom formatting\n- Error text requires links, bold, or other inline styling\n- Standard string-based error messages are insufficient\n\n## Considerations\n\n- Keep error messages clear and actionable\n- Use formatting sparingly to highlight key information\n- Ensure error text is accessible and readable by screen readers\n- The input component should also have its error prop set to true for proper styling\n", + "component": "", + "filePath": "docs/src/content/examples/slotted-error-text-in-a-form-item/index.mdx", + "urlPath": "examples/slotted-error-text-in-a-form-item", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "slotted-error-text-in-a-form-item", + "status": "published", + "categories": [] + }, + { + "id": "example-show-version-number", + "title": "Show version number", + "description": "Display version information in the microsite header using the version slot, allowing custom formatting and styling of version text. ", + "content": "Display version information in the microsite header using the version slot, allowing custom formatting and styling of version text.\n\n## When to use\n\nUse this pattern when:\n- You need to display a version number or status in the header\n- The service is in alpha or beta phase\n- You want to include formatted version information\n\n## Considerations\n\n- Use the version slot for custom version content with formatting\n- Keep version text concise and clear\n- Combine with header type (alpha, beta, live) to indicate service maturity\n- Version information should be easily scannable\n", + "component": "", + "filePath": "docs/src/content/examples/show-version-number/index.mdx", + "urlPath": "examples/show-version-number", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-version-number", + "status": "published", + "categories": [] + }, + { + "id": "example-show-status-on-a-card", + "title": "Show status on a card", + "description": "Display status indicators on cards using badges in the actions slot, allowing workers to quickly see the priority or state of each item. ", + "content": "Display status indicators on cards using badges in the actions slot, allowing workers to quickly see the priority or state of each item.\n\n## When to use\n\nUse this pattern when:\n- Displaying items in a card-based layout that have status or priority levels\n- Workers need to quickly identify high-priority or important items\n- Status should be prominently visible in the card header area\n\n## Considerations\n\n- Use the actions slot to position the badge in the card header\n- Choose badge types that clearly communicate priority or status\n- Keep badge content concise (one or two words)\n- Ensure the card heading and badge work well together visually\n", + "component": "", + "filePath": "docs/src/content/examples/show-status-on-a-card/index.mdx", + "urlPath": "examples/show-status-on-a-card", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-status-on-a-card", + "status": "published", + "categories": [] + }, + { + "id": "example-show-status-in-a-table", + "title": "Show status in a table", + "description": "Display status information within table rows using badges to provide clear visual indicators of item states like pending, complete, failed, or in progress. ", + "content": "Display status information within table rows using badges to provide clear visual indicators of item states like pending, complete, failed, or in progress.\n\n## When to use\n\nUse this pattern when:\n- Displaying lists of items that have different status states\n- Workers need to quickly scan and identify items requiring action\n- Status needs to be immediately visible alongside other item data\n\n## Considerations\n\n- Use consistent badge types for similar statuses across your application\n- Choose badge colors that clearly differentiate between states (success, warning, error, info)\n- Include action buttons to allow workers to act on items directly from the table\n- Align status badges consistently within the column\n", + "component": "", + "filePath": "docs/src/content/examples/show-status-in-a-table/index.mdx", + "urlPath": "examples/show-status-in-a-table", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-status-in-a-table", + "status": "published", + "categories": [] + }, + { + "id": "example-show-quick-links", + "title": "Show quick links", + "description": "Use the app footer meta section to display essential quick links like feedback, accessibility, privacy, and contact information without the full navigation structure. ", + "content": "Use the app footer meta section to display essential quick links like feedback, accessibility, privacy, and contact information without the full navigation structure.\n\n## When to use\n\nUse this pattern when:\n- Building a simpler service that doesn't need full navigation\n- Essential utility links are required in the footer\n- The service needs quick access to feedback/contact\n- Full footer navigation would be excessive\n\n## Considerations\n\n- Keep the meta section links focused and essential\n- Include accessibility and privacy links as required\n- Order links by importance or frequency of use\n- Use consistent link text across government services\n", + "component": "", + "filePath": "docs/src/content/examples/show-quick-links/index.mdx", + "urlPath": "examples/show-quick-links", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-quick-links", + "status": "published", + "categories": [] + }, + { + "id": "example-show-number-of-results-per-page", + "title": "Show number of results per page", + "description": "Combine pagination with a dropdown selector to let users control how many results appear per page, improving data browsing for different use cases. ", + "content": "Combine pagination with a dropdown selector to let users control how many results appear per page, improving data browsing for different use cases.\n\n## When to use\n\nUse this pattern when:\n- Displaying paginated data in tables\n- Users may want to see more or fewer items\n- Different tasks benefit from different page sizes\n- The total result count should be visible\n\n## Considerations\n\n- Show \"of X\" to indicate total results\n- Reset to page 1 when changing page size\n- Use reasonable default (10 is common)\n- Provide sensible options (10, 20, 30, etc.)\n", + "component": "", + "filePath": "docs/src/content/examples/show-number-of-results-per-page/index.mdx", + "urlPath": "examples/show-number-of-results-per-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-number-of-results-per-page", + "status": "published", + "categories": [] + }, + { + "id": "example-show-multiple-tags-together", + "title": "Show multiple tags together", + "description": "Display multiple badges together using GoabBlock with tight spacing to show multiple statuses or categories for a single item. ", + "content": "Display multiple badges together using GoabBlock with tight spacing to show multiple statuses or categories for a single item.\n\n## When to use\n\nUse this pattern when:\n- An item has multiple statuses or categories\n- You need to show related metadata together\n- Visual grouping of badges improves scanning\n- Items can have multiple applicable labels\n\n## Considerations\n\n- Use `gap=\"xs\"` for tight spacing between badges\n- Keep badge count reasonable (2-4 typically)\n- Choose badge types that provide visual contrast\n- Consider reading order and importance\n", + "component": "", + "filePath": "docs/src/content/examples/show-multiple-tags-together/index.mdx", + "urlPath": "examples/show-multiple-tags-together", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-multiple-tags-together", + "status": "published", + "categories": [] + }, + { + "id": "example-show-multiple-actions-in-a-compact-table", + "title": "Show multiple actions in a compact table", + "description": "Use icon buttons to provide multiple row actions in tables where space is limited, keeping the interface compact while maintaining accessibility through aria labels. ", + "content": "Use icon buttons to provide multiple row actions in tables where space is limited, keeping the interface compact while maintaining accessibility through aria labels.\n\n## When to use\n\nUse this pattern when:\n- Tables need multiple actions per row\n- Horizontal space is limited\n- Workers are familiar with icon meanings\n- Actions are common (edit, flag, send, etc.)\n\n## Considerations\n\n- Always include aria-label for accessibility\n- Use small size icon buttons for compact tables\n- Group related actions with GoabBlock\n- Ensure icons are universally understood\n", + "component": "", + "filePath": "docs/src/content/examples/show-multiple-actions-in-a-compact-table/index.mdx", + "urlPath": "examples/show-multiple-actions-in-a-compact-table", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-multiple-actions-in-a-compact-table", + "status": "published", + "categories": [] + }, + { + "id": "example-show-more-information-to-help-answer-a-question", + "title": "Show more information to help answer a question", + "description": "Use the Details component to provide optional contextual help that explains why a question is being asked, helping users understand the purpose without cluttering the main form. ", + "content": "Use the Details component to provide optional contextual help that explains why a question is being asked, helping users understand the purpose without cluttering the main form.\n\n## When to use\n\nUse this pattern when:\n- Users may wonder why a question is being asked\n- Additional context helps users answer correctly\n- The information is optional and shouldn't distract\n- Following question page patterns for citizen services\n\n## Considerations\n\n- Place the details component after the question input\n- Use a clear heading like \"Why are we asking this question?\"\n- Keep the expanded content concise and helpful\n- Include helper text for the main question when appropriate\n", + "component": "", + "filePath": "docs/src/content/examples/show-more-information-to-help-answer-a-question/index.mdx", + "urlPath": "examples/show-more-information-to-help-answer-a-question", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-more-information-to-help-answer-a-question", + "status": "published", + "categories": [] + }, + { + "id": "example-show-links-to-navigation-items", + "title": "Show links to navigation items", + "description": "Use the app footer to display comprehensive navigation links organized into sections, along with meta links for common utilities like privacy and accessibility. ", + "content": "Use the app footer to display comprehensive navigation links organized into sections, along with meta links for common utilities like privacy and accessibility.\n\n## When to use\n\nUse this pattern when:\n- Building a full-featured government service\n- Users need access to site-wide navigation in the footer\n- Meta links (privacy, accessibility, etc.) are required\n- Organizing footer links into logical categories helps navigation\n\n## Considerations\n\n- Group related links in the nav section\n- Keep meta section for utility links (privacy, accessibility, contact)\n- Control column layout with maxColumnCount prop\n- Ensure all links are properly labeled and functional\n", + "component": "", + "filePath": "docs/src/content/examples/show-links-to-navigation-items/index.mdx", + "urlPath": "examples/show-links-to-navigation-items", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-links-to-navigation-items", + "status": "published", + "categories": [] + }, + { + "id": "example-show-full-date-in-a-tooltip", + "title": "Show full date in a tooltip", + "description": "Display relative time (like \"4 hours ago\") while providing the full date and time on hover via tooltip for users who need exact timestamps. ", + "content": "Display relative time (like \"4 hours ago\") while providing the full date and time on hover via tooltip for users who need exact timestamps.\n\n## When to use\n\nUse this pattern when:\n- Displaying relative time like \"4 hours ago\" or \"2 days ago\"\n- Users may need access to the exact date and time\n- Space is limited for full date display\n- Context cards or comments show timestamps\n\n## Considerations\n\n- Keep the relative time format consistent\n- Include both date and time in the tooltip\n- Style the hoverable text subtly (secondary color, smaller font)\n- Ensure tooltip is keyboard accessible\n", + "component": "", + "filePath": "docs/src/content/examples/show-full-date-in-a-tooltip/index.mdx", + "urlPath": "examples/show-full-date-in-a-tooltip", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-full-date-in-a-tooltip", + "status": "published", + "categories": [] + }, + { + "id": "example-show-different-views-of-data-in-a-table", + "title": "Show different views of data in a table", + "description": "Use tabs to organize table data into different views based on status or category, showing counts in each tab to help workers quickly navigate to relevant items. ", + "content": "Use tabs to organize table data into different views based on status or category, showing counts in each tab to help workers quickly navigate to relevant items.\n\n## When to use\n\nUse this pattern when:\n- Workers need to view data filtered by status\n- Different subsets of data require focused attention\n- Quick access to counts of items in each category is helpful\n- Switching between views should preserve context\n\n## Considerations\n\n- Show counts in tab headers using badges\n- Maintain consistent table structure across tabs\n- Default to the most commonly used view\n- Consider which statuses need prominent display\n", + "component": "", + "filePath": "docs/src/content/examples/show-different-views-of-data-in-a-table/index.mdx", + "urlPath": "examples/show-different-views-of-data-in-a-table", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-different-views-of-data-in-a-table", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-user-progress-when-the-time-is-unknown", + "title": "Show a user progress when the time is unknown", + "description": "Display indeterminate progress for operations where completion time cannot be estimated, such as complex searches or external system queries. ", + "content": "Display indeterminate progress for operations where completion time cannot be estimated, such as complex searches or external system queries.\n\n## When to use\n\nUse this pattern when:\n- The operation duration cannot be predicted\n- You're querying external systems with variable response times\n- Searching across multiple data sources\n- Users need to know something is happening but not a specific percentage\n\n## Considerations\n\n- Use `type=\"indeterminate\"` for unknown duration operations\n- Always provide a cancel option\n- Show success or failure notification when complete\n- Include meaningful context in the notification message\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-user-progress-when-the-time-is-unknown/index.mdx", + "urlPath": "examples/show-a-user-progress-when-the-time-is-unknown", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-user-progress-when-the-time-is-unknown", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-user-progress", + "title": "Show a user progress", + "description": "Display progress feedback during long-running operations like downloads, showing percentage completion with the ability to cancel and receive success confirmation. ", + "content": "Display progress feedback during long-running operations like downloads, showing percentage completion with the ability to cancel and receive success confirmation.\n\n## When to use\n\nUse this pattern when:\n- An operation takes more than a few seconds\n- Progress can be measured as a percentage (0-100%)\n- Users need the ability to cancel the operation\n- Success or failure confirmation is needed\n\n## Considerations\n\n- Always provide a cancel option for long operations\n- Show a success notification when complete\n- Use `type=\"progress\"` for operations with known duration\n- Handle errors gracefully with failure notifications\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-user-progress/index.mdx", + "urlPath": "examples/show-a-user-progress", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-user-progress", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions", + "title": "Show a simple progress indicator on a question page with multiple questions", + "description": "Show a simple progress indicator on a question page when grouping multiple related questions together. ", + "content": "Show a simple progress indicator on a question page when grouping multiple related questions together.\n\n## When to use\n\nUse this pattern when:\n- Grouping multiple related questions on a single page improves the user experience\n- The questions form a logical unit (e.g., personal information fields)\n- Users benefit from progress tracking across the form\n- A step-based indicator shows progress through form sections\n\n## Considerations\n\n- Display progress as \"Step X of Y\" when grouping questions into sections\n- Include a clear section heading that describes the group of questions\n- Use a subdued text color for the progress indicator\n- Include a back link for navigation to previous sections\n- Position related questions close together with consistent spacing\n- The `leadingContent` prop on inputs can add prefixes like country codes\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/index.mdx", + "urlPath": "examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-simple-progress-indicator-on-a-question-page", + "title": "Show a simple progress indicator on a question page", + "description": "Show a simple progress indicator on a question page to help users understand their progress through the form. ", + "content": "Show a simple progress indicator on a question page to help users understand their progress through the form.\n\n## When to use\n\nUse this pattern when:\n- Building a multi-question form where progress tracking helps users\n- Users benefit from knowing how many questions remain\n- The form has a linear flow with a known number of questions\n- Following the one-question-per-page pattern for government services\n\n## Considerations\n\n- Display progress as \"Question X of Y\" for clarity\n- Use a subdued text color for the progress indicator\n- Include a back link for navigation to previous questions\n- Position the progress indicator above the question\n- Keep the format consistent throughout the form\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/index.mdx", + "urlPath": "examples/show-a-simple-progress-indicator-on-a-question-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-simple-progress-indicator-on-a-question-page", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-section-title-on-a-question-page", + "title": "Show a section title on a question page", + "description": "Show a section title on a question page to help users understand which part of the form they are completing. ", + "content": "Show a section title on a question page to help users understand which part of the form they are completing.\n\n## When to use\n\nUse this pattern when:\n- Building multi-section forms where context helps users\n- Users need to know which category of questions they are answering\n- The form is divided into logical sections like \"Personal information\"\n- Following the one-question-per-page pattern for government services\n\n## Considerations\n\n- Use a subdued text color for the section title to differentiate from the question\n- Include a back link for navigation to previous questions\n- The section title should appear above the question\n- Use consistent spacing between the back link, section title, and question\n- Keep section titles concise and descriptive\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-section-title-on-a-question-page/index.mdx", + "urlPath": "examples/show-a-section-title-on-a-question-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-section-title-on-a-question-page", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-notification-with-an-action", + "title": "Show a notification with an action", + "description": "Show a temporary notification with an action button for user interaction. ", + "content": "Show a temporary notification with an action button for user interaction.\n\n## When to use\n\nUse this pattern when:\n- Users need to take action in response to a notification\n- Providing a quick way to navigate to related content\n- Showing activity notifications that users may want to respond to\n- The action should dismiss the notification when clicked\n\n## Considerations\n\n- Use `actionText` to set the button label in the notification\n- The `action` callback receives the notification UUID for dismissal\n- Use `TemporaryNotification.dismiss(uuid)` to close the notification programmatically\n- Keep action text short and clear (e.g., \"View\", \"Undo\", \"Open\")\n- Consider what happens if the user doesn't click the action before auto-dismiss\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-notification-with-an-action/index.mdx", + "urlPath": "examples/show-a-notification-with-an-action", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-notification-with-an-action", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-notification", + "title": "Show a notification", + "description": "Show a temporary notification to confirm an action was completed successfully. ", + "content": "Show a temporary notification to confirm an action was completed successfully.\n\n## When to use\n\nUse this pattern when:\n- Confirming that a save operation completed successfully\n- Providing immediate feedback after a user action\n- The notification should automatically dismiss after a few seconds\n- Users need non-intrusive confirmation of their action\n\n## Considerations\n\n- Use the `type` option to indicate the nature of the notification (success, information, etc.)\n- Import `TemporaryNotification` from `@abgov/ui-components-common`\n- Include a `` component in your app to render notifications\n- Keep notification messages concise and action-oriented\n- Notifications auto-dismiss after a default duration\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-notification/index.mdx", + "urlPath": "examples/show-a-notification", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-notification", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-list-to-help-answer-a-question", + "title": "Show a list to help answer a question", + "description": "Show a list to help answer a question using an expandable details component. ", + "content": "Show a list to help answer a question using an expandable details component.\n\n## When to use\n\nUse this pattern when:\n- Users need clarification about what items qualify for a question\n- You want to provide examples of what to include or exclude\n- The guidance content would clutter the form if always visible\n- Users can make better decisions with reference information\n\n## Considerations\n\n- Place the details component after the form question it relates to\n- Use clear headings within the details to organize content\n- Include both \"examples of\" and \"do not include\" lists when relevant\n- Keep the details heading phrased as a question to indicate it provides clarification\n- Ensure the expanded content is easy to scan with clear formatting\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-list-to-help-answer-a-question/index.mdx", + "urlPath": "examples/show-a-list-to-help-answer-a-question", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-list-to-help-answer-a-question", + "status": "published", + "categories": [] + }, + { + "id": "example-show-a-label-on-an-icon-only-button", + "title": "Show a label on an icon only button", + "description": "Show a label on an icon-only button using a tooltip to improve discoverability. ", + "content": "Show a label on an icon-only button using a tooltip to improve discoverability.\n\n## When to use\n\nUse this pattern when:\n- Using icon buttons without visible text labels\n- Users might not recognize what an icon means\n- You want to provide context for icon-only actions\n- Building toolbars or action bars with multiple icon buttons\n\n## Considerations\n\n- Always include an `ariaLabel` on icon buttons for screen reader accessibility\n- Tooltips provide visual context but should not be the only way to understand the action\n- Keep tooltip content short and descriptive\n- Group related icon buttons together using a button group\n- Consider using text labels instead of tooltips for critical actions\n", + "component": "", + "filePath": "docs/src/content/examples/show-a-label-on-an-icon-only-button/index.mdx", + "urlPath": "examples/show-a-label-on-an-icon-only-button", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "show-a-label-on-an-icon-only-button", + "status": "published", + "categories": [] + }, + { + "id": "example-set-the-status-of-step-on-a-form-stepper", + "title": "Set the status of step on a form stepper", + "description": "Set the status of each step on a form stepper to indicate completion progress. ", + "content": "Set the status of each step on a form stepper to indicate completion progress.\n\n## When to use\n\nUse this pattern when:\n- Building multi-step forms that need visual progress indication\n- Users need to see which steps are complete, incomplete, or not started\n- You want to provide clear navigation through a complex form process\n- Form completion status needs to be tracked and displayed\n\n## Considerations\n\n- The status property accepts \"complete\", \"incomplete\", or \"not-started\" values\n- Status is controlled by the application based on form completion\n- Consider updating step status as users complete each section\n- Provide clear Previous/Next navigation to move between steps\n- The form stepper can be clicked to navigate directly to completed steps\n", + "component": "", + "filePath": "docs/src/content/examples/set-the-status-of-step-on-a-form-stepper/index.mdx", + "urlPath": "examples/set-the-status-of-step-on-a-form-stepper", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "set-the-status-of-step-on-a-form-stepper", + "status": "published", + "categories": [] + }, + { + "id": "example-set-a-specific-tab-to-be-active", + "title": "Set a specific tab to be active", + "description": "Set a specific tab to be active on page load using the initialTab property. ", + "content": "Set a specific tab to be active on page load using the initialTab property.\n\n## When to use\n\nUse this pattern when:\n- You want to load a specific tab as the default active tab\n- Users should start viewing a particular tab based on context\n- Deep linking to specific tab content is required\n- Showing priority content like items requiring attention\n\n## Considerations\n\n- The `initialTab` property uses zero-based indexing (0 = first tab, 1 = second tab, etc.)\n- Consider which tab provides the most relevant content for users on initial load\n- Badge counts in tab headings help users understand the volume of items in each tab\n- Ensure tab content is accessible and keyboard navigable\n", + "component": "", + "filePath": "docs/src/content/examples/set-a-specific-tab-to-be-active/index.mdx", + "urlPath": "examples/set-a-specific-tab-to-be-active", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "set-a-specific-tab-to-be-active", + "status": "published", + "categories": [] + }, + { + "id": "example-set-a-max-width-on-a-long-radio-item", + "title": "Set a max width on a long radio item", + "description": "Set a max width on a long radio item to control line wrapping. ", + "content": "Set a max width on a long radio item to control line wrapping.\n\n## When to use\n\nUse this pattern when:\n- You have radio options with long labels that need width control\n- You want to prevent radio items from becoming too wide on large screens\n- You need consistent radio item sizing across different viewport sizes\n\n## Considerations\n\n- The `maxWidth` property accepts CSS width values like \"300px\" or \"20ch\"\n- Consider the reading experience when setting max widths\n- Ensure the max width still allows for readable label text\n- Use consistent max widths across similar form elements for visual harmony\n", + "component": "", + "filePath": "docs/src/content/examples/set-a-max-width-on-a-long-radio-item/index.mdx", + "urlPath": "examples/set-a-max-width-on-a-long-radio-item", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "set-a-max-width-on-a-long-radio-item", + "status": "published", + "categories": [] + }, + { + "id": "example-select-one-or-more-from-a-list-of-options", + "title": "Select one or more from a list of options", + "description": "Use checkboxes to let users select one or more options from a list when multiple selections are valid. ", + "content": "Use checkboxes to let users select one or more options from a list when multiple selections are valid.\n\n## When to use\n\nUse this pattern when:\n- Users can select multiple options from a predefined list\n- All options that apply should be selected\n- The list of options is relatively short (up to ~7 items)\n- Each option is independent of the others\n\n## Considerations\n\n- Use clear, concise labels for each option\n- Include help text like \"Choose all that apply\" to indicate multiple selection\n- Consider the order of options (most common first, alphabetical, etc.)\n- For longer lists, consider a different component like multi-select dropdown\n- Ensure adequate touch targets for mobile users\n", + "component": "", + "filePath": "docs/src/content/examples/select-one-or-more-from-a-list-of-options/index.mdx", + "urlPath": "examples/select-one-or-more-from-a-list-of-options", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "select-one-or-more-from-a-list-of-options", + "status": "published", + "categories": [] + }, + { + "id": "example-search", + "title": "Search", + "description": "A search input pattern with a search icon and button for users to find content or filter results. ", + "content": "A search input pattern with a search icon and button for users to find content or filter results.\n\n## When to use\n\nUse this pattern when:\n- Users need to search through content or data\n- Filtering a list or table by text input\n- Providing a site-wide or section search\n- Quick access to specific records is needed\n\n## Considerations\n\n- Include a leading search icon for clear affordance\n- Use an explicit search button for clarity\n- Consider search suggestions or autocomplete for large datasets\n- Provide clear feedback when no results are found\n- Keep the search input appropriately sized for expected query length\n", + "component": "", + "filePath": "docs/src/content/examples/search/index.mdx", + "urlPath": "examples/search", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "search", + "status": "published", + "categories": [] + }, + { + "id": "example-review-page", + "title": "Review page", + "description": "A review page where users can check their answers before submitting a form, with options to change individual responses. ", + "content": "A review page where users can check their answers before submitting a form, with options to change individual responses.\n\n## When to use\n\nUse this pattern when:\n- Users need to review their form answers before submission\n- At the end of a multi-step form or wizard\n- Before finalizing applications or important submissions\n- When accuracy of submitted information is critical\n\n## Considerations\n\n- Display all answered questions with current values\n- Provide \"Change\" links for each answer\n- Show \"Not provided\" for skipped optional questions\n- Include visually hidden text in change links for accessibility\n- Consider grouping related answers under section headings\n- For large forms, consider review pages at the end of each section\n", + "component": "", + "filePath": "docs/src/content/examples/review-page/index.mdx", + "urlPath": "examples/review-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "review-page", + "status": "published", + "categories": [] + }, + { + "id": "example-review-and-action", + "title": "Review and action", + "description": "A side-by-side layout for workers to review case details while taking an action, commonly used in case management and approval workflows. ", + "content": "A side-by-side layout for workers to review case details while taking an action, commonly used in case management and approval workflows.\n\n## When to use\n\nUse this pattern when:\n- Workers need to review information while making decisions\n- Processing applications, requests, or case files\n- The decision requires context from existing case data\n- Actions like approve, deny, or escalate are needed\n\n## Considerations\n\n- Place read-only review information on the left\n- Place action form controls on the right\n- Use containers to group related information\n- Provide clear labels for all case details\n- Include reason fields when denying requests\n- Consider responsive behavior for smaller screens\n", + "component": "", + "filePath": "docs/src/content/examples/review-and-action/index.mdx", + "urlPath": "examples/review-and-action", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "review-and-action", + "status": "published", + "categories": [] + }, + { + "id": "example-reveal-input-based-on-a-selection", + "title": "Reveal input based on a selection", + "description": "Progressively reveal additional form fields based on user selections, reducing visual complexity while gathering necessary information. ", + "content": "Progressively reveal additional form fields based on user selections, reducing visual complexity while gathering necessary information.\n\n## When to use\n\nUse this pattern when:\n- Additional information is only needed for certain options\n- You want to reduce initial form complexity\n- Follow-up questions depend on user choices\n- Creating a more focused, less overwhelming form experience\n\n## Considerations\n\n- The revealed input should appear directly below the triggering selection\n- Use clear labels that explain what information is needed\n- Ensure the reveal animation is smooth and noticeable\n- Consider what happens to data if the user changes their selection\n- Works with both radio groups (single selection) and checkboxes (multiple selections)\n", + "component": "", + "filePath": "docs/src/content/examples/reveal-input-based-on-a-selection/index.mdx", + "urlPath": "examples/reveal-input-based-on-a-selection", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "reveal-input-based-on-a-selection", + "status": "published", + "categories": [] + }, + { + "id": "example-result-page", + "title": "Result page", + "description": "A result page shown after form submission to confirm success, provide next steps, and offer relevant contact information. ", + "content": "A result page shown after form submission to confirm success, provide next steps, and offer relevant contact information.\n\n## When to use\n\nUse this pattern when:\n- A user has submitted a form or application\n- You need to confirm successful completion of a process\n- There is important follow-up information to communicate\n- Users need reference numbers or confirmation details\n\n## Considerations\n\n- Include a reference number if applicable\n- Clearly explain what happens next and when\n- Provide a way to save or print the confirmation\n- Include service contact information for questions\n- Link to feedback forms and related services\n- Keep the success message clear and reassuring\n", + "component": "", + "filePath": "docs/src/content/examples/result-page/index.mdx", + "urlPath": "examples/result-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "result-page", + "status": "published", + "categories": [] + }, + { + "id": "example-reset-date-picker-field", + "title": "Reset date picker field", + "description": "Allow users to programmatically set or clear a date picker field value, useful for reset functionality or setting default dates. ", + "content": "Allow users to programmatically set or clear a date picker field value, useful for reset functionality or setting default dates.\n\n## When to use\n\nUse this pattern when:\n- Users need to clear a date field to start over\n- You need to set a default or suggested date value\n- Providing quick actions to modify date values\n- Building forms with reset functionality\n\n## Considerations\n\n- Provide clear button labels indicating the action\n- Consider whether clearing should also reset validation state\n- The date picker should update immediately when set or cleared\n- Consider providing a confirmation for clearing important dates\n", + "component": "", + "filePath": "docs/src/content/examples/reset-date-picker-field/index.mdx", + "urlPath": "examples/reset-date-picker-field", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "reset-date-picker-field", + "status": "published", + "categories": [] + }, + { + "id": "example-require-user-action-before-continuing", + "title": "Require user action before continuing", + "description": "Use a modal dialog to require users to confirm an action before proceeding, especially for irreversible operations or important decision points. ", + "content": "Use a modal dialog to require users to confirm an action before proceeding, especially for irreversible operations or important decision points.\n\n## When to use\n\nUse this pattern when:\n- The user is about to perform an action that cannot be undone\n- Navigation will cause data loss or prevent returning\n- Important information needs acknowledgment before proceeding\n- Users should confirm before submitting important forms\n\n## Considerations\n\n- Clearly explain the consequences of continuing\n- Provide a way to go back or cancel\n- Use clear, action-oriented button labels\n- Keep the modal content concise and focused\n- Ensure the primary action stands out from secondary options\n", + "component": "", + "filePath": "docs/src/content/examples/require-user-action-before-continuing/index.mdx", + "urlPath": "examples/require-user-action-before-continuing", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "require-user-action-before-continuing", + "status": "published", + "categories": [] + }, + { + "id": "example-remove-a-filter", + "title": "Remove a filter", + "description": "Allow users to remove active filters by clicking on filter chips, providing clear visual feedback and dynamic updates to filtered results. ", + "content": "Allow users to remove active filters by clicking on filter chips, providing clear visual feedback and dynamic updates to filtered results.\n\n## When to use\n\nUse this pattern when:\n- Users have applied filters that need to be removable\n- You want to show active filter state clearly\n- Filters should be easy to remove with a single click\n\n## Considerations\n\n- Each chip should clearly indicate what filter it represents\n- Provide visual feedback when removing filters\n- Results should update immediately when a filter is removed\n- Consider adding an \"x\" icon or clear affordance to indicate removeability\n", + "component": "", + "filePath": "docs/src/content/examples/remove-a-filter/index.mdx", + "urlPath": "examples/remove-a-filter", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "remove-a-filter", + "status": "published", + "categories": [] + }, + { + "id": "example-question-page", + "title": "Question page", + "description": "A question page pattern that presents one question at a time to help users focus, reduce cognitive load, and navigate complex forms more easily. ", + "content": "A question page pattern that presents one question at a time to help users focus, reduce cognitive load, and navigate complex forms more easily.\n\n## When to use\n\nUse this pattern when:\n- Building multi-step forms or wizards\n- Asking users for information that requires focused attention\n- The form has branching logic based on user responses\n- You want to reduce cognitive load and errors\n\n## Considerations\n\n- Each page should contain one idea: one question, one decision, or one piece of information\n- Progress indicators are optional - test without one first\n- The pattern helps with mobile responsiveness and accessibility\n- Enables automatic saving and better error handling\n- Consider adaptive questioning where subsequent questions depend on previous answers\n", + "component": "", + "filePath": "docs/src/content/examples/question-page/index.mdx", + "urlPath": "examples/question-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "question-page", + "status": "published", + "categories": [] + }, + { + "id": "example-public-form", + "title": "Public form", + "description": "The public form pattern provides a structure for citizen-facing form experiences, emphasizing simplicity, accessibility, and low cognitive load. ", + "content": "The public form pattern provides a structure for citizen-facing form experiences, emphasizing simplicity, accessibility, and low cognitive load.\n\n## When to use\n\nUse this pattern when:\n- Designing a public service for citizens\n- Building forms that should be simple and intuitive\n- Users need to make informed decisions while completing the form\n- The service should accommodate users who use it infrequently\n\n## Considerations\n\n- Follow the \"one idea per page\" principle to reduce cognitive load\n- Break complex forms into multiple pages with single questions\n- Use task list pages for longer processes with multiple sections\n- Consider using simple progress indicators rather than horizontal steppers\n- Ensure all form elements meet WCAG 2.2 AA accessibility standards\n", + "component": "", + "filePath": "docs/src/content/examples/public-form/index.mdx", + "urlPath": "examples/public-form", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "public-form", + "status": "published", + "categories": [] + }, + { + "id": "example-link-to-an-external-page", + "title": "Link to an external page", + "description": "Use an external link indicator to show users when a link will take them to a different website. ", + "content": "Use an external link indicator to show users when a link will take them to a different website.\n\n## When to use\n\nUse this pattern when:\n- Linking to websites outside your service\n- Users should be aware they're leaving the current site\n- Providing references to external resources\n- Following accessibility best practices for external links\n\n## Considerations\n\n- Use the \"open\" trailing icon to indicate external links\n- Consider whether the link should open in a new tab\n- Ensure the link text clearly describes the destination\n- External links should be used sparingly and with purpose\n", + "component": "", + "filePath": "docs/src/content/examples/link-to-an-external-page/index.mdx", + "urlPath": "examples/link-to-an-external-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "link-to-an-external-page", + "status": "published", + "categories": [] + }, + { + "id": "example-link-the-user-to-give-feedback-to-the-service", + "title": "Link the user to give feedback to the service", + "description": "Use the microsite header's feedback functionality to collect user feedback during alpha or beta phases of a service. ", + "content": "Use the microsite header's feedback functionality to collect user feedback during alpha or beta phases of a service.\n\n## When to use\n\nUse this pattern when:\n- Your service is in alpha or beta phase\n- You want to actively collect user feedback\n- Building a citizen-facing government service\n- The service is still being developed and improved\n\n## Considerations\n\n- Use the `onFeedbackClick` handler to define feedback behavior\n- Consider linking to a feedback form or opening a modal\n- The feedback link appears automatically on alpha/beta headers\n- Ensure the feedback mechanism is accessible and easy to use\n", + "component": "", + "filePath": "docs/src/content/examples/link-the-user-to-give-feedback-to-the-service/index.mdx", + "urlPath": "examples/link-the-user-to-give-feedback-to-the-service", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "link-the-user-to-give-feedback-to-the-service", + "status": "published", + "categories": [] + }, + { + "id": "example-include-descriptions-for-items-in-a-checkbox-list", + "title": "Include descriptions for items in a checkbox list", + "description": "Add descriptive text to radio button options to help users understand the implications of each choice. ", + "content": "Add descriptive text to radio button options to help users understand the implications of each choice.\n\n## When to use\n\nUse this pattern when:\n- Radio options need additional explanation\n- Users might not understand the difference between options\n- Each option has specific implications or requirements\n- Providing context helps users make informed decisions\n\n## Considerations\n\n- Keep descriptions concise but informative\n- Ensure the label and description work together\n- Use consistent description length across options\n- Consider whether all options need descriptions or just some\n", + "component": "", + "filePath": "docs/src/content/examples/include-descriptions-for-items-in-a-checkbox-list/index.mdx", + "urlPath": "examples/include-descriptions-for-items-in-a-checkbox-list", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "include-descriptions-for-items-in-a-checkbox-list", + "status": "published", + "categories": [] + }, + { + "id": "example-include-a-link-in-the-helper-text-of-an-option", + "title": "Include a link in the helper text of an option", + "description": "Add links within the description text of checkbox options to provide additional context or resources while users are making selections. ", + "content": "Add links within the description text of checkbox options to provide additional context or resources while users are making selections.\n\n## When to use\n\nUse this pattern when:\n- Checkbox options need additional context via links\n- Users might need more information before making a selection\n- Linking to terms, policies, or detailed explanations\n- The link is directly relevant to the specific option\n\n## Considerations\n\n- Keep description text concise even with links\n- Ensure link text is descriptive and accessible\n- Consider whether the link should open in a new tab\n- Use the description prop (React) or ng-template (Angular) for custom content\n", + "component": "", + "filePath": "docs/src/content/examples/include-a-link-in-the-helper-text-of-an-option/index.mdx", + "urlPath": "examples/include-a-link-in-the-helper-text-of-an-option", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "include-a-link-in-the-helper-text-of-an-option", + "status": "published", + "categories": [] + }, + { + "id": "example-hide-and-show-many-sections-of-information", + "title": "Hide and show many sections of information", + "description": "Allow users to expand and collapse multiple accordion sections, with a button to show or hide all sections at once. ", + "content": "Allow users to expand and collapse multiple accordion sections, with a button to show or hide all sections at once.\n\n## When to use\n\nUse this pattern when:\n- Presenting FAQ-style content\n- Users need to scan multiple sections quickly\n- Content is long and would benefit from progressive disclosure\n- Providing a \"show all\" and \"hide all\" option improves usability\n\n## Considerations\n\n- Track the open state of each accordion individually\n- Update the button text based on whether all sections are expanded or collapsed\n- Consider keyboard accessibility for the expand/collapse all functionality\n- Accordion headings should be descriptive and scannable\n", + "component": "", + "filePath": "docs/src/content/examples/hide-and-show-many-sections-of-information/index.mdx", + "urlPath": "examples/hide-and-show-many-sections-of-information", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "hide-and-show-many-sections-of-information", + "status": "published", + "categories": [] + }, + { + "id": "example-hero-banner-with-actions", + "title": "Hero banner with actions", + "description": "Create a hero banner with a call-to-action button to guide users toward the primary task on a landing page. ", + "content": "Create a hero banner with a call-to-action button to guide users toward the primary task on a landing page.\n\n## When to use\n\nUse this pattern when:\n- Creating a landing page for a service\n- You need a prominent call-to-action\n- Introducing users to a service or feature\n- Building a start page for public forms\n\n## Considerations\n\n- Use the \"start\" button type for primary actions\n- Keep the banner text concise and action-oriented\n- The actions slot positions the button appropriately\n- Ensure the heading clearly describes the service purpose\n", + "component": "", + "filePath": "docs/src/content/examples/hero-banner-with-actions/index.mdx", + "urlPath": "examples/hero-banner-with-actions", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "hero-banner-with-actions", + "status": "published", + "categories": [] + }, + { + "id": "example-header-with-navigation", + "title": "Header with navigation", + "description": "Implement a standard application header with navigation menus, search functionality, and sign-in links for government services. ", + "content": "Implement a standard application header with navigation menus, search functionality, and sign-in links for government services.\n\n## When to use\n\nUse this pattern when:\n- Building a government service application\n- You need consistent navigation across pages\n- Users need access to search, support, and authentication\n- Following the GoA header pattern\n\n## Considerations\n\n- Use the microsite header above the app header for government branding\n- Group related navigation items under dropdown menus\n- Include a sign-in link with the \"interactive\" class for proper styling\n- Consider mobile responsiveness for navigation items\n", + "component": "", + "filePath": "docs/src/content/examples/header-with-navigation/index.mdx", + "urlPath": "examples/header-with-navigation", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "header-with-navigation", + "status": "published", + "categories": [] + }, + { + "id": "example-header-with-menu-click-event", + "title": "Header with menu click event", + "description": "Handle custom menu click behavior in the app header, allowing you to intercept the mobile menu button click and implement custom functionality like custom navigation drawers. ", + "content": "Handle custom menu click behavior in the app header, allowing you to intercept the mobile menu button click and implement custom functionality like custom navigation drawers.\n\n## When to use\n\nUse this pattern when:\n- You need custom behavior when the mobile menu button is clicked\n- Building a custom navigation drawer or sidebar\n- The standard header menu behavior needs to be overridden\n- You want to control menu visibility programmatically\n\n## Considerations\n\n- Use the `fullMenuBreakpoint` prop to control when the hamburger menu appears\n- The `onMenuClick` handler fires when the menu button is clicked\n- Consider accessibility when implementing custom menu behavior\n- Test across different device widths to ensure proper behavior\n", + "component": "", + "filePath": "docs/src/content/examples/header-with-menu-click-event/index.mdx", + "urlPath": "examples/header-with-menu-click-event", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "header-with-menu-click-event", + "status": "published", + "categories": [] + }, + { + "id": "example-group-related-questions-together-on-a-question-page", + "title": "Group related questions together on a question page", + "description": "Group related form fields together on a single page to collect address information from users, making it easier to complete logically connected questions at once. ", + "content": "Group related form fields together on a single page to collect address information from users, making it easier to complete logically connected questions at once.\n\n## When to use\n\nUse this pattern when:\n- Collecting address or contact information\n- Form fields are logically related and should be completed together\n- Users need context between related fields\n- Following a question page pattern in a multi-step form\n\n## Considerations\n\n- Use clear, descriptive labels for each form field\n- Include a back link for navigation in multi-step forms\n- Consider adding a section title and subtitle to provide context\n- Use appropriate input widths based on expected content length\n", + "component": "", + "filePath": "docs/src/content/examples/group-related-questions-together-on-a-question-page/index.mdx", + "urlPath": "examples/group-related-questions-together-on-a-question-page", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "group-related-questions-together-on-a-question-page", + "status": "published", + "categories": [] + }, + { + "id": "example-give-context-before-asking-a-long-answer-question", + "title": "Give context before asking a long answer question", + "description": "Provide context and guidance before a long-answer text field to help users provide relevant information. ", + "content": "Provide context and guidance before a long-answer text field to help users provide relevant information.\n\n## When to use\n\nUse this pattern when:\n- Asking open-ended questions that require detailed responses\n- Users may not know what information is most helpful to provide\n- You want to encourage more useful and complete answers\n- Building citizen-facing forms with benefit inquiries or support requests\n\n## Considerations\n\n- Explain the purpose of the question briefly\n- Use a Details component to provide additional guidance without cluttering the form\n- Set appropriate character limits with `maxCount` and `countBy` props\n- Keep instructions focused on what will help process their request\n", + "component": "", + "filePath": "docs/src/content/examples/give-context-before-asking-a-long-answer-question/index.mdx", + "urlPath": "examples/give-context-before-asking-a-long-answer-question", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "give-context-before-asking-a-long-answer-question", + "status": "published", + "categories": [] + }, + { + "id": "example-give-background-information-before-asking-a-question", + "title": "Give background information before asking a question", + "description": "Provide explanatory context before asking a question to help users understand what is being asked. ", + "content": "Provide explanatory context before asking a question to help users understand what is being asked.\n\n## When to use\n\nUse this pattern when:\n- The question requires domain knowledge to answer correctly\n- Terms need clarification for users unfamiliar with the subject\n- Providing context will reduce confusion and incorrect answers\n- Building citizen-facing forms where accessibility of information is important\n\n## Considerations\n\n- Place context information before the question, not after\n- Use clear, plain language that citizens can understand\n- Suggest where users can get additional help if needed\n- Keep explanatory text focused and relevant to the question\n- Use appropriate heading hierarchy for screen reader accessibility\n", + "component": "", + "filePath": "docs/src/content/examples/give-background-information-before-asking-a-question/index.mdx", + "urlPath": "examples/give-background-information-before-asking-a-question", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "give-background-information-before-asking-a-question", + "status": "published", + "categories": [] + }, + { + "id": "example-form-stepper-with-controlled-navigation", + "title": "Form stepper with controlled navigation", + "description": "Create a multi-step form with controlled navigation using Previous/Next buttons. ", + "content": "Create a multi-step form with controlled navigation using Previous/Next buttons.\n\n## When to use\n\nUse this pattern when:\n- A form is too long to display on a single page\n- You want to guide users through a sequential process\n- Steps must be completed in order before proceeding\n- Users should not be able to skip ahead to incomplete steps\n\n## Considerations\n\n- Set an initial `step` value >= 1 to enable controlled mode\n- Steps that are \"Not started\" will not be clickable\n- Use Previous/Next buttons to control navigation programmatically\n- Validate step completion before allowing navigation forward\n- Consider showing skeleton content while loading step data\n", + "component": "", + "filePath": "docs/src/content/examples/form-stepper-with-controlled-navigation/index.mdx", + "urlPath": "examples/form-stepper-with-controlled-navigation", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "form-stepper-with-controlled-navigation", + "status": "published", + "categories": [] + }, + { + "id": "example-filter-data-in-a-table", + "title": "Filter data in a table", + "description": "Enable users to filter table data using search input and filter chips. ", + "content": "Enable users to filter table data using search input and filter chips.\n\n## When to use\n\nUse this pattern when:\n- Users need to narrow down large datasets\n- Multiple filters can be applied simultaneously\n- Filters should be visible and easily removable\n- You want to provide real-time filtering feedback\n\n## Considerations\n\n- Validate filter input to prevent empty or duplicate filters\n- Show applied filters as removable chips for visibility\n- Provide a \"Clear all\" option when multiple filters are applied\n- Display a \"No results found\" message when filters return empty results\n- Use case-insensitive matching for better user experience\n", + "component": "", + "filePath": "docs/src/content/examples/filter-data-in-a-table/index.mdx", + "urlPath": "examples/filter-data-in-a-table", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "filter-data-in-a-table", + "status": "published", + "categories": [] + }, + { + "id": "example-expand-or-collapse-part-of-a-form", + "title": "Expand or collapse part of a form", + "description": "Use accordions to organize form review sections that users can expand or collapse. ", + "content": "Use accordions to organize form review sections that users can expand or collapse.\n\n## When to use\n\nUse this pattern when:\n- Presenting a review summary of form sections before submission\n- Users need to verify information across multiple categories\n- Sections contain detailed information that may not need constant visibility\n- You want to highlight sections that have been updated\n\n## Considerations\n\n- Use `headingContent` to add badges or status indicators to section headers\n- Use definition lists (`
    `) for structured label/value pairs\n- Apply consistent spacing with CSS custom properties\n- Consider defaulting important or recently updated sections to expanded state\n", + "component": "", + "filePath": "docs/src/content/examples/expand-or-collapse-part-of-a-form/index.mdx", + "urlPath": "examples/expand-or-collapse-part-of-a-form", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "expand-or-collapse-part-of-a-form", + "status": "published", + "categories": [] + }, + { + "id": "example-dynamically-change-items-in-a-dropdown-list", + "title": "Dynamically change items in a dropdown list", + "description": "Update dropdown options based on the selection in another dropdown (cascading/dependent dropdowns). ", + "content": "Update dropdown options based on the selection in another dropdown (cascading/dependent dropdowns).\n\n## When to use\n\nUse this pattern when:\n- Options in one dropdown depend on the selection in another\n- You need to filter available choices based on a category\n- Building hierarchical selection interfaces (e.g., country/state/city)\n\n## Considerations\n\n- Use `mountType=\"reset\"` to clear and repopulate dropdown items\n- Generate unique keys for items to ensure proper re-rendering\n- Provide placeholder text to guide users when no selection is made\n- Consider loading states if data fetching is required\n", + "component": "", + "filePath": "docs/src/content/examples/dynamically-change-items-in-a-dropdown-list/index.mdx", + "urlPath": "examples/dynamically-change-items-in-a-dropdown-list", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "dynamically-change-items-in-a-dropdown-list", + "status": "published", + "categories": [] + }, + { + "id": "example-dynamically-add-an-item-to-a-dropdown-list", + "title": "Dynamically add an item to a dropdown list", + "description": "Allow users to add new items to a dropdown list dynamically. ", + "content": "Allow users to add new items to a dropdown list dynamically.\n\n## When to use\n\nUse this pattern when:\n- Users need to add custom options to a predefined list\n- The list of options can grow based on user input\n- You want to provide flexibility while maintaining structure\n\n## Considerations\n\n- Use the `mountType` prop to control where new items appear (prepend or append)\n- Validate input before adding to prevent empty or duplicate entries\n- Provide a reset option to restore the original list\n- Show clear feedback when items are added successfully\n", + "component": "", + "filePath": "docs/src/content/examples/dynamically-add-an-item-to-a-dropdown-list/index.mdx", + "urlPath": "examples/dynamically-add-an-item-to-a-dropdown-list", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "dynamically-add-an-item-to-a-dropdown-list", + "status": "published", + "categories": [] + }, + { + "id": "example-display-user-information", + "title": "Display user information", + "description": "Display user contact information and related data using containers with clear visual hierarchy. ", + "content": "Display user contact information and related data using containers with clear visual hierarchy.\n\n## When to use\n\nUse this pattern when:\n- Showing user profile or contact information\n- Displaying assigned advisor or representative details\n- Presenting upcoming dates or deadlines in a structured format\n- Creating summary views of user-related data\n\n## Considerations\n\n- Use containers to group related information\n- Apply consistent typography for labels and values\n- Use the `accent=\"thick\"` variant for important information sections\n- Include actions (like \"Add to calendar\") when relevant\n- Use tables with striped rows for date lists to improve scanability\n", + "component": "", + "filePath": "docs/src/content/examples/display-user-information/index.mdx", + "urlPath": "examples/display-user-information", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "display-user-information", + "status": "published", + "categories": [] + }, + { + "id": "example-display-numbers-in-a-table-so-they-can-be-scanned-easily", + "title": "Display numbers in a table so they can be scanned easily", + "description": "Right-align numeric columns in tables to make them easier to scan and compare. ", + "content": "Right-align numeric columns in tables to make them easier to scan and compare.\n\n## When to use\n\nUse this pattern when:\n- Displaying numeric data in table columns (IDs, amounts, counts)\n- Users need to quickly scan and compare values\n- The table contains a mix of text and numeric data\n\n## Considerations\n\n- Use the `goa-table-number-header` class on `` elements for numeric column headers\n- Use the `goa-table-number-column` class on `` elements for numeric data cells\n- Right-alignment helps users visually compare magnitudes of numbers\n- Consider consistent decimal formatting for financial data\n", + "component": "", + "filePath": "docs/src/content/examples/display-numbers-in-a-table-so-they-can-be-scanned-easily/index.mdx", + "urlPath": "examples/display-numbers-in-a-table-so-they-can-be-scanned-easily", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "display-numbers-in-a-table-so-they-can-be-scanned-easily", + "status": "published", + "categories": [] + }, + { + "id": "example-disabled-button-with-a-required-field", + "title": "Disabled button with a required field", + "description": "Disable a submit button until required form fields are completed. ", + "content": "Disable a submit button until required form fields are completed.\n\n## When to use\n\nUse this pattern when:\n- A form has required fields that must be filled before submission\n- You want to provide visual feedback that the form is incomplete\n- Preventing invalid form submissions is important\n\n## Considerations\n\n- Ensure the disabled state is visually distinct and accessible\n- Consider showing validation messages when users try to interact with disabled buttons\n- Use the `requirement=\"required\"` prop on form items to indicate mandatory fields\n- Enable the button as soon as all required fields have valid values\n", + "component": "", + "filePath": "docs/src/content/examples/disabled-button-with-a-required-field/index.mdx", + "urlPath": "examples/disabled-button-with-a-required-field", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "disabled-button-with-a-required-field", + "status": "published", + "categories": [] + }, + { + "id": "example-copy-to-clipboard", + "title": "Copy to clipboard", + "description": "Allow users to quickly copy text or data to their clipboard with a single click. ", + "content": "Allow users to quickly copy text or data to their clipboard with a single click.\n\n## When to use\n\nUse this pattern when:\n- Users need to copy values like tokens, codes, or IDs\n- Quick access to copy functionality improves workflow\n- The copied value is clearly visible alongside the copy action\n- Users benefit from instant feedback when copying\n\n## Considerations\n\n- Show visual feedback (\"Copied\") when the copy action succeeds\n- Use a tooltip to indicate the copy action before and after clicking\n- Position the copy button near the content being copied\n- Reset the \"Copied\" state after a short delay\n", + "component": "", + "filePath": "docs/src/content/examples/copy-to-clipboard/index.mdx", + "urlPath": "examples/copy-to-clipboard", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "copy-to-clipboard", + "status": "published", + "categories": [] + }, + { + "id": "example-confirm-that-an-application-was-submitted", + "title": "Confirm that an application was submitted", + "description": "Display a confirmation screen to indicate successful application submission. ", + "content": "Display a confirmation screen to indicate successful application submission.\n\n## When to use\n\nUse this pattern when:\n- A user has successfully completed an application or form\n- You need to confirm the submission was received\n- Users need a confirmation number for their records\n- You want to provide next steps after submission\n\n## Considerations\n\n- Use a success callout to clearly indicate success\n- Include a confirmation number users can reference later\n- Mention where a confirmation email will be sent\n- Provide clear next steps and navigation options\n- Include contact information for questions\n", + "component": "", + "filePath": "docs/src/content/examples/confirm-that-an-application-was-submitted/index.mdx", + "urlPath": "examples/confirm-that-an-application-was-submitted", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "confirm-that-an-application-was-submitted", + "status": "published", + "categories": [] + }, + { + "id": "example-confirm-before-navigating-away", + "title": "Confirm before navigating away", + "description": "Prompt the user in a modal before navigating to a new route to preserve context. ", + "content": "Prompt the user in a modal before navigating to a new route to preserve context.\n\n## When to use\n\nUse this pattern when:\n- The user has unsaved changes that would be lost\n- Navigation would interrupt an important workflow\n- You need to confirm the user's intent to leave the page\n- Context or data would be lost on navigation\n\n## Considerations\n\n- Allow users to cancel and stay on the current page\n- Use setTimeout for route changes after modal closes for smooth transitions\n- The secondary button should cancel the navigation\n- The primary button confirms the route change\n", + "component": "", + "filePath": "docs/src/content/examples/confirm-before-navigating-away/index.mdx", + "urlPath": "examples/confirm-before-navigating-away", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "confirm-before-navigating-away", + "status": "published", + "categories": [] + }, + { + "id": "example-confirm-a-destructive-action", + "title": "Confirm a destructive action", + "description": "Confirm a destructive action like deletion to prevent accidental data loss. ", + "content": "Confirm a destructive action like deletion to prevent accidental data loss.\n\n## When to use\n\nUse this pattern when:\n- A user is about to delete data permanently\n- The action cannot be undone\n- You need to prevent accidental destructive actions\n- Data loss would have significant impact\n\n## Considerations\n\n- Use the destructive button variant to emphasize the danger\n- Clearly state that the action cannot be undone\n- Provide a cancel option that's easy to access\n- Use a tertiary button with a trash icon for the initial action\n", + "component": "", + "filePath": "docs/src/content/examples/confirm-a-destructive-action/index.mdx", + "urlPath": "examples/confirm-a-destructive-action", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "confirm-a-destructive-action", + "status": "published", + "categories": [] + }, + { + "id": "example-confirm-a-change", + "title": "Confirm a change", + "description": "Ask the user to confirm a proposed change before it is applied. ", + "content": "Ask the user to confirm a proposed change before it is applied.\n\n## When to use\n\nUse this pattern when:\n- A user has made changes that need explicit confirmation\n- You want to show a before/after comparison\n- The change includes additional options like an effective date\n- Users should have the opportunity to undo the change\n\n## Considerations\n\n- Show clear before and after states for the change\n- Provide an \"undo\" option alongside the confirm action\n- Include any relevant additional inputs (like effective date)\n- Use a secondary button for the cancel/undo action\n", + "component": "", + "filePath": "docs/src/content/examples/confirm-a-change/index.mdx", + "urlPath": "examples/confirm-a-change", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "confirm-a-change", + "status": "published", + "categories": [] + }, + { + "id": "example-communicate-a-future-service-outage", + "title": "Communicate a future service outage", + "description": "Display a clear message to inform users about an upcoming service outage, including the date, time, and expected impact on service availability. ", + "content": "Display a clear message to inform users about an upcoming service outage, including the date, time, and expected impact on service availability.\n\n## When to use\n\nUse this pattern when:\n- Scheduled maintenance will affect service availability\n- Users need advance notice about system downtime\n- You need to communicate specific dates and times for an outage\n- Users should know how to get support during the outage\n\n## Considerations\n\n- Use the \"important\" notification type to draw attention\n- Include specific dates, times, and duration of the outage\n- Provide contact information for questions or concerns\n- Place the notification prominently on affected pages\n", + "component": "", + "filePath": "docs/src/content/examples/communicate-a-future-service-outage/index.mdx", + "urlPath": "examples/communicate-a-future-service-outage", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "communicate-a-future-service-outage", + "status": "published", + "categories": [] + }, + { + "id": "example-card-view-of-case-files", + "title": "Card view of case files", + "description": "Present a visual overview of individual case files in a card format for scanning and access. ", + "content": "Present a visual overview of individual case files in a card format for scanning and access.\n\n## When to use\n\nUse this pattern when:\n- Displaying a list of case files or records that workers need to manage\n- Each record has a status that needs to be clearly visible\n- Users need quick access to view or edit individual records\n- Showing summary information with actions for each item\n\n## Considerations\n\n- Use badges to clearly indicate the status of each case\n- Provide consistent action buttons (Edit, View) based on the case status\n- Include key identifying information like dates and fiscal years\n- Consider responsive layout for smaller screens\n", + "component": "", + "filePath": "docs/src/content/examples/card-view-of-case-files/index.mdx", + "urlPath": "examples/card-view-of-case-files", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "card-view-of-case-files", + "status": "published", + "categories": [] + }, + { + "id": "example-card-grid", + "title": "Card grid", + "description": "Display multiple cards in a grid layout, each containing related content or actions. ", + "content": "Display multiple cards in a grid layout, each containing related content or actions.\n\n## When to use\n\nUse this pattern when:\n- Presenting multiple related items in a scannable format\n- Creating a dashboard or landing page with navigable sections\n- Users need to choose between several options or services\n- Content can be grouped into discrete, equally-weighted items\n\n## Considerations\n\n- Use consistent card heights where possible for visual alignment\n- Link titles should clearly describe where the user will navigate\n- Keep descriptions concise to maintain scannability\n- Use the grid's minChildWidth to ensure cards wrap appropriately on smaller screens\n", + "component": "", + "filePath": "docs/src/content/examples/card-grid/index.mdx", + "urlPath": "examples/card-grid", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "card-grid", + "status": "published", + "categories": [] + }, + { + "id": "example-button-with-icon", + "title": "Button with Icon", + "description": "Shows how to add leading or trailing icons to buttons for enhanced visual communication. ", + "content": "Shows how to add leading or trailing icons to buttons for enhanced visual communication.\n\n## Use cases\n\n- Back navigation buttons with arrow icon\n- Add buttons with plus icon\n- Download buttons with download icon\n- External link buttons with external icon\n\n## Considerations\n\n- Keep icon and text semantically aligned\n- Don't use icons just for decoration\n- Leading icons for actions that \"go back\" or \"add\"\n- Trailing icons for actions that \"go forward\" or \"external\"\n", + "component": "", + "filePath": "docs/src/content/examples/button-with-icon/index.mdx", + "urlPath": "examples/button-with-icon", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "button-with-icon", + "status": "published", + "categories": [] + }, + { + "id": "example-basic-page-layout", + "title": "Basic page layout", + "description": "A basic page template to use as a starting point. ", + "content": "A basic page template to use as a starting point.\n\n## When to use\n\nUse this pattern when:\n- Starting a new government service or application\n- You need a standard page structure with header and footer\n- Building pages that need consistent layout across your service\n\n## Considerations\n\n- Include both microsite header and app header for proper government branding\n- Use page-block to constrain content width appropriately\n- The skeleton loaders show content areas during loading states\n- Always include an app footer for consistent navigation and required links\n", + "component": "", + "filePath": "docs/src/content/examples/basic-page-layout/index.mdx", + "urlPath": "examples/basic-page-layout", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "basic-page-layout", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-one-question-at-a-time", + "title": "Ask a user one question at a time", + "description": "Ask a user one question at a time. ", + "content": "Ask a user one question at a time.\n\n## When to use\n\nUse this pattern when:\n- Building a public-facing form for citizens\n- You want to reduce cognitive load by focusing on one question\n- The question requires careful consideration from the user\n- Following the one-question-per-page pattern for government services\n\n## Considerations\n\n- Include a back link to allow users to navigate to previous questions\n- Use a large label size to make the question prominent\n- Provide help text when the question may need clarification\n- Use a clear call-to-action button to progress\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-one-question-at-a-time/index.mdx", + "urlPath": "examples/ask-a-user-one-question-at-a-time", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-one-question-at-a-time", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-for-dollar-amounts", + "title": "Ask a user for dollar amounts", + "description": "Prompt users to enter monetary values using a consistent input format that supports validation and currency symbols. ", + "content": "Prompt users to enter monetary values using a consistent input format that supports validation and currency symbols.\n\n## When to use\n\nUse this pattern when:\n- Collecting cost or expense information\n- Users need to enter multiple monetary values\n- You want consistent currency formatting\n\n## Considerations\n\n- Use the `leadingContent` prop to show the $ symbol\n- Consider if decimal places are needed\n- Group related amounts together\n- Provide clear labels for each amount field\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-for-dollar-amounts/index.mdx", + "urlPath": "examples/ask-a-user-for-dollar-amounts", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-for-dollar-amounts", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-for-direct-deposit-information", + "title": "Ask a user for direct deposit information", + "description": "Gather banking details from users to enable direct deposit, including account number and financial institution information. ", + "content": "Gather banking details from users to enable direct deposit, including account number and financial institution information.\n\n## When to use\n\nUse this pattern when:\n- Setting up direct deposit for payments or refunds\n- Collecting banking information for recurring transactions\n- Users need to provide financial institution details\n\n## Considerations\n\n- Provide clear help text about where to find each number\n- Use the details component to show visual guidance (cheque image)\n- Set appropriate field widths based on expected input length\n- Be clear about security and how the information will be used\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-for-direct-deposit-information/index.mdx", + "urlPath": "examples/ask-a-user-for-direct-deposit-information", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-for-direct-deposit-information", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-for-an-indian-registration-number", + "title": "Ask a user for an Indian registration number", + "description": "Request a user's Indian registration number with appropriate validation and context. ", + "content": "Request a user's Indian registration number with appropriate validation and context.\n\n## When to use\n\nUse this pattern when:\n- Collecting Indigenous identity information\n- The registration number is required for benefits or services\n- You need to validate the format (3-digit band, up to 5-digit family, 2-digit position)\n\n## Considerations\n\n- Use separate fields for each component of the number\n- Set appropriate field widths to hint at expected input length\n- Provide clear help text for each field\n- Be respectful of the cultural significance of this information\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-for-an-indian-registration-number/index.mdx", + "urlPath": "examples/ask-a-user-for-an-indian-registration-number", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-for-an-indian-registration-number", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-for-an-address", + "title": "Ask a user for an address", + "description": "Collect a complete mailing address from the user, including fields like street, city, and postal code. ", + "content": "Collect a complete mailing address from the user, including fields like street, city, and postal code.\n\n## When to use\n\nUse this pattern when:\n- Collecting mailing addresses for correspondence\n- Gathering location information for services\n- Users need to provide physical address details\n\n## Considerations\n\n- Pre-select the most common province/territory\n- Use appropriate field widths (postal code is always 7 characters)\n- Consider address autocomplete for improved UX\n- Group related fields (province and postal code on same row)\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-for-an-address/index.mdx", + "urlPath": "examples/ask-a-user-for-an-address", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-for-an-address", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-user-for-a-birthday", + "title": "Ask a user for a birthday", + "description": "Asks for a user's birthday using the date picker component. ", + "content": "Asks for a user's birthday using the date picker component.\n\n## When to use\n\nUse this pattern when you need to collect a date of birth for:\n- Age verification\n- Identity confirmation\n- Benefits eligibility\n\n## Considerations\n\n- Consider whether you really need exact birthday vs just year or age range\n- The date picker provides a consistent, accessible date selection experience\n- Users can type the date directly or use the calendar picker\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-user-for-a-birthday/index.mdx", + "urlPath": "examples/ask-a-user-for-a-birthday", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-user-for-a-birthday", + "status": "published", + "categories": [] + }, + { + "id": "example-ask-a-long-answer-question-with-a-maximum-word-count", + "title": "Ask a long answer question with a maximum word count", + "description": "Restrict a long answer input to a maximum number of words or characters. ", + "content": "Restrict a long answer input to a maximum number of words or characters.\n\n## When to use\n\nUse this pattern when:\n- Collecting open-ended responses\n- You need to limit response length\n- Users benefit from seeing remaining word count\n\n## Considerations\n\n- Choose between word count or character count based on the use case\n- Provide clear guidance on expected response length\n- Show remaining count to help users gauge their response\n", + "component": "", + "filePath": "docs/src/content/examples/ask-a-long-answer-question-with-a-maximum-word-count/index.mdx", + "urlPath": "examples/ask-a-long-answer-question-with-a-maximum-word-count", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "ask-a-long-answer-question-with-a-maximum-word-count", + "status": "published", + "categories": [] + }, + { + "id": "example-add-another-item-in-a-modal", + "title": "Add another item in a modal", + "description": "Add a new item within a modal window without navigating away from the current context. ", + "content": "Add a new item within a modal window without navigating away from the current context.\n\n## When to use\n\nUse this pattern when:\n- Adding items to an existing list\n- The form is short and focused\n- Users need to stay in context of the main view\n\n## Considerations\n\n- Keep modal forms focused and brief\n- Provide clear cancel and save actions\n- Validate input before allowing save\n", + "component": "", + "filePath": "docs/src/content/examples/add-another-item-in-a-modal/index.mdx", + "urlPath": "examples/add-another-item-in-a-modal", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "add-another-item-in-a-modal", + "status": "published", + "categories": [] + }, + { + "id": "example-add-and-edit-lots-of-filters", + "title": "Add and edit lots of filters", + "description": "Add and edit filters using a drawer. This pattern is useful when you have many filter options that would clutter the main interface. ", + "content": "Add and edit filters using a drawer. This pattern is useful when you have many filter options that would clutter the main interface.\n\n## When to use\n\nUse this pattern when:\n- There are many filter options to manage\n- Filters need to persist across sessions\n- Users need to see current filter state while editing\n\n## Considerations\n\n- Group related filters together\n- Provide clear apply/reset actions\n- Show active filter count on the trigger button\n", + "component": "", + "filePath": "docs/src/content/examples/add-and-edit-lots-of-filters/index.mdx", + "urlPath": "examples/add-and-edit-lots-of-filters", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "add-and-edit-lots-of-filters", + "status": "published", + "categories": [] + }, + { + "id": "example-add-a-record-using-a-drawer", + "title": "Add a record using a drawer", + "description": "Add a record using a drawer. The drawer slides in from the side to allow data entry without navigating away from the current view. ", + "content": "Add a record using a drawer. The drawer slides in from the side to allow data entry without navigating away from the current view.\n\n## When to use\n\nUse this pattern when:\n- Adding records to a list or table\n- The form is secondary to the main content\n- Users need to see the main view while entering data\n\n## Considerations\n\n- Keep the drawer width appropriate for the form content\n- Provide clear save/cancel actions\n- Consider validation before closing\n", + "component": "", + "filePath": "docs/src/content/examples/add-a-record-using-a-drawer/index.mdx", + "urlPath": "examples/add-a-record-using-a-drawer", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "add-a-record-using-a-drawer", + "status": "published", + "categories": [] + }, + { + "id": "example-add-a-filter-chip", + "title": "Add a filter chip", + "description": "Allow users to apply filters using selectable chips, which visually represent active filters and can be removed to update results dynamically. ", + "content": "Allow users to apply filters using selectable chips, which visually represent active filters and can be removed to update results dynamically.\n\n## When to use\n\nUse this pattern when:\n- Users need to apply multiple filters to a dataset\n- Filters should be visible and easily removable\n- You want to show active filter state clearly\n\n## Considerations\n\n- Each chip should clearly indicate what filter it represents\n- Provide visual feedback when adding/removing filters\n- Consider the order of chips (most recent, alphabetical, etc.)\n", + "component": "", + "filePath": "docs/src/content/examples/add-a-filter-chip/index.mdx", + "urlPath": "examples/add-a-filter-chip", + "tags": [ + "example", + "pattern" + ], + "type": "example", + "slug": "add-a-filter-chip", + "status": "published", + "categories": [] + }, + { + "id": "tokens-color", + "title": "Color Tokens", + "description": "Color design tokens for text, backgrounds, borders, interactive elements, and status indicators", + "content": "--goa-color-interactive-default --goa-color-interactive-secondary --goa-color-interactive-hover --goa-color-interactive-secondary-hover --goa-color-interactive-disabled --goa-color-interactive-error --goa-color-interactive-error-hover --goa-color-interactive-error-disabled --goa-color-interactive-focus --goa-color-interactive-focus-black --goa-color-interactive-visited --goa-color-brand-default --goa-color-brand-dark --goa-color-brand-light --goa-color-text-default --goa-color-text-secondary --goa-color-text-light --goa-color-text-disabled --goa-color-info-default --goa-color-info-light --goa-color-info-dark --goa-color-info-background --goa-color-info-border --goa-color-info-text --goa-color-info-textDark --goa-color-info-textInverse --goa-color-warning-default --goa-color-warning-light --goa-color-warning-dark --goa-color-warning-background --goa-color-warning-border --goa-color-warning-text --goa-color-warning-textDark --goa-color-important-default --goa-color-important-light --goa-color-important-dark --goa-color-important-background --goa-color-important-border --goa-color-important-text --goa-color-important-text-dark --goa-color-emergency-default --goa-color-emergency-light --goa-color-emergency-dark --goa-color-emergency-background --goa-color-emergency-border --goa-color-emergency-text --goa-color-emergency-textDark --goa-color-emergency-textInverse --goa-color-success-default --goa-color-success-light --goa-color-success-dark --goa-color-success-background --goa-color-success-border --goa-color-success-text --goa-color-success-textDark --goa-color-success-textInverse --goa-color-critical-default --goa-color-greyscale-50 --goa-color-greyscale-100 --goa-color-greyscale-150 --goa-color-greyscale-200 --goa-color-greyscale-300 --goa-color-greyscale-400 --goa-color-greyscale-500 --goa-color-greyscale-600 --goa-color-greyscale-700 --goa-color-greyscale-800 --goa-color-greyscale-black --goa-color-greyscale-white --goa-color-extended-sky-default --goa-color-extended-sky-light --goa-color-extended-sky-border --goa-color-extended-sky-text --goa-color-extended-pasture-default --goa-color-extended-pasture-light --goa-color-extended-pasture-border --goa-color-extended-pasture-text --goa-color-extended-sunset-default --goa-color-extended-sunset-light --goa-color-extended-sunset-border --goa-color-extended-sunset-text --goa-color-extended-dawn-default --goa-color-extended-dawn-light --goa-color-extended-dawn-border --goa-color-extended-dawn-text --goa-color-extended-lilac-default --goa-color-extended-lilac-light --goa-color-extended-lilac-border --goa-color-extended-lilac-text --goa-color-extended-prairie-default --goa-color-extended-prairie-light --goa-color-extended-prairie-border --goa-color-extended-prairie-text", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "color", + "design token", + "palette", + "theme" + ], + "type": "token", + "slug": "color", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-default", + "title": "--goa-color-interactive-default", + "name": "--goa-color-interactive-default", + "description": "color token: interactive default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-secondary", + "title": "--goa-color-interactive-secondary", + "name": "--goa-color-interactive-secondary", + "description": "color token: interactive secondary", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-secondary", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-hover", + "title": "--goa-color-interactive-hover", + "name": "--goa-color-interactive-hover", + "description": "color token: interactive hover", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-hover", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-secondary-hover", + "title": "--goa-color-interactive-secondary-hover", + "name": "--goa-color-interactive-secondary-hover", + "description": "color token: interactive secondary hover", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-secondary-hover", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-disabled", + "title": "--goa-color-interactive-disabled", + "name": "--goa-color-interactive-disabled", + "description": "color token: interactive disabled", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-disabled", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-error", + "title": "--goa-color-interactive-error", + "name": "--goa-color-interactive-error", + "description": "color token: interactive error", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-error", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-error-hover", + "title": "--goa-color-interactive-error-hover", + "name": "--goa-color-interactive-error-hover", + "description": "color token: interactive error hover", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-error-hover", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-error-disabled", + "title": "--goa-color-interactive-error-disabled", + "name": "--goa-color-interactive-error-disabled", + "description": "color token: interactive error disabled", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-error-disabled", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-focus", + "title": "--goa-color-interactive-focus", + "name": "--goa-color-interactive-focus", + "description": "color token: interactive focus", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-focus", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-focus-black", + "title": "--goa-color-interactive-focus-black", + "name": "--goa-color-interactive-focus-black", + "description": "color token: interactive focus black", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-focus-black", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-interactive-visited", + "title": "--goa-color-interactive-visited", + "name": "--goa-color-interactive-visited", + "description": "color token: interactive visited", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-interactive-visited", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-brand-default", + "title": "--goa-color-brand-default", + "name": "--goa-color-brand-default", + "description": "color token: brand default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-brand-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-brand-dark", + "title": "--goa-color-brand-dark", + "name": "--goa-color-brand-dark", + "description": "color token: brand dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-brand-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-brand-light", + "title": "--goa-color-brand-light", + "name": "--goa-color-brand-light", + "description": "color token: brand light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-brand-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-text-default", + "title": "--goa-color-text-default", + "name": "--goa-color-text-default", + "description": "color token: text default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-text-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-text-secondary", + "title": "--goa-color-text-secondary", + "name": "--goa-color-text-secondary", + "description": "color token: text secondary", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-text-secondary", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-text-light", + "title": "--goa-color-text-light", + "name": "--goa-color-text-light", + "description": "color token: text light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-text-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-text-disabled", + "title": "--goa-color-text-disabled", + "name": "--goa-color-text-disabled", + "description": "color token: text disabled", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-text-disabled", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-default", + "title": "--goa-color-info-default", + "name": "--goa-color-info-default", + "description": "color token: info default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-light", + "title": "--goa-color-info-light", + "name": "--goa-color-info-light", + "description": "color token: info light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-dark", + "title": "--goa-color-info-dark", + "name": "--goa-color-info-dark", + "description": "color token: info dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-background", + "title": "--goa-color-info-background", + "name": "--goa-color-info-background", + "description": "color token: info background", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-background", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-border", + "title": "--goa-color-info-border", + "name": "--goa-color-info-border", + "description": "color token: info border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-text", + "title": "--goa-color-info-text", + "name": "--goa-color-info-text", + "description": "color token: info text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-textDark", + "title": "--goa-color-info-textDark", + "name": "--goa-color-info-textDark", + "description": "color token: info textDark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-textDark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-info-textInverse", + "title": "--goa-color-info-textInverse", + "name": "--goa-color-info-textInverse", + "description": "color token: info textInverse", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-info-textInverse", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-default", + "title": "--goa-color-warning-default", + "name": "--goa-color-warning-default", + "description": "color token: warning default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-light", + "title": "--goa-color-warning-light", + "name": "--goa-color-warning-light", + "description": "color token: warning light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-dark", + "title": "--goa-color-warning-dark", + "name": "--goa-color-warning-dark", + "description": "color token: warning dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-background", + "title": "--goa-color-warning-background", + "name": "--goa-color-warning-background", + "description": "color token: warning background", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-background", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-border", + "title": "--goa-color-warning-border", + "name": "--goa-color-warning-border", + "description": "color token: warning border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-text", + "title": "--goa-color-warning-text", + "name": "--goa-color-warning-text", + "description": "color token: warning text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-warning-textDark", + "title": "--goa-color-warning-textDark", + "name": "--goa-color-warning-textDark", + "description": "color token: warning textDark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-warning-textDark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-default", + "title": "--goa-color-important-default", + "name": "--goa-color-important-default", + "description": "color token: important default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-light", + "title": "--goa-color-important-light", + "name": "--goa-color-important-light", + "description": "color token: important light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-dark", + "title": "--goa-color-important-dark", + "name": "--goa-color-important-dark", + "description": "color token: important dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-background", + "title": "--goa-color-important-background", + "name": "--goa-color-important-background", + "description": "color token: important background", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-background", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-border", + "title": "--goa-color-important-border", + "name": "--goa-color-important-border", + "description": "color token: important border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-text", + "title": "--goa-color-important-text", + "name": "--goa-color-important-text", + "description": "color token: important text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-important-text-dark", + "title": "--goa-color-important-text-dark", + "name": "--goa-color-important-text-dark", + "description": "color token: important text dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-important-text-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-default", + "title": "--goa-color-emergency-default", + "name": "--goa-color-emergency-default", + "description": "color token: emergency default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-light", + "title": "--goa-color-emergency-light", + "name": "--goa-color-emergency-light", + "description": "color token: emergency light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-dark", + "title": "--goa-color-emergency-dark", + "name": "--goa-color-emergency-dark", + "description": "color token: emergency dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-background", + "title": "--goa-color-emergency-background", + "name": "--goa-color-emergency-background", + "description": "color token: emergency background", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-background", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-border", + "title": "--goa-color-emergency-border", + "name": "--goa-color-emergency-border", + "description": "color token: emergency border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-text", + "title": "--goa-color-emergency-text", + "name": "--goa-color-emergency-text", + "description": "color token: emergency text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-textDark", + "title": "--goa-color-emergency-textDark", + "name": "--goa-color-emergency-textDark", + "description": "color token: emergency textDark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-textDark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-emergency-textInverse", + "title": "--goa-color-emergency-textInverse", + "name": "--goa-color-emergency-textInverse", + "description": "color token: emergency textInverse", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-emergency-textInverse", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-default", + "title": "--goa-color-success-default", + "name": "--goa-color-success-default", + "description": "color token: success default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-light", + "title": "--goa-color-success-light", + "name": "--goa-color-success-light", + "description": "color token: success light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-dark", + "title": "--goa-color-success-dark", + "name": "--goa-color-success-dark", + "description": "color token: success dark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-dark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-background", + "title": "--goa-color-success-background", + "name": "--goa-color-success-background", + "description": "color token: success background", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-background", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-border", + "title": "--goa-color-success-border", + "name": "--goa-color-success-border", + "description": "color token: success border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-text", + "title": "--goa-color-success-text", + "name": "--goa-color-success-text", + "description": "color token: success text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-textDark", + "title": "--goa-color-success-textDark", + "name": "--goa-color-success-textDark", + "description": "color token: success textDark", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-textDark", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-success-textInverse", + "title": "--goa-color-success-textInverse", + "name": "--goa-color-success-textInverse", + "description": "color token: success textInverse", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-success-textInverse", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-critical-default", + "title": "--goa-color-critical-default", + "name": "--goa-color-critical-default", + "description": "color token: critical default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-critical-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-50", + "title": "--goa-color-greyscale-50", + "name": "--goa-color-greyscale-50", + "description": "color token: greyscale 50", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-50", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-100", + "title": "--goa-color-greyscale-100", + "name": "--goa-color-greyscale-100", + "description": "color token: greyscale 100", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-100", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-150", + "title": "--goa-color-greyscale-150", + "name": "--goa-color-greyscale-150", + "description": "color token: greyscale 150", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-150", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-200", + "title": "--goa-color-greyscale-200", + "name": "--goa-color-greyscale-200", + "description": "color token: greyscale 200", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-200", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-300", + "title": "--goa-color-greyscale-300", + "name": "--goa-color-greyscale-300", + "description": "color token: greyscale 300", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-300", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-400", + "title": "--goa-color-greyscale-400", + "name": "--goa-color-greyscale-400", + "description": "color token: greyscale 400", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-400", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-500", + "title": "--goa-color-greyscale-500", + "name": "--goa-color-greyscale-500", + "description": "color token: greyscale 500", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-500", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-600", + "title": "--goa-color-greyscale-600", + "name": "--goa-color-greyscale-600", + "description": "color token: greyscale 600", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-600", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-700", + "title": "--goa-color-greyscale-700", + "name": "--goa-color-greyscale-700", + "description": "color token: greyscale 700", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-700", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-800", + "title": "--goa-color-greyscale-800", + "name": "--goa-color-greyscale-800", + "description": "color token: greyscale 800", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-800", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-black", + "title": "--goa-color-greyscale-black", + "name": "--goa-color-greyscale-black", + "description": "color token: greyscale black", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-black", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-greyscale-white", + "title": "--goa-color-greyscale-white", + "name": "--goa-color-greyscale-white", + "description": "color token: greyscale white", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-greyscale-white", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sky-default", + "title": "--goa-color-extended-sky-default", + "name": "--goa-color-extended-sky-default", + "description": "color token: extended sky default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sky-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sky-light", + "title": "--goa-color-extended-sky-light", + "name": "--goa-color-extended-sky-light", + "description": "color token: extended sky light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sky-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sky-border", + "title": "--goa-color-extended-sky-border", + "name": "--goa-color-extended-sky-border", + "description": "color token: extended sky border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sky-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sky-text", + "title": "--goa-color-extended-sky-text", + "name": "--goa-color-extended-sky-text", + "description": "color token: extended sky text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sky-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-pasture-default", + "title": "--goa-color-extended-pasture-default", + "name": "--goa-color-extended-pasture-default", + "description": "color token: extended pasture default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-pasture-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-pasture-light", + "title": "--goa-color-extended-pasture-light", + "name": "--goa-color-extended-pasture-light", + "description": "color token: extended pasture light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-pasture-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-pasture-border", + "title": "--goa-color-extended-pasture-border", + "name": "--goa-color-extended-pasture-border", + "description": "color token: extended pasture border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-pasture-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-pasture-text", + "title": "--goa-color-extended-pasture-text", + "name": "--goa-color-extended-pasture-text", + "description": "color token: extended pasture text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-pasture-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sunset-default", + "title": "--goa-color-extended-sunset-default", + "name": "--goa-color-extended-sunset-default", + "description": "color token: extended sunset default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sunset-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sunset-light", + "title": "--goa-color-extended-sunset-light", + "name": "--goa-color-extended-sunset-light", + "description": "color token: extended sunset light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sunset-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sunset-border", + "title": "--goa-color-extended-sunset-border", + "name": "--goa-color-extended-sunset-border", + "description": "color token: extended sunset border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sunset-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-sunset-text", + "title": "--goa-color-extended-sunset-text", + "name": "--goa-color-extended-sunset-text", + "description": "color token: extended sunset text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-sunset-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-dawn-default", + "title": "--goa-color-extended-dawn-default", + "name": "--goa-color-extended-dawn-default", + "description": "color token: extended dawn default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-dawn-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-dawn-light", + "title": "--goa-color-extended-dawn-light", + "name": "--goa-color-extended-dawn-light", + "description": "color token: extended dawn light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-dawn-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-dawn-border", + "title": "--goa-color-extended-dawn-border", + "name": "--goa-color-extended-dawn-border", + "description": "color token: extended dawn border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-dawn-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-dawn-text", + "title": "--goa-color-extended-dawn-text", + "name": "--goa-color-extended-dawn-text", + "description": "color token: extended dawn text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-dawn-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-lilac-default", + "title": "--goa-color-extended-lilac-default", + "name": "--goa-color-extended-lilac-default", + "description": "color token: extended lilac default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-lilac-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-lilac-light", + "title": "--goa-color-extended-lilac-light", + "name": "--goa-color-extended-lilac-light", + "description": "color token: extended lilac light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-lilac-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-lilac-border", + "title": "--goa-color-extended-lilac-border", + "name": "--goa-color-extended-lilac-border", + "description": "color token: extended lilac border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-lilac-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-lilac-text", + "title": "--goa-color-extended-lilac-text", + "name": "--goa-color-extended-lilac-text", + "description": "color token: extended lilac text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-lilac-text", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-prairie-default", + "title": "--goa-color-extended-prairie-default", + "name": "--goa-color-extended-prairie-default", + "description": "color token: extended prairie default", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-prairie-default", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-prairie-light", + "title": "--goa-color-extended-prairie-light", + "name": "--goa-color-extended-prairie-light", + "description": "color token: extended prairie light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-prairie-light", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-prairie-border", + "title": "--goa-color-extended-prairie-border", + "name": "--goa-color-extended-prairie-border", + "description": "color token: extended prairie border", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-prairie-border", + "status": "stable", + "category": "color" + }, + { + "id": "token-color-extended-prairie-text", + "title": "--goa-color-extended-prairie-text", + "name": "--goa-color-extended-prairie-text", + "description": "color token: extended prairie text", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "color" + ], + "type": "token", + "slug": "color-extended-prairie-text", + "status": "stable", + "category": "color" + }, + { + "id": "tokens-opacity", + "title": "Opacity Tokens", + "description": "Opacity values for overlays, disabled states, and transparency effects", + "content": "--goa-opacity-page-transparent --goa-opacity-page-full --goa-opacity-background-modal --goa-opacity-background-loading", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "opacity", + "transparency", + "design token" + ], + "type": "token", + "slug": "opacity", + "status": "stable", + "category": "opacity" + }, + { + "id": "token-opacity-page-transparent", + "title": "--goa-opacity-page-transparent", + "name": "--goa-opacity-page-transparent", + "description": "opacity token: page transparent", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "opacity" + ], + "type": "token", + "slug": "opacity-page-transparent", + "status": "stable", + "category": "opacity" + }, + { + "id": "token-opacity-page-full", + "title": "--goa-opacity-page-full", + "name": "--goa-opacity-page-full", + "description": "opacity token: page full", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "opacity" + ], + "type": "token", + "slug": "opacity-page-full", + "status": "stable", + "category": "opacity" + }, + { + "id": "token-opacity-background-modal", + "title": "--goa-opacity-background-modal", + "name": "--goa-opacity-background-modal", + "description": "opacity token: background modal", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "opacity" + ], + "type": "token", + "slug": "opacity-background-modal", + "status": "stable", + "category": "opacity" + }, + { + "id": "token-opacity-background-loading", + "title": "--goa-opacity-background-loading", + "name": "--goa-opacity-background-loading", + "description": "opacity token: background loading", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "opacity" + ], + "type": "token", + "slug": "opacity-background-loading", + "status": "stable", + "category": "opacity" + }, + { + "id": "tokens-borderRadius", + "title": "Border Radius Tokens", + "description": "Border radius values for rounded corners on cards, buttons, and containers", + "content": "--goa-borderRadius-none --goa-borderRadius-xs --goa-borderRadius-s --goa-borderRadius-m --goa-borderRadius-l --goa-borderRadius-xl --goa-borderRadius-2xl --goa-borderRadius-3xl --goa-borderRadius-round", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "border", + "radius", + "corners", + "design token" + ], + "type": "token", + "slug": "borderRadius", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-none", + "title": "--goa-borderRadius-none", + "name": "--goa-borderRadius-none", + "description": "border radius token: none", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-none", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-xs", + "title": "--goa-borderRadius-xs", + "name": "--goa-borderRadius-xs", + "description": "border radius token: xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-xs", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-s", + "title": "--goa-borderRadius-s", + "name": "--goa-borderRadius-s", + "description": "border radius token: s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-s", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-m", + "title": "--goa-borderRadius-m", + "name": "--goa-borderRadius-m", + "description": "border radius token: m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-m", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-l", + "title": "--goa-borderRadius-l", + "name": "--goa-borderRadius-l", + "description": "border radius token: l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-l", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-xl", + "title": "--goa-borderRadius-xl", + "name": "--goa-borderRadius-xl", + "description": "border radius token: xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-xl", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-2xl", + "title": "--goa-borderRadius-2xl", + "name": "--goa-borderRadius-2xl", + "description": "border radius token: 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-2xl", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-3xl", + "title": "--goa-borderRadius-3xl", + "name": "--goa-borderRadius-3xl", + "description": "border radius token: 3xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-3xl", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "token-borderRadius-round", + "title": "--goa-borderRadius-round", + "name": "--goa-borderRadius-round", + "description": "border radius token: round", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderRadius" + ], + "type": "token", + "slug": "borderRadius-round", + "status": "stable", + "category": "borderRadius" + }, + { + "id": "tokens-borderWidth", + "title": "Border Width Tokens", + "description": "Border width values for outlines, dividers, and component borders", + "content": "--goa-borderWidth-none --goa-borderWidth-2xs --goa-borderWidth-xs --goa-borderWidth-s --goa-borderWidth-m --goa-borderWidth-l --goa-borderWidth-xl", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "border", + "width", + "stroke", + "design token" + ], + "type": "token", + "slug": "borderWidth", + "status": "stable", + "category": "borderWidth" + }, + { + "id": "token-borderWidth-none", + "title": "--goa-borderWidth-none", + "name": "--goa-borderWidth-none", + "description": "border width token: none", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderWidth" + ], + "type": "token", + "slug": "borderWidth-none", + "status": "stable", + "category": "borderWidth" + }, + { + "id": "token-borderWidth-2xs", + "title": "--goa-borderWidth-2xs", + "name": "--goa-borderWidth-2xs", + "description": "border width token: 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderWidth" + ], + "type": "token", + "slug": "borderWidth-2xs", + "status": "stable", + "category": "borderWidth" + }, + { + "id": "token-borderWidth-xs", + "title": "--goa-borderWidth-xs", + "name": "--goa-borderWidth-xs", + "description": "border width token: xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderWidth" + ], + "type": "token", + "slug": "borderWidth-xs", + "status": "stable", + "category": "borderWidth" + }, + { + "id": "token-borderWidth-s", + "title": "--goa-borderWidth-s", + "name": "--goa-borderWidth-s", + "description": "border width token: s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderWidth" + ], + "type": "token", + "slug": "borderWidth-s", + "status": "stable", + "category": "borderWidth" + }, + { + "id": "token-borderWidth-m", + "title": "--goa-borderWidth-m", + "name": "--goa-borderWidth-m", + "description": "border width token: m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderWidth" + ], + "type": "token", + "slug": "borderWidth-m", + "status": "stable", + "category": "borderWidth" + }, + { + "id": "token-borderWidth-l", + "title": "--goa-borderWidth-l", + "name": "--goa-borderWidth-l", + "description": "border width token: l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderWidth" + ], + "type": "token", + "slug": "borderWidth-l", + "status": "stable", + "category": "borderWidth" + }, + { + "id": "token-borderWidth-xl", + "title": "--goa-borderWidth-xl", + "name": "--goa-borderWidth-xl", + "description": "border width token: xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "borderWidth" + ], + "type": "token", + "slug": "borderWidth-xl", + "status": "stable", + "category": "borderWidth" + }, + { + "id": "tokens-space", + "title": "Spacing Tokens", + "description": "Spacing values for margins, padding, and gaps between elements", + "content": "--goa-space-none --goa-space-3xs --goa-space-2xs --goa-space-xs --goa-space-s --goa-space-m --goa-space-l --goa-space-xl --goa-space-2xl --goa-space-3xl --goa-space-4xl --goa-space-fill", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "space", + "spacing", + "margin", + "padding", + "gap", + "design token" + ], + "type": "token", + "slug": "space", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-none", + "title": "--goa-space-none", + "name": "--goa-space-none", + "description": "spacing token: none", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-none", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-3xs", + "title": "--goa-space-3xs", + "name": "--goa-space-3xs", + "description": "spacing token: 3xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-3xs", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-2xs", + "title": "--goa-space-2xs", + "name": "--goa-space-2xs", + "description": "spacing token: 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-2xs", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-xs", + "title": "--goa-space-xs", + "name": "--goa-space-xs", + "description": "spacing token: xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-xs", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-s", + "title": "--goa-space-s", + "name": "--goa-space-s", + "description": "spacing token: s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-s", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-m", + "title": "--goa-space-m", + "name": "--goa-space-m", + "description": "spacing token: m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-m", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-l", + "title": "--goa-space-l", + "name": "--goa-space-l", + "description": "spacing token: l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-l", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-xl", + "title": "--goa-space-xl", + "name": "--goa-space-xl", + "description": "spacing token: xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-xl", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-2xl", + "title": "--goa-space-2xl", + "name": "--goa-space-2xl", + "description": "spacing token: 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-2xl", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-3xl", + "title": "--goa-space-3xl", + "name": "--goa-space-3xl", + "description": "spacing token: 3xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-3xl", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-4xl", + "title": "--goa-space-4xl", + "name": "--goa-space-4xl", + "description": "spacing token: 4xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-4xl", + "status": "stable", + "category": "space" + }, + { + "id": "token-space-fill", + "title": "--goa-space-fill", + "name": "--goa-space-fill", + "description": "spacing token: fill", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "space" + ], + "type": "token", + "slug": "space-fill", + "status": "stable", + "category": "space" + }, + { + "id": "tokens-iconSize", + "title": "Icon Size Tokens", + "description": "Standard icon sizes for consistent iconography across the design system", + "content": "--goa-iconSize-1 --goa-iconSize-2 --goa-iconSize-3 --goa-iconSize-4 --goa-iconSize-5 --goa-iconSize-6 --goa-iconSize-xs --goa-iconSize-s --goa-iconSize-m --goa-iconSize-l --goa-iconSize-xl", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "icon", + "size", + "design token" + ], + "type": "token", + "slug": "iconSize", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-1", + "title": "--goa-iconSize-1", + "name": "--goa-iconSize-1", + "description": "icon size token: 1", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-1", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-2", + "title": "--goa-iconSize-2", + "name": "--goa-iconSize-2", + "description": "icon size token: 2", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-2", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-3", + "title": "--goa-iconSize-3", + "name": "--goa-iconSize-3", + "description": "icon size token: 3", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-3", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-4", + "title": "--goa-iconSize-4", + "name": "--goa-iconSize-4", + "description": "icon size token: 4", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-4", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-5", + "title": "--goa-iconSize-5", + "name": "--goa-iconSize-5", + "description": "icon size token: 5", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-5", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-6", + "title": "--goa-iconSize-6", + "name": "--goa-iconSize-6", + "description": "icon size token: 6", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-6", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-xs", + "title": "--goa-iconSize-xs", + "name": "--goa-iconSize-xs", + "description": "icon size token: xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-xs", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-s", + "title": "--goa-iconSize-s", + "name": "--goa-iconSize-s", + "description": "icon size token: s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-s", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-m", + "title": "--goa-iconSize-m", + "name": "--goa-iconSize-m", + "description": "icon size token: m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-m", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-l", + "title": "--goa-iconSize-l", + "name": "--goa-iconSize-l", + "description": "icon size token: l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-l", + "status": "stable", + "category": "iconSize" + }, + { + "id": "token-iconSize-xl", + "title": "--goa-iconSize-xl", + "name": "--goa-iconSize-xl", + "description": "icon size token: xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "iconSize" + ], + "type": "token", + "slug": "iconSize-xl", + "status": "stable", + "category": "iconSize" + }, + { + "id": "tokens-shadow", + "title": "Shadow Tokens", + "description": "Box shadow values for elevation and depth effects on cards and modals", + "content": "--goa-shadow-100 --goa-shadow-150 --goa-shadow-200 --goa-shadow-300 --goa-shadow-400 --goa-shadow-500 --goa-shadow-600 --goa-shadow-modal --goa-shadow-raised-light --goa-shadow-raised-heavy --goa-shadow-shallow-above --goa-shadow-shallow-below", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "shadow", + "elevation", + "depth", + "design token" + ], + "type": "token", + "slug": "shadow", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-100", + "title": "--goa-shadow-100", + "name": "--goa-shadow-100", + "description": "shadow token: 100", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-100", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-150", + "title": "--goa-shadow-150", + "name": "--goa-shadow-150", + "description": "shadow token: 150", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-150", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-200", + "title": "--goa-shadow-200", + "name": "--goa-shadow-200", + "description": "shadow token: 200", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-200", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-300", + "title": "--goa-shadow-300", + "name": "--goa-shadow-300", + "description": "shadow token: 300", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-300", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-400", + "title": "--goa-shadow-400", + "name": "--goa-shadow-400", + "description": "shadow token: 400", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-400", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-500", + "title": "--goa-shadow-500", + "name": "--goa-shadow-500", + "description": "shadow token: 500", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-500", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-600", + "title": "--goa-shadow-600", + "name": "--goa-shadow-600", + "description": "shadow token: 600", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-600", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-modal", + "title": "--goa-shadow-modal", + "name": "--goa-shadow-modal", + "description": "shadow token: modal", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-modal", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-raised-light", + "title": "--goa-shadow-raised-light", + "name": "--goa-shadow-raised-light", + "description": "shadow token: raised light", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-raised-light", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-raised-heavy", + "title": "--goa-shadow-raised-heavy", + "name": "--goa-shadow-raised-heavy", + "description": "shadow token: raised heavy", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-raised-heavy", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-shallow-above", + "title": "--goa-shadow-shallow-above", + "name": "--goa-shadow-shallow-above", + "description": "shadow token: shallow above", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-shallow-above", + "status": "stable", + "category": "shadow" + }, + { + "id": "token-shadow-shallow-below", + "title": "--goa-shadow-shallow-below", + "name": "--goa-shadow-shallow-below", + "description": "shadow token: shallow below", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "shadow" + ], + "type": "token", + "slug": "shadow-shallow-below", + "status": "stable", + "category": "shadow" + }, + { + "id": "tokens-lineHeight", + "title": "Line Height Tokens", + "description": "Line height values for readable text and proper vertical rhythm", + "content": "--goa-lineHeight-1 --goa-lineHeight-2 --goa-lineHeight-3 --goa-lineHeight-4 --goa-lineHeight-5 --goa-lineHeight-6 --goa-lineHeight-7 --goa-lineHeight-8 --goa-lineHeight-05", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "line", + "height", + "leading", + "typography", + "design token" + ], + "type": "token", + "slug": "lineHeight", + "status": "stable", + "category": "lineHeight" + }, + { + "id": "token-lineHeight-1", + "title": "--goa-lineHeight-1", + "name": "--goa-lineHeight-1", + "description": "line height token: 1", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "lineHeight" + ], + "type": "token", + "slug": "lineHeight-1", + "status": "stable", + "category": "lineHeight" + }, + { + "id": "token-lineHeight-2", + "title": "--goa-lineHeight-2", + "name": "--goa-lineHeight-2", + "description": "line height token: 2", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "lineHeight" + ], + "type": "token", + "slug": "lineHeight-2", + "status": "stable", + "category": "lineHeight" + }, + { + "id": "token-lineHeight-3", + "title": "--goa-lineHeight-3", + "name": "--goa-lineHeight-3", + "description": "line height token: 3", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "lineHeight" + ], + "type": "token", + "slug": "lineHeight-3", + "status": "stable", + "category": "lineHeight" + }, + { + "id": "token-lineHeight-4", + "title": "--goa-lineHeight-4", + "name": "--goa-lineHeight-4", + "description": "line height token: 4", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "lineHeight" + ], + "type": "token", + "slug": "lineHeight-4", + "status": "stable", + "category": "lineHeight" + }, + { + "id": "token-lineHeight-5", + "title": "--goa-lineHeight-5", + "name": "--goa-lineHeight-5", + "description": "line height token: 5", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "lineHeight" + ], + "type": "token", + "slug": "lineHeight-5", + "status": "stable", + "category": "lineHeight" + }, + { + "id": "token-lineHeight-6", + "title": "--goa-lineHeight-6", + "name": "--goa-lineHeight-6", + "description": "line height token: 6", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "lineHeight" + ], + "type": "token", + "slug": "lineHeight-6", + "status": "stable", + "category": "lineHeight" + }, + { + "id": "token-lineHeight-7", + "title": "--goa-lineHeight-7", + "name": "--goa-lineHeight-7", + "description": "line height token: 7", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "lineHeight" + ], + "type": "token", + "slug": "lineHeight-7", + "status": "stable", + "category": "lineHeight" + }, + { + "id": "token-lineHeight-8", + "title": "--goa-lineHeight-8", + "name": "--goa-lineHeight-8", + "description": "line height token: 8", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "lineHeight" + ], + "type": "token", + "slug": "lineHeight-8", + "status": "stable", + "category": "lineHeight" + }, + { + "id": "token-lineHeight-05", + "title": "--goa-lineHeight-05", + "name": "--goa-lineHeight-05", + "description": "line height token: 05", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "lineHeight" + ], + "type": "token", + "slug": "lineHeight-05", + "status": "stable", + "category": "lineHeight" + }, + { + "id": "tokens-fontFamily", + "title": "Font Family Tokens", + "description": "Font family values for the design system typefaces", + "content": "--goa-fontFamily-sans --goa-fontFamily-number", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "font", + "family", + "typeface", + "design token" + ], + "type": "token", + "slug": "fontFamily", + "status": "stable", + "category": "fontFamily" + }, + { + "id": "token-fontFamily-sans", + "title": "--goa-fontFamily-sans", + "name": "--goa-fontFamily-sans", + "description": "font family token: sans", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontFamily" + ], + "type": "token", + "slug": "fontFamily-sans", + "status": "stable", + "category": "fontFamily" + }, + { + "id": "token-fontFamily-number", + "title": "--goa-fontFamily-number", + "name": "--goa-fontFamily-number", + "description": "font family token: number", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontFamily" + ], + "type": "token", + "slug": "fontFamily-number", + "status": "stable", + "category": "fontFamily" + }, + { + "id": "tokens-fontSize", + "title": "Font Size Tokens", + "description": "Font size values for text hierarchy and responsive typography", + "content": "--goa-fontSize-1 --goa-fontSize-2 --goa-fontSize-3 --goa-fontSize-4 --goa-fontSize-5 --goa-fontSize-6 --goa-fontSize-7 --goa-fontSize-8 --goa-fontSize-9 --goa-fontSize-10 --goa-fontSize-05", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "font", + "size", + "typography", + "design token" + ], + "type": "token", + "slug": "fontSize", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-1", + "title": "--goa-fontSize-1", + "name": "--goa-fontSize-1", + "description": "font size token: 1", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-1", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-2", + "title": "--goa-fontSize-2", + "name": "--goa-fontSize-2", + "description": "font size token: 2", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-2", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-3", + "title": "--goa-fontSize-3", + "name": "--goa-fontSize-3", + "description": "font size token: 3", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-3", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-4", + "title": "--goa-fontSize-4", + "name": "--goa-fontSize-4", + "description": "font size token: 4", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-4", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-5", + "title": "--goa-fontSize-5", + "name": "--goa-fontSize-5", + "description": "font size token: 5", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-5", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-6", + "title": "--goa-fontSize-6", + "name": "--goa-fontSize-6", + "description": "font size token: 6", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-6", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-7", + "title": "--goa-fontSize-7", + "name": "--goa-fontSize-7", + "description": "font size token: 7", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-7", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-8", + "title": "--goa-fontSize-8", + "name": "--goa-fontSize-8", + "description": "font size token: 8", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-8", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-9", + "title": "--goa-fontSize-9", + "name": "--goa-fontSize-9", + "description": "font size token: 9", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-9", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-10", + "title": "--goa-fontSize-10", + "name": "--goa-fontSize-10", + "description": "font size token: 10", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-10", + "status": "stable", + "category": "fontSize" + }, + { + "id": "token-fontSize-05", + "title": "--goa-fontSize-05", + "name": "--goa-fontSize-05", + "description": "font size token: 05", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontSize" + ], + "type": "token", + "slug": "fontSize-05", + "status": "stable", + "category": "fontSize" + }, + { + "id": "tokens-fontWeight", + "title": "Font Weight Tokens", + "description": "Font weight values for text emphasis and hierarchy", + "content": "--goa-fontWeight-regular --goa-fontWeight-medium --goa-fontWeight-semiBold --goa-fontWeight-bold", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "font", + "weight", + "bold", + "design token" + ], + "type": "token", + "slug": "fontWeight", + "status": "stable", + "category": "fontWeight" + }, + { + "id": "token-fontWeight-regular", + "title": "--goa-fontWeight-regular", + "name": "--goa-fontWeight-regular", + "description": "font weight token: regular", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontWeight" + ], + "type": "token", + "slug": "fontWeight-regular", + "status": "stable", + "category": "fontWeight" + }, + { + "id": "token-fontWeight-medium", + "title": "--goa-fontWeight-medium", + "name": "--goa-fontWeight-medium", + "description": "font weight token: medium", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontWeight" + ], + "type": "token", + "slug": "fontWeight-medium", + "status": "stable", + "category": "fontWeight" + }, + { + "id": "token-fontWeight-semiBold", + "title": "--goa-fontWeight-semiBold", + "name": "--goa-fontWeight-semiBold", + "description": "font weight token: semiBold", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontWeight" + ], + "type": "token", + "slug": "fontWeight-semiBold", + "status": "stable", + "category": "fontWeight" + }, + { + "id": "token-fontWeight-bold", + "title": "--goa-fontWeight-bold", + "name": "--goa-fontWeight-bold", + "description": "font weight token: bold", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "fontWeight" + ], + "type": "token", + "slug": "fontWeight-bold", + "status": "stable", + "category": "fontWeight" + }, + { + "id": "tokens-letterSpacing", + "title": "Letter Spacing Tokens", + "description": "Letter spacing values for text tracking adjustments", + "content": "--goa-letterSpacing-3xs --goa-letterSpacing-2xs --goa-letterSpacing-xs --goa-letterSpacing-s --goa-letterSpacing-m --goa-letterSpacing-l --goa-letterSpacing-xl --goa-letterSpacing-2xl --goa-letterSpacing-mobile-3xs --goa-letterSpacing-mobile-2xs --goa-letterSpacing-mobile-xs --goa-letterSpacing-mobile-s --goa-letterSpacing-mobile-m --goa-letterSpacing-mobile-l --goa-letterSpacing-mobile-xl --goa-letterSpacing-mobile-2xl", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "letter", + "spacing", + "tracking", + "typography", + "design token" + ], + "type": "token", + "slug": "letterSpacing", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-3xs", + "title": "--goa-letterSpacing-3xs", + "name": "--goa-letterSpacing-3xs", + "description": "letter spacing token: 3xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-3xs", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-2xs", + "title": "--goa-letterSpacing-2xs", + "name": "--goa-letterSpacing-2xs", + "description": "letter spacing token: 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-2xs", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-xs", + "title": "--goa-letterSpacing-xs", + "name": "--goa-letterSpacing-xs", + "description": "letter spacing token: xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-xs", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-s", + "title": "--goa-letterSpacing-s", + "name": "--goa-letterSpacing-s", + "description": "letter spacing token: s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-s", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-m", + "title": "--goa-letterSpacing-m", + "name": "--goa-letterSpacing-m", + "description": "letter spacing token: m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-m", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-l", + "title": "--goa-letterSpacing-l", + "name": "--goa-letterSpacing-l", + "description": "letter spacing token: l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-l", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-xl", + "title": "--goa-letterSpacing-xl", + "name": "--goa-letterSpacing-xl", + "description": "letter spacing token: xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-xl", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-2xl", + "title": "--goa-letterSpacing-2xl", + "name": "--goa-letterSpacing-2xl", + "description": "letter spacing token: 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-2xl", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-mobile-3xs", + "title": "--goa-letterSpacing-mobile-3xs", + "name": "--goa-letterSpacing-mobile-3xs", + "description": "letter spacing token: mobile 3xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-mobile-3xs", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-mobile-2xs", + "title": "--goa-letterSpacing-mobile-2xs", + "name": "--goa-letterSpacing-mobile-2xs", + "description": "letter spacing token: mobile 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-mobile-2xs", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-mobile-xs", + "title": "--goa-letterSpacing-mobile-xs", + "name": "--goa-letterSpacing-mobile-xs", + "description": "letter spacing token: mobile xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-mobile-xs", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-mobile-s", + "title": "--goa-letterSpacing-mobile-s", + "name": "--goa-letterSpacing-mobile-s", + "description": "letter spacing token: mobile s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-mobile-s", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-mobile-m", + "title": "--goa-letterSpacing-mobile-m", + "name": "--goa-letterSpacing-mobile-m", + "description": "letter spacing token: mobile m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-mobile-m", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-mobile-l", + "title": "--goa-letterSpacing-mobile-l", + "name": "--goa-letterSpacing-mobile-l", + "description": "letter spacing token: mobile l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-mobile-l", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-mobile-xl", + "title": "--goa-letterSpacing-mobile-xl", + "name": "--goa-letterSpacing-mobile-xl", + "description": "letter spacing token: mobile xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-mobile-xl", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "token-letterSpacing-mobile-2xl", + "title": "--goa-letterSpacing-mobile-2xl", + "name": "--goa-letterSpacing-mobile-2xl", + "description": "letter spacing token: mobile 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "letterSpacing" + ], + "type": "token", + "slug": "letterSpacing-mobile-2xl", + "status": "stable", + "category": "letterSpacing" + }, + { + "id": "tokens-typography", + "title": "Typography Tokens", + "description": "Typography presets combining font family, size, weight, and line height", + "content": "--goa-typography-heading-2xs --goa-typography-heading-xs --goa-typography-heading-s --goa-typography-heading-m --goa-typography-heading-l --goa-typography-heading-xl --goa-typography-heading-2xl --goa-typography-body-xs --goa-typography-body-s --goa-typography-body-m --goa-typography-body-l --goa-typography-number-s --goa-typography-number-m --goa-typography-number-l --goa-typography-mobile-heading-2xs --goa-typography-mobile-heading-xs --goa-typography-mobile-heading-s --goa-typography-mobile-heading-m --goa-typography-mobile-heading-l --goa-typography-mobile-heading-xl --goa-typography-mobile-heading-2xl --goa-typography-mobile-body-xs --goa-typography-mobile-body-s --goa-typography-mobile-body-m --goa-typography-mobile-body-l --goa-typography-mobile-number-s --goa-typography-mobile-number-m --goa-typography-mobile-number-l", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "typography", + "font", + "text", + "heading", + "body", + "design token" + ], + "type": "token", + "slug": "typography", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-heading-2xs", + "title": "--goa-typography-heading-2xs", + "name": "--goa-typography-heading-2xs", + "description": "typography token: heading 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-heading-2xs", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-heading-xs", + "title": "--goa-typography-heading-xs", + "name": "--goa-typography-heading-xs", + "description": "typography token: heading xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-heading-xs", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-heading-s", + "title": "--goa-typography-heading-s", + "name": "--goa-typography-heading-s", + "description": "typography token: heading s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-heading-s", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-heading-m", + "title": "--goa-typography-heading-m", + "name": "--goa-typography-heading-m", + "description": "typography token: heading m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-heading-m", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-heading-l", + "title": "--goa-typography-heading-l", + "name": "--goa-typography-heading-l", + "description": "typography token: heading l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-heading-l", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-heading-xl", + "title": "--goa-typography-heading-xl", + "name": "--goa-typography-heading-xl", + "description": "typography token: heading xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-heading-xl", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-heading-2xl", + "title": "--goa-typography-heading-2xl", + "name": "--goa-typography-heading-2xl", + "description": "typography token: heading 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-heading-2xl", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-body-xs", + "title": "--goa-typography-body-xs", + "name": "--goa-typography-body-xs", + "description": "typography token: body xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-body-xs", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-body-s", + "title": "--goa-typography-body-s", + "name": "--goa-typography-body-s", + "description": "typography token: body s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-body-s", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-body-m", + "title": "--goa-typography-body-m", + "name": "--goa-typography-body-m", + "description": "typography token: body m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-body-m", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-body-l", + "title": "--goa-typography-body-l", + "name": "--goa-typography-body-l", + "description": "typography token: body l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-body-l", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-number-s", + "title": "--goa-typography-number-s", + "name": "--goa-typography-number-s", + "description": "typography token: number s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-number-s", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-number-m", + "title": "--goa-typography-number-m", + "name": "--goa-typography-number-m", + "description": "typography token: number m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-number-m", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-number-l", + "title": "--goa-typography-number-l", + "name": "--goa-typography-number-l", + "description": "typography token: number l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-number-l", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-heading-2xs", + "title": "--goa-typography-mobile-heading-2xs", + "name": "--goa-typography-mobile-heading-2xs", + "description": "typography token: mobile heading 2xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-heading-2xs", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-heading-xs", + "title": "--goa-typography-mobile-heading-xs", + "name": "--goa-typography-mobile-heading-xs", + "description": "typography token: mobile heading xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-heading-xs", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-heading-s", + "title": "--goa-typography-mobile-heading-s", + "name": "--goa-typography-mobile-heading-s", + "description": "typography token: mobile heading s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-heading-s", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-heading-m", + "title": "--goa-typography-mobile-heading-m", + "name": "--goa-typography-mobile-heading-m", + "description": "typography token: mobile heading m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-heading-m", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-heading-l", + "title": "--goa-typography-mobile-heading-l", + "name": "--goa-typography-mobile-heading-l", + "description": "typography token: mobile heading l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-heading-l", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-heading-xl", + "title": "--goa-typography-mobile-heading-xl", + "name": "--goa-typography-mobile-heading-xl", + "description": "typography token: mobile heading xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-heading-xl", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-heading-2xl", + "title": "--goa-typography-mobile-heading-2xl", + "name": "--goa-typography-mobile-heading-2xl", + "description": "typography token: mobile heading 2xl", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-heading-2xl", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-body-xs", + "title": "--goa-typography-mobile-body-xs", + "name": "--goa-typography-mobile-body-xs", + "description": "typography token: mobile body xs", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-body-xs", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-body-s", + "title": "--goa-typography-mobile-body-s", + "name": "--goa-typography-mobile-body-s", + "description": "typography token: mobile body s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-body-s", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-body-m", + "title": "--goa-typography-mobile-body-m", + "name": "--goa-typography-mobile-body-m", + "description": "typography token: mobile body m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-body-m", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-body-l", + "title": "--goa-typography-mobile-body-l", + "name": "--goa-typography-mobile-body-l", + "description": "typography token: mobile body l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-body-l", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-number-s", + "title": "--goa-typography-mobile-number-s", + "name": "--goa-typography-mobile-number-s", + "description": "typography token: mobile number s", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-number-s", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-number-m", + "title": "--goa-typography-mobile-number-m", + "name": "--goa-typography-mobile-number-m", + "description": "typography token: mobile number m", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-number-m", + "status": "stable", + "category": "typography" + }, + { + "id": "token-typography-mobile-number-l", + "title": "--goa-typography-mobile-number-l", + "name": "--goa-typography-mobile-number-l", + "description": "typography token: mobile number l", + "content": "", + "component": "", + "filePath": "design-tokens", + "urlPath": "tokens", + "tags": [ + "token", + "design token", + "typography" + ], + "type": "token", + "slug": "typography-mobile-number-l", + "status": "stable", + "category": "typography" + }, + { + "id": "get-started", + "title": "Get started", + "name": "Get started", + "description": "Introduction to the GoA Design System early adopters program", + "content": "", + "component": "", + "filePath": "docs/src/pages/get-started", + "urlPath": "get-started", + "tags": [ + "get started", + "introduction", + "onboarding" + ], + "type": "page", + "slug": "get-started", + "status": "stable", + "category": "get started" + }, + { + "id": "get-started-developers", + "title": "Get started as a developer", + "name": "Get started as a developer", + "description": "Developer onboarding: package setup, template repo, branches, and compatibility", + "content": "", + "component": "", + "filePath": "docs/src/pages/get-started/developers", + "urlPath": "get-started/developers", + "tags": [ + "get started", + "developer", + "setup", + "installation", + "packages", + "npm" + ], + "type": "page", + "slug": "get-started/developers", + "status": "stable", + "category": "get started" + }, + { + "id": "get-started-designers", + "title": "Get started as a designer", + "name": "Get started as a designer", + "description": "Designer onboarding: Figma libraries, BETA components, and illustration requests", + "content": "", + "component": "", + "filePath": "docs/src/pages/get-started/designers", + "urlPath": "get-started/designers", "tags": [ - "details", - "tabs" - ] + "get started", + "designer", + "figma", + "libraries", + "illustrations" + ], + "type": "page", + "slug": "get-started/designers", + "status": "stable", + "category": "get started" } ] \ No newline at end of file diff --git a/docs/src/components/CardLite.astro b/docs/src/components/CardLite.astro index 3c9d82a701..7f9f718854 100644 --- a/docs/src/components/CardLite.astro +++ b/docs/src/components/CardLite.astro @@ -8,24 +8,37 @@ interface Props { title: string; description: string; - imageUrl: string; - linkTo: string; + imageUrl?: string; + linkTo?: string; } const { title, description, imageUrl, linkTo } = Astro.props; +const isExternal = linkTo?.startsWith("http"); +const isDisabled = !linkTo; --- - -
    - +{isDisabled ? ( +
    + {imageUrl &&
    } + + {title} + + + {description} + +
    - - {title} - - - {description} - -
    +) : ( + + {imageUrl &&
    } + + {title} + + + {description} + +
    +)}
    diff --git a/docs/src/components/ExamplesGrid.tsx b/docs/src/components/ExamplesGrid.tsx index 20cf2eb624..feef7d492a 100644 --- a/docs/src/components/ExamplesGrid.tsx +++ b/docs/src/components/ExamplesGrid.tsx @@ -19,12 +19,12 @@ import { GoabxFilterChip, GoabxDrawer, GoabxCheckbox, + GoabxCheckboxList, } from "@abgov/react-components/experimental"; import { GoabIcon, GoabDivider, GoabButtonGroup, - GoabCheckboxList, GoabTab, type GoabCheckboxListOnChangeDetail, } from "@abgov/react-components"; @@ -156,16 +156,30 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { }, []); // Filter state - const [pendingFilters, setPendingFilters] = useState<{ - category: string[]; - scale: string[]; - userType: string[]; - }>({ category: [], scale: [], userType: [] }); - const [appliedFilters, setAppliedFilters] = useState<{ - category: string[]; - scale: string[]; - userType: string[]; - }>({ category: [], scale: [], userType: [] }); + const emptyFilters = { + category: [] as string[], + scale: [] as string[], + userType: [] as string[], + }; + const [pendingFilters, setPendingFilters] = useState(emptyFilters); + const [appliedFilters, setAppliedFilters] = useState(emptyFilters); + + // Read URL params on mount for initial filters (e.g. ?userType=citizen) + const [urlFiltersApplied, setUrlFiltersApplied] = useState(false); + useEffect(() => { + if (urlFiltersApplied) return; + const params = new URLSearchParams(window.location.search); + const fromUrl = { + category: params.get("category")?.split(",").filter(Boolean) ?? [], + scale: params.get("scale")?.split(",").filter(Boolean) ?? [], + userType: params.get("userType")?.split(",").filter(Boolean) ?? [], + }; + if (fromUrl.category.length || fromUrl.scale.length || fromUrl.userType.length) { + setPendingFilters(fromUrl); + setAppliedFilters(fromUrl); + } + setUrlFiltersApplied(true); + }, [urlFiltersApplied]); // Hooks const { sortConfig, setSortConfig, sortByKey, clearSort, handleTableSort } = @@ -510,8 +524,8 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { type={getScaleBadgeType(example.data.scale)} content={tag} emphasis="subtle" - icon="false" - /> + icon="false" + /> ))}
    @@ -538,8 +552,8 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { type={getCategoryBadgeType(cat)} content={formatCategory(cat)} emphasis="subtle" - icon="false" - /> + icon="false" + /> ))}
    @@ -814,35 +828,35 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { {groupedExamples ? groupedExamples.map((group) => ( - - toggleGroup(group.key)} - > - -
    - - {group.label} - -
    - - - {expandedGroups.has(group.key) && - group.examples.map(renderTableRow)} -
    - )) + + toggleGroup(group.key)} + > + +
    + + {group.label} + +
    + + + {expandedGroups.has(group.key) && + group.examples.map(renderTableRow)} +
    + )) : filteredExamples.map(renderTableRow)} @@ -914,8 +928,9 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) {
    {/* Scale filter */} - setPendingFilters((prev) => ({ ...prev, scale: detail.value })) @@ -930,13 +945,14 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { size="compact" /> ))} - + {/* Category filter */} - setPendingFilters((prev) => ({ ...prev, category: detail.value })) @@ -951,13 +967,14 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { size="compact" /> ))} - + {/* User Type filter */} - setPendingFilters((prev) => ({ ...prev, userType: detail.value })) @@ -972,25 +989,25 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { size="compact" /> ))} - + {(pendingFilters.category.length > 0 || pendingFilters.scale.length > 0 || pendingFilters.userType.length > 0) && ( - <> - - - setPendingFilters({ category: [], scale: [], userType: [] }) - } - > - Clear all filters - - - )} + <> + + + setPendingFilters({ category: [], scale: [], userType: [] }) + } + > + Clear all filters + + + )}
    diff --git a/docs/src/components/TokensGrid.tsx b/docs/src/components/TokensGrid.tsx index 1edf355798..ef2c695350 100644 --- a/docs/src/components/TokensGrid.tsx +++ b/docs/src/components/TokensGrid.tsx @@ -19,6 +19,7 @@ import { GoabxFilterChip, GoabxDrawer, GoabxCheckbox, + GoabxCheckboxList, } from "@abgov/react-components/experimental"; import { GoabIconButton, @@ -26,7 +27,6 @@ import { GoabDivider, GoabButtonGroup, GoabContainer, - GoabCheckboxList, GoabTab, type GoabCheckboxListOnChangeDetail, } from "@abgov/react-components"; @@ -48,19 +48,36 @@ interface TokensGridProps { function getCategoryBadgeType( category: string, ): "sky" | "pasture" | "sunset" | "lilac" | "prairie" | "dawn" { - switch (category) { + switch (category.toLowerCase()) { + // Colors case "color": return "sky"; + // Spacing + case "space": case "spacing": return "pasture"; + // Typography + case "fontfamily": + case "fontsize": + case "fontweight": + case "lineheight": + case "fontvariationsettings": case "typography": return "sunset"; + // Borders case "border": + case "borderradius": + case "borderwidth": return "lilac"; + // Shadows case "shadow": return "prairie"; - default: + // Icons & misc + case "iconsize": + case "opacity": return "dawn"; + default: + return "sky"; } } @@ -111,6 +128,15 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) { return () => observer.disconnect(); }, []); + // Read URL search parameter on mount (e.g., /tokens?search=color) + useEffect(() => { + const params = new URLSearchParams(window.location.search); + const searchParam = params.get("search"); + if (searchParam && !searchChips.includes(searchParam)) { + setSearchChips([searchParam]); + } + }, []); // Only run on mount + // Filter state const [pendingFilters, setPendingFilters] = useState([]); const [appliedFilters, setAppliedFilters] = useState([]); @@ -307,8 +333,9 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) { [sortConfig], ); - // Render color preview + // Render token preview (color, opacity, etc.) const renderPreview = (token: FlatToken) => { + const value = token.resolvedValue || token.value; if (token.isColor) { return (
    + ); + } + + // Opacity tokens - show overlay on top of content to demonstrate the effect + if (token.category === "opacity") { + // Parse opacity value (e.g., "50%" -> 0.5, "0.9" -> 0.9) + let opacity = 0.5; + if (value.endsWith("%")) { + opacity = parseFloat(value) / 100; + } else { + opacity = parseFloat(value); + } + + return ( +
    + {/* Back: blue square (content behind overlay) */} +
    + {/* Front: gray overlay at the specified opacity */} +
    +
    + ); + } + + // Border radius tokens - show gray square with the radius applied + if (token.category === "borderRadius") { + return ( +
    ); } + + // Border width tokens - show horizontal line with the width applied + if (token.category === "borderWidth") { + return ( +
    + ); + } + + // Space tokens - show two endpoints with a colored bar between them + if (token.category === "space") { + // Color mapping based on spacing size (use endsWith to avoid matching "-space-") + const getSpacingColor = (name: string): string => { + if (name.endsWith("-none")) return "var(--goa-color-greyscale-400)"; + if (name.endsWith("-3xs")) return "#f8a5a5"; // light red/pink + if (name.endsWith("-2xs")) return "#a5e8e0"; // light teal + if (name.endsWith("-xs")) return "#e0a5e8"; // light magenta + if (name.endsWith("-s")) return "#a5d4f8"; // light blue + if (name.endsWith("-m")) return "#f8cfa5"; // light orange + if (name.endsWith("-l")) return "#a5e8c0"; // light green + if (name.endsWith("-xl")) return "#f8f0a5"; // light yellow + if (name.endsWith("-2xl")) return "#f8a5b5"; // light coral + if (name.endsWith("-3xl")) return "#a5e8e8"; // light cyan + if (name.endsWith("-4xl")) return "#c5f8a5"; // light lime + return "var(--goa-color-interactive-default)"; + }; + + return ( +
    + {/* Left endpoint */} +
    + {/* Spacing bar */} +
    + {/* Right endpoint */} +
    +
    + ); + } + + // Icon size tokens - show plus icon with background sized to the token value + if (token.category === "iconSize") { + // Map token suffix to GoabIconSize ("1"-"6") + const getIconSize = (name: string): "1" | "2" | "3" | "4" | "5" | "6" => { + if (name.endsWith("-1")) return "1"; + if (name.endsWith("-2")) return "2"; + if (name.endsWith("-3")) return "3"; + if (name.endsWith("-4")) return "4"; + if (name.endsWith("-5")) return "5"; + if (name.endsWith("-6")) return "6"; + if (name.endsWith("-xs")) return "1"; + if (name.endsWith("-s")) return "2"; + if (name.endsWith("-m")) return "3"; + if (name.endsWith("-l")) return "4"; + if (name.endsWith("-xl")) return "5"; + return "3"; + }; + + return ( +
    + +
    + ); + } + + // Shadow tokens - show white card with shadow on gray background + if (token.category === "shadow") { + return ( +
    +
    +
    + ); + } + + // Font weight tokens - show "Aa" at the weight + if (token.category === "fontWeight") { + return ( +
    + Aa +
    + ); + } + + // Letter spacing tokens - show "Aa" with the letter spacing + if (token.category === "letterSpacing") { + return ( +
    + Aa +
    + ); + } + + // Typography tokens - show "Aa" with all typography styles applied + if (token.category === "typography") { + // Parse the resolved value to get individual properties + let typographyStyles: React.CSSProperties = { + color: "var(--goa-color-greyscale-700)", + }; + + try { + const parsed = JSON.parse(token.resolvedValue || "{}"); + if (parsed.fontFamily) typographyStyles.fontFamily = parsed.fontFamily; + if (parsed.fontSize) typographyStyles.fontSize = parsed.fontSize; + if (parsed.fontWeight) typographyStyles.fontWeight = parsed.fontWeight; + if (parsed.lineHeight) typographyStyles.lineHeight = parsed.lineHeight; + if (parsed.letterSpacing) typographyStyles.letterSpacing = parsed.letterSpacing; + } catch { + // Fallback if parsing fails + typographyStyles.fontFamily = "var(--goa-fontFamily-sans)"; + typographyStyles.fontSize = "16px"; + } + + return ( +
    + Aa +
    + ); + } + + // Font size tokens - show "Aa" at the actual size + if (token.category === "fontSize") { + return ( +
    + Aa +
    + ); + } + + // Font family tokens - show sample text in the font + if (token.category === "fontFamily") { + return ( +
    + Abc 123 +
    + ); + } + + // Line height tokens - show two lines of "Ag" with the line-height applied + if (token.category === "lineHeight") { + return ( +
    + Ag +
    + Ag +
    + ); + } + return ; }; @@ -352,6 +707,7 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) { type={getCategoryBadgeType(token.category)} content={formatCategory(token.category)} emphasis="subtle" + icon="false" />
    @@ -377,6 +733,7 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) { type={getCategoryBadgeType(token.category)} content={formatCategory(token.category)} emphasis="subtle" + icon="false" /> @@ -448,17 +805,19 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) {
    - { - setPendingFilters(appliedFilters); - setFilterDrawerOpen(true); - }} - > - Filters - +
    + { + setPendingFilters(appliedFilters); + setFilterDrawerOpen(true); + }} + > + Filters + +
    @@ -599,8 +958,9 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) { >
    - setPendingFilters(detail.value) @@ -615,7 +975,7 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) { size="compact" /> ))} - + {pendingFilters.length > 0 && ( @@ -689,6 +1049,22 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) { gap: var(--goa-space-m); } + /* Mobile: stack toolbar vertically */ + @media (max-width: 640px) { + .tokens-toolbar { + flex-direction: column; + align-items: stretch; + } + + .tokens-search-section { + min-width: unset; + } + + .tokens-toolbar-actions { + align-self: flex-start; + } + } + /* Syntax toggle wrapper */ .syntax-toggle-wrapper { margin-bottom: -20px; /* Compensate for goa-tabs internal margin */ diff --git a/docs/src/components/search/SearchEmptyState.tsx b/docs/src/components/search/SearchEmptyState.tsx index e620925a78..06aa2a207d 100644 --- a/docs/src/components/search/SearchEmptyState.tsx +++ b/docs/src/components/search/SearchEmptyState.tsx @@ -7,26 +7,9 @@ * - Quick links to common destinations */ -import type { HistoryItem } from './useSearchHistory'; -import { quickLinks } from './quick-links'; - -/** Map category slug to icon name (matches ComponentsSubMenu) */ -const CATEGORY_ICONS: Record = { - 'content-layout': 'grid', - 'feedback-and-alerts': 'notifications', - 'inputs-and-actions': 'create', - 'structure-and-navigation': 'browsers', - 'utilities': 'build', -}; - -/** Get icon for a history item based on type and category */ -function getHistoryIcon(item: HistoryItem): string { - if (item.type === 'example') { - return 'browsers'; // Examples use browsers icon - } - // Components use their category icon - return item.category ? CATEGORY_ICONS[item.category] || 'shapes' : 'shapes'; -} +import type { HistoryItem } from "./useSearchHistory"; +import { quickLinks } from "./quick-links"; +import { getTypeIcon, getResultUrl } from "./search-utils"; interface SearchEmptyStateProps { /** Recent search history */ @@ -49,9 +32,14 @@ export function SearchEmptyState({
    {/* Recent searches section */} {history.length > 0 && ( -
    +
    - Recent + + Recent +
    diff --git a/docs/src/components/search/SearchPage.tsx b/docs/src/components/search/SearchPage.tsx index 1208caa52e..1a47953c81 100644 --- a/docs/src/components/search/SearchPage.tsx +++ b/docs/src/components/search/SearchPage.tsx @@ -12,18 +12,25 @@ * - Screen reader announcements for results */ -import { useState, useEffect, useCallback, useRef, useId } from 'react'; -import { useSearch, type SearchFilter, type SearchResult, type ComponentEntry, type ExampleEntry } from './useSearch'; -import { useSearchHistory, type HistoryItem } from './useSearchHistory'; -import { SearchResults } from './SearchResults'; +import { useState, useEffect, useCallback, useRef, useId, useMemo } from "react"; +import { + useSearch, + type SearchFilter, + type SearchResult, + type ComponentEntry, + type ExampleEntry, +} from "./useSearch"; +import { useSearchHistory, type HistoryItem } from "./useSearchHistory"; +import { SearchResults } from "./SearchResults"; import { SearchFilterHints, shouldShowFilterHints, parseFilterCommand, getFilteredOptions, type FilterOption, -} from './SearchFilterHints'; -import './search.css'; +} from "./SearchFilterHints"; +import { getFilterLabel, getResultUrl } from "./search-utils"; +import "./search.css"; interface SearchPageProps { /** Initial query from URL parameter */ @@ -55,23 +62,11 @@ function SearchIcon() { * Detect if user is on Mac for keyboard shortcut display. */ function isMac(): boolean { - if (typeof navigator === 'undefined') return false; - return navigator.platform.toLowerCase().includes('mac'); -} - -/** Get display label for a filter type */ -function getFilterLabel(filter: SearchFilter): string { - switch (filter) { - case 'component': - return 'Components'; - case 'example': - return 'Examples'; - default: - return ''; - } + if (typeof navigator === "undefined") return false; + return navigator.platform.toLowerCase().includes("mac"); } -export function SearchPage({ initialQuery = '' }: SearchPageProps) { +export function SearchPage({ initialQuery = "" }: SearchPageProps) { const [query, setQuery] = useState(initialQuery); const [activeFilter, setActiveFilter] = useState(null); const [activeCommand, setActiveCommand] = useState(null); @@ -100,7 +95,18 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) { }, [parsed.filter, parsed.command, parsed.query]); // Run search when query changes - const results = searchQuery.trim() ? search(searchQuery, effectiveFilter) : []; + // If filter is active but no query, show all items of that type + const results = useMemo( + () => + searchQuery.trim() + ? search(searchQuery, effectiveFilter) + : effectiveFilter + ? entries + .filter((e) => e.type === effectiveFilter) + .map((e) => ({ ...e, score: 0 })) + : [], + [searchQuery, effectiveFilter, search, entries], + ); // Focus input on mount useEffect(() => { @@ -111,11 +117,11 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) { useEffect(() => { const url = new URL(window.location.href); if (query.trim()) { - url.searchParams.set('q', query); + url.searchParams.set("q", query); } else { - url.searchParams.delete('q'); + url.searchParams.delete("q"); } - window.history.replaceState({}, '', url.toString()); + window.history.replaceState({}, "", url.toString()); }, [query]); /** @@ -124,7 +130,7 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) { const handleFilterSelect = useCallback((option: FilterOption) => { setActiveFilter(option.filter); setActiveCommand(option.command); - setQuery(''); // Clear input - the filter chip shows the active filter + setQuery(""); // Clear input - the filter chip shows the active filter setHintSelectedIndex(0); inputRef.current?.focus(); }, []); @@ -135,33 +141,36 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) { const clearFilter = useCallback(() => { setActiveFilter(null); setActiveCommand(null); - setQuery(''); + setQuery(""); inputRef.current?.focus(); }, []); /** * Handle when a search result is clicked (for history tracking). */ - const handleResultClick = useCallback((result: SearchResult) => { - const title = result.type === 'component' - ? (result as ComponentEntry).name - : (result as ExampleEntry).title; - - addToHistory({ - id: result.id, - type: result.type, - title, - slug: result.slug, - query: searchQuery || undefined, - }); - }, [addToHistory, searchQuery]); + const handleResultClick = useCallback( + (result: SearchResult) => { + const title = + result.type === "component" + ? (result as ComponentEntry).name + : (result as ExampleEntry).title; + + addToHistory({ + id: result.id, + type: result.type, + title, + slug: result.slug, + query: searchQuery || undefined, + }); + }, + [addToHistory, searchQuery], + ); /** * Handle when a history item is clicked. */ const handleHistoryClick = useCallback((item: HistoryItem) => { - const prefix = item.type === 'component' ? 'components' : 'examples'; - window.location.href = `/${prefix}/${item.slug}`; + window.location.href = getResultUrl(item.type, item.slug); }, []); /** @@ -184,7 +193,7 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) { */ const handleInputKeyDown = (e: React.KeyboardEvent) => { // Backspace on empty input clears the active filter - if (e.key === 'Backspace' && query === '' && activeFilter) { + if (e.key === "Backspace" && query === "" && activeFilter) { e.preventDefault(); clearFilter(); return; @@ -193,23 +202,23 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) { // Only handle hint navigation when hints are showing if (!showHints) return; - const enabledOptions = getFilteredOptions(query).filter(opt => !opt.disabled); + const enabledOptions = getFilteredOptions(query).filter((opt) => !opt.disabled); if (enabledOptions.length === 0) return; switch (e.key) { - case 'ArrowDown': + case "ArrowDown": e.preventDefault(); - setHintSelectedIndex(prev => - prev < enabledOptions.length - 1 ? prev + 1 : prev + setHintSelectedIndex((prev) => + prev < enabledOptions.length - 1 ? prev + 1 : prev, ); break; - case 'ArrowUp': + case "ArrowUp": e.preventDefault(); - setHintSelectedIndex(prev => (prev > 0 ? prev - 1 : prev)); + setHintSelectedIndex((prev) => (prev > 0 ? prev - 1 : prev)); break; - case 'Enter': + case "Enter": e.preventDefault(); const selected = enabledOptions[hintSelectedIndex]; if (selected) { @@ -221,11 +230,11 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) { // Generate announcement text for screen readers const getAnnouncement = () => { - if (isLoading) return 'Loading search index...'; + if (isLoading) return "Loading search index..."; if (error) return `Error loading search: ${error}`; - if (!searchQuery.trim()) return ''; + if (!searchQuery.trim()) return ""; if (results.length === 0) return `No results found for "${searchQuery}"`; - return `Found ${results.length} result${results.length === 1 ? '' : 's'} for "${searchQuery}"`; + return `Found ${results.length} result${results.length === 1 ? "" : "s"} for "${searchQuery}"`; }; return ( @@ -268,7 +277,11 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) { ref={inputRef} type="text" className="search-input-field" - placeholder="Search components and examples... (type / to filter)" + placeholder={ + effectiveFilter + ? `Search ${getFilterLabel(effectiveFilter)}...` + : "Search components and examples... (type / to filter)" + } value={query} onChange={(e) => setQuery(e.target.value)} onKeyDown={handleInputKeyDown} @@ -283,7 +296,7 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) { {/* Keyboard hint */} @@ -302,7 +315,10 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) {
    Error loading search: {error} -

    Try refreshing the page. If the problem persists, search may be temporarily unavailable.

    +

    + Try refreshing the page. If the problem persists, search may be + temporarily unavailable. +

    ) : ( @@ -316,6 +332,7 @@ export function SearchPage({ initialQuery = '' }: SearchPageProps) { onHistoryClick={handleHistoryClick} onClearHistory={clearHistory} onSuggestionClick={handleSuggestionClick} + activeFilter={effectiveFilter} /> )}
    diff --git a/docs/src/components/search/SearchResultItem.tsx b/docs/src/components/search/SearchResultItem.tsx index 7826e9318c..6d0147753c 100644 --- a/docs/src/components/search/SearchResultItem.tsx +++ b/docs/src/components/search/SearchResultItem.tsx @@ -2,14 +2,21 @@ * SearchResultItem.tsx * * Renders a single search result with: - * - Type icon: △ for components, □ for examples + * - Type icon matching sidebar icons (shapes, browsers, code-slash) * - Breadcrumb showing category context * - Title (clickable link) * - Description (truncated) * - Status badge for non-stable content */ -import type { SearchResult, ComponentEntry, ExampleEntry } from './useSearch'; +import type { + SearchResult, + ComponentEntry, + ExampleEntry, + TokenEntry, + PageEntry, +} from "./useSearch"; +import { getTypeIcon, getResultUrl } from "./search-utils"; interface SearchResultItemProps { result: SearchResult; @@ -23,43 +30,69 @@ interface SearchResultItemProps { * Truncate text to a maximum length, adding ellipsis if needed. */ function truncate(text: string | undefined, maxLength: number): string { - if (!text) return ''; + if (!text) return ""; if (text.length <= maxLength) return text; - return text.slice(0, maxLength).trim() + '…'; + return text.slice(0, maxLength).trim() + "…"; } /** * Get display name based on entry type. */ function getDisplayName(result: SearchResult): string { - if (result.type === 'component') { + if (result.type === "component") { return (result as ComponentEntry).name; } + if (result.type === "token") { + return (result as TokenEntry).title; + } + if (result.type === "page") { + return (result as PageEntry).title; + } return (result as ExampleEntry).title; } +/** + * Format a kebab-case or lowercase string to Title Case. + * "inputs-and-actions" → "Inputs and Actions" + * "get started" → "Get Started" + */ +function formatCategory(raw: string): string { + const smallWords = new Set(["and", "or", "the", "in", "of", "for", "to", "a", "an"]); + return raw + .replace(/([a-z])([A-Z])/g, "$1 $2") + .replace(/-/g, " ") + .split(" ") + .map((word, i) => + i === 0 || !smallWords.has(word) + ? word.charAt(0).toUpperCase() + word.slice(1) + : word, + ) + .join(" "); +} + /** * Build breadcrumb text from type and category. * Examples: "Components > Feedback" or "Examples > Forms" */ function getBreadcrumb(result: SearchResult): string { - if (result.type === 'component') { + if (result.type === "page") { + const page = result as PageEntry; + return page.category ? formatCategory(page.category) : "Pages"; + } + if (result.type === "component") { const comp = result as ComponentEntry; - return `Components > ${comp.category}`; + return `Components > ${formatCategory(comp.category)}`; + } + if (result.type === "token") { + const token = result as TokenEntry; + if (token.category) { + return `Design Tokens > ${formatCategory(token.category)}`; + } + return "Design Tokens"; } const example = result as ExampleEntry; - const category = example.categories?.[0] || 'General'; - return `Examples > ${category}`; -} - -/** - * Build the URL for the result based on type. - * Components: /components/{slug} - * Examples: /examples/{slug} - */ -function getUrl(result: SearchResult): string { - const prefix = result.type === 'component' ? 'components' : 'examples'; - return `/${prefix}/${result.slug}`; + const category = example.categories?.[0] || "General"; + return `Examples > ${formatCategory(category)}`; } /** @@ -67,14 +100,14 @@ function getUrl(result: SearchResult): string { */ function getBadgeClass(status: string): string | null { switch (status) { - case 'beta': - return 'search-result-badge--beta'; - case 'draft': - return 'search-result-badge--draft'; - case 'experimental': - return 'search-result-badge--experimental'; - case 'deprecated': - return 'search-result-badge--deprecated'; + case "beta": + return "search-result-badge--beta"; + case "draft": + return "search-result-badge--draft"; + case "experimental": + return "search-result-badge--experimental"; + case "deprecated": + return "search-result-badge--deprecated"; default: return null; } @@ -85,13 +118,18 @@ function getBadgeClass(status: string): string | null { * Stable/published items don't need badges. */ function shouldShowBadge(status: string): boolean { - return !['stable', 'published'].includes(status); + return !["stable", "published"].includes(status); } -export function SearchResultItem({ result, isSelected, onClick, onNavigate }: SearchResultItemProps) { +export function SearchResultItem({ + result, + isSelected, + onClick, + onNavigate, +}: SearchResultItemProps) { const name = getDisplayName(result); const breadcrumb = getBreadcrumb(result); - const url = getUrl(result); + const url = getResultUrl(result.type, result.slug); const description = truncate(result.description, 80); const badgeClass = getBadgeClass(result.status); const itemId = `search-result-${result.type}-${result.id}`; @@ -102,11 +140,7 @@ export function SearchResultItem({ result, isSelected, onClick, onNavigate }: Se }; return ( -
  • +
  • - {/* Type icon */} -
  • diff --git a/docs/src/components/search/SearchResults.tsx b/docs/src/components/search/SearchResults.tsx index e4d7358b0f..ab51e199f2 100644 --- a/docs/src/components/search/SearchResults.tsx +++ b/docs/src/components/search/SearchResults.tsx @@ -16,11 +16,17 @@ import { useImperativeHandle, forwardRef, } from "react"; -import type { SearchResult, ComponentEntry, ExampleEntry } from "./useSearch"; +import type { + SearchResult, + ComponentEntry, + ExampleEntry, + SearchFilter, +} from "./useSearch"; import type { HistoryItem } from "./useSearchHistory"; import { SearchResultItem } from "./SearchResultItem"; import { SearchEmptyState } from "./SearchEmptyState"; import { SearchNoResults } from "./SearchNoResults"; +import { getResultUrl } from "./search-utils"; export interface SearchResultsHandle { /** Handle arrow/enter keyboard navigation from the search input */ @@ -42,6 +48,8 @@ interface SearchResultsProps { onClearHistory: () => void; /** Called when user clicks a suggestion to search for it */ onSuggestionClick: (suggestion: string) => void; + /** Active filter - when set with empty query, show all items of that type */ + activeFilter?: SearchFilter; } /** Number of results to show initially */ @@ -61,6 +69,7 @@ export const SearchResults = forwardRef onHistoryClick, onClearHistory, onSuggestionClick, + activeFilter, }, ref, ) { @@ -103,8 +112,7 @@ export const SearchResults = forwardRef const selected = displayedResults[selectedIndex]; if (selected) { onResultClick(selected); - const prefix = selected.type === "component" ? "components" : "examples"; - window.location.href = `/${prefix}/${selected.slug}`; + window.location.href = getResultUrl(selected.type, selected.slug); onClose(); } break; @@ -141,8 +149,9 @@ export const SearchResults = forwardRef ); } - // Initial state (no query yet) - show empty state with history and quick links - if (!query.trim()) { + // Initial state (no query and no filter) - show empty state with history and quick links + // When a filter is active, show all items of that type instead + if (!query.trim() && !activeFilter) { return (
    onKeyDown={(e) => { if (e.key === "ArrowDown" || e.key === "ArrowUp") { e.preventDefault(); - const items = listRef.current?.querySelectorAll("a.search-result-item"); + const items = + listRef.current?.querySelectorAll("a.search-result-item"); if (!items || items.length === 0) return; const currentIndex = Array.from(items).indexOf(e.target as HTMLElement); const fromIndex = currentIndex >= 0 ? currentIndex : selectedIndex; - const nextIndex = e.key === "ArrowDown" - ? Math.min(fromIndex + 1, items.length - 1) - : Math.max(fromIndex - 1, 0); + const nextIndex = + e.key === "ArrowDown" + ? Math.min(fromIndex + 1, items.length - 1) + : Math.max(fromIndex - 1, 0); items[nextIndex].focus(); setSelectedIndex(nextIndex); } diff --git a/docs/src/components/search/search-utils.ts b/docs/src/components/search/search-utils.ts new file mode 100644 index 0000000000..02789d8686 --- /dev/null +++ b/docs/src/components/search/search-utils.ts @@ -0,0 +1,53 @@ +/** + * Shared utilities for search components. + * + * Centralizes URL building, icon mapping, and filter labels + * so they stay consistent across SearchModal, SearchPage, + * SearchResults, SearchEmptyState, and SearchResultItem. + */ + +import type { SearchFilter } from "./useSearch"; + +/** Build a URL for a search result or history item by type + slug. */ +export function getResultUrl(type: string, slug: string): string { + if (type === "page") { + return `/${slug}`; + } + if (type === "token") { + return `/tokens?search=${slug}`; + } + const prefix = type === "component" ? "components" : "examples"; + return `/${prefix}/${slug}`; +} + +/** Get the GoA icon name for a search entry type. */ +export function getTypeIcon(type: string): string { + switch (type) { + case "page": + return "document-text"; + case "component": + return "shapes"; + case "example": + return "browsers"; + case "token": + return "code-slash"; + default: + return "document-text"; + } +} + +/** Get the display label for a search filter type. */ +export function getFilterLabel(filter: SearchFilter): string { + switch (filter) { + case "page": + return "get started"; + case "component": + return "components"; + case "example": + return "examples"; + case "token": + return "tokens"; + default: + return ""; + } +} diff --git a/docs/src/components/search/search.css b/docs/src/components/search/search.css index f7953530eb..d7b4325f56 100644 --- a/docs/src/components/search/search.css +++ b/docs/src/components/search/search.css @@ -32,8 +32,12 @@ } @keyframes fadeIn { - from { opacity: 0; } - to { opacity: 1; } + from { + opacity: 0; + } + to { + opacity: 1; + } } .search-modal { @@ -218,7 +222,7 @@ } .search-results-loading::before { - content: ''; + content: ""; width: 24px; height: 24px; border: 2px solid var(--goa-color-greyscale-200, #e0e0e0); @@ -277,18 +281,7 @@ align-items: center; justify-content: center; color: var(--goa-color-greyscale-500, #666); - font-size: 14px; - margin-top: 2px; -} - -/* Component icon: triangle */ -.search-result-icon--component::before { - content: '△'; -} - -/* Example icon: square */ -.search-result-icon--example::before { - content: '□'; + margin-top: 21px; } .search-result-content { @@ -603,16 +596,6 @@ align-items: center; justify-content: center; color: var(--goa-color-greyscale-500, #666); - font-size: 14px; -} - -/* History item icons use type-specific icons */ -.search-empty-icon--component::before { - content: '△'; -} - -.search-empty-icon--example::before { - content: '□'; } .search-empty-item-title { @@ -676,7 +659,9 @@ border-radius: 4px; padding: var(--goa-space-2xs) var(--goa-space-s); cursor: pointer; - transition: background-color 100ms ease, border-color 100ms ease; + transition: + background-color 100ms ease, + border-color 100ms ease; } .search-no-results-suggestion:hover { @@ -702,16 +687,25 @@ display: flex; align-items: center; gap: var(--goa-space-s); - padding: var(--goa-space-m) var(--goa-space-l); + padding: var(--goa-space-s) var(--goa-space-m); background: white; - border: 2px solid var(--goa-color-greyscale-200, #e0e0e0); - border-radius: var(--goa-space-m); - transition: border-color 150ms ease; + border: 1px solid var(--goa-color-greyscale-300, #ccc); + border-radius: var(--goa-border-radius-m); + transition: + background 0.15s ease, + border-color 0.15s ease, + box-shadow 0.15s ease; +} + +.search-page-input-container:hover, +.search-page-input-container:focus-within { + border-color: var(--goa-color-greyscale-black); + box-shadow: inset 0 0 0 1px var(--goa-color-greyscale-black); } .search-page-input-container:focus-within { - border-color: var(--goa-color-interactive-focus, #0070c4); - box-shadow: 0 0 0 3px rgba(0, 112, 196, 0.15); + outline: 3px solid var(--goa-color-interactive-focus); + outline-offset: 2px; } .search-page-hint-text { diff --git a/docs/src/components/search/useSearch.ts b/docs/src/components/search/useSearch.ts index c574c8d6df..1af5732a57 100644 --- a/docs/src/components/search/useSearch.ts +++ b/docs/src/components/search/useSearch.ts @@ -9,15 +9,15 @@ * const results = search('button'); */ -import { useState, useEffect, useCallback, useRef } from 'react'; -import FlexSearch from 'flexsearch'; +import { useState, useEffect, useCallback, useRef } from "react"; +import FlexSearch from "flexsearch"; // ============================================================================ // Types // ============================================================================ export interface ComponentEntry { - type: 'component'; + type: "component"; id: string; name: string; description?: string; @@ -28,7 +28,7 @@ export interface ComponentEntry { } export interface ExampleEntry { - type: 'example'; + type: "example"; id: string; title: string; description?: string; @@ -41,7 +41,30 @@ export interface ExampleEntry { slug: string; } -export type SearchEntry = ComponentEntry | ExampleEntry; +export interface TokenEntry { + type: "token"; + id: string; + title: string; + description?: string; + status: string; + tags: string[]; + slug: string; // category slug (e.g., "color", "space") + category?: string; +} + +export interface PageEntry { + type: "page"; + id: string; + title: string; + name?: string; + description?: string; + status: string; + tags: string[]; + slug: string; // URL path (e.g., "get-started/developers") + category: string; // e.g., "get started" +} + +export type SearchEntry = ComponentEntry | ExampleEntry | TokenEntry | PageEntry; /** * SearchResult is a SearchEntry with an additional score property. @@ -53,7 +76,7 @@ export type SearchResult = SearchEntry & { }; /** Filter type for limiting search results */ -export type SearchFilter = 'component' | 'example' | null; +export type SearchFilter = "component" | "example" | "token" | "page" | null; interface UseSearchReturn { /** Search function - returns results sorted by relevance and status */ @@ -72,16 +95,18 @@ interface UseSearchReturn { /** * Type priority for sorting results. - * Components should appear before examples for the same query. + * Pages first, then components, tokens, examples. * Lower number = higher priority (appears first). */ const TYPE_PRIORITY: Record = { - component: 0, - example: 1, + page: 0, + component: 1, + token: 2, + example: 3, }; function getTypePriority(type: string): number { - return TYPE_PRIORITY[type] ?? 2; + return TYPE_PRIORITY[type] ?? 3; } /** @@ -119,54 +144,73 @@ function createSearchIndex() { // FlexSearch Document index for multi-field search return new FlexSearch.Document({ // Tokenize for partial matching - tokenize: 'forward', + tokenize: "forward", // Enable scoring resolution: 9, // Document fields to index document: { - id: 'id', + id: "id", index: [ // Primary fields (highest weight via boost) { - field: 'name', - tokenize: 'forward', + field: "name", + tokenize: "forward", resolution: 9, }, { - field: 'title', - tokenize: 'forward', + field: "title", + tokenize: "forward", resolution: 9, }, // Secondary fields { - field: 'description', - tokenize: 'forward', + field: "description", + tokenize: "forward", resolution: 5, }, { - field: 'tags', - tokenize: 'forward', + field: "tags", + tokenize: "forward", resolution: 7, }, { - field: 'components', - tokenize: 'forward', + field: "components", + tokenize: "forward", resolution: 6, }, { - field: 'category', - tokenize: 'strict', + field: "category", + tokenize: "strict", resolution: 4, }, { - field: 'categories', - tokenize: 'strict', - resolution: 4, + field: "categories", + tokenize: "strict", + }, + // Content field - includes token names for token entries + { + field: "content", + tokenize: "forward", + resolution: 4, // Lower weight than title/name but still searchable }, ], // Store these fields for retrieval // Using explicit field list for TypeScript compatibility - store: ['id', 'type', 'name', 'title', 'description', 'status', 'category', 'categories', 'tags', 'components', 'scale', 'userType', 'slug'], + store: [ + "id", + "type", + "name", + "title", + "description", + "status", + "category", + "categories", + "tags", + "components", + "scale", + "userType", + "slug", + ], }, }); } @@ -200,7 +244,7 @@ async function loadSearchIndex(): Promise { // Fetch and build the index cachePromise = (async () => { - const response = await fetch('/search-index.json'); + const response = await fetch("/search-index.json"); if (!response.ok) { throw new Error(`Failed to load search index: ${response.status}`); @@ -223,12 +267,29 @@ async function loadSearchIndex(): Promise { ...entry, id: uniqueId, tags: entry.tags, - name: entry.type === 'component' ? entry.name : '', - category: entry.type === 'component' ? entry.category : '', - title: entry.type === 'example' ? entry.title : '', - categories: entry.type === 'example' ? entry.categories : [], - components: entry.type === 'example' ? entry.components : [], - // eslint-disable-next-line @typescript-eslint/no-explicit-any + name: + entry.type === "component" + ? (entry as ComponentEntry).name + : entry.type === "page" + ? (entry as PageEntry).name || "" + : "", + category: + entry.type === "component" + ? (entry as ComponentEntry).category + : entry.type === "page" + ? (entry as PageEntry).category + : "", + title: + entry.type === "example" + ? (entry as ExampleEntry).title + : entry.type === "token" + ? (entry as TokenEntry).title + : entry.type === "page" + ? (entry as PageEntry).title + : "", + categories: entry.type === "example" ? (entry as ExampleEntry).categories : [], + components: entry.type === "example" ? (entry as ExampleEntry).components : [], + // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any); } @@ -277,8 +338,8 @@ export function useSearch(): UseSearchReturn { setIsLoading(false); }) .catch((err) => { - console.error('Failed to load search index:', err); - setError(err instanceof Error ? err.message : 'Unknown error'); + console.error("Failed to load search index:", err); + setError(err instanceof Error ? err.message : "Unknown error"); setIsLoading(false); }); }, []); @@ -315,9 +376,10 @@ export function useSearch(): UseSearchReturn { for (let i = 0; i < results.length; i++) { const result = results[i]; // Result can be string, number, or object with id property - const id = typeof result === 'string' || typeof result === 'number' - ? String(result) - : (result as { id: string }).id; + const id = + typeof result === "string" || typeof result === "number" + ? String(result) + : (result as { id: string }).id; // Score based on position (earlier = higher score) and field // Field importance is already handled by resolution const positionScore = 1 - (i / results.length) * 0.5; @@ -335,11 +397,14 @@ export function useSearch(): UseSearchReturn { if (entry) { let finalScore = score; - // Exact name match boost: if query matches component/example name exactly + // Exact name match boost: if query matches component/example/token name exactly // "button" query + "Button" component = exact match = big boost - const entryName = entry.type === 'component' - ? (entry as ComponentEntry).name - : (entry as ExampleEntry).title; + const entryName = + entry.type === "component" + ? (entry as ComponentEntry).name + : entry.type === "token" + ? (entry as TokenEntry).title + : (entry as ExampleEntry).title; if (entryName.toLowerCase() === queryLower) { // Exact match - this is almost certainly what they want @@ -351,7 +416,7 @@ export function useSearch(): UseSearchReturn { } // Small boost for components over examples (tiebreaker) - if (entry.type === 'component') { + if (entry.type === "component") { finalScore += 0.5; } @@ -378,7 +443,7 @@ export function useSearch(): UseSearchReturn { // Apply filter if specified if (filter) { - return results.filter(result => result.type === filter); + return results.filter((result) => result.type === filter); } return results; diff --git a/docs/src/components/search/useSearchHistory.ts b/docs/src/components/search/useSearchHistory.ts index 03dad36a17..8ff3a22ab5 100644 --- a/docs/src/components/search/useSearchHistory.ts +++ b/docs/src/components/search/useSearchHistory.ts @@ -18,7 +18,7 @@ import { useState, useCallback, useEffect } from 'react'; export interface HistoryItem { /** The result that was clicked */ id: string; - type: 'component' | 'example'; + type: 'component' | 'example' | 'token' | 'page'; title: string; slug: string; /** Category slug for components (e.g., 'inputs-and-actions') */ diff --git a/docs/src/layouts/ComponentPageLayout.astro b/docs/src/layouts/ComponentPageLayout.astro index 421769d0ca..c03131d815 100644 --- a/docs/src/layouts/ComponentPageLayout.astro +++ b/docs/src/layouts/ComponentPageLayout.astro @@ -91,7 +91,6 @@ const { title, description, currentSlug, category } = Astro.props; border: 1px solid var(--goa-color-greyscale-150); padding: var(--goa-space-xl) var(--goa-space-2xl); min-height: calc(100vh - var(--goa-space-l) * 2); - overflow-x: clip; /* Allows sticky toolbar to break out visually */ /* Full-width card, page content centers itself within */ } diff --git a/docs/src/layouts/ExamplesPageLayout.astro b/docs/src/layouts/ExamplesPageLayout.astro index 36f92544b8..7567a2c600 100644 --- a/docs/src/layouts/ExamplesPageLayout.astro +++ b/docs/src/layouts/ExamplesPageLayout.astro @@ -86,7 +86,6 @@ const { title, description, currentSlug } = Astro.props; border: 1px solid var(--goa-color-greyscale-150); padding: var(--goa-space-xl) var(--goa-space-2xl); min-height: calc(100vh - var(--goa-space-l) * 2); - overflow-x: clip; /* Allows sticky toolbar to break out visually */ /* Full-width card, page content centers itself within */ } diff --git a/docs/src/layouts/TokensLayout.astro b/docs/src/layouts/TokensLayout.astro index 2137ee4ef1..34864dc06c 100644 --- a/docs/src/layouts/TokensLayout.astro +++ b/docs/src/layouts/TokensLayout.astro @@ -84,7 +84,6 @@ const { title, description } = Astro.props; border: 1px solid var(--goa-color-greyscale-150); padding: var(--goa-space-xl) var(--goa-space-2xl); min-height: calc(100vh - var(--goa-space-l) * 2); - overflow-x: clip; /* Allows sticky toolbar to break out visually */ /* Full-width card, page content centers itself within */ } diff --git a/docs/src/lib/tokens.ts b/docs/src/lib/tokens.ts index dd83d55c7f..7931ff29f8 100644 --- a/docs/src/lib/tokens.ts +++ b/docs/src/lib/tokens.ts @@ -15,8 +15,10 @@ import globalTokens from "@abgov/design-tokens-v2/data/goa-global-design-tokens. export interface FlatToken { /** Full token name with CSS variable prefix (e.g., --goa-color-interactive-default) */ name: string; - /** Token value (resolved or raw) */ + /** Token value as defined (may be a reference like {color.greyscale.300}) */ value: string; + /** Resolved value for preview (follows references to get actual hex, etc.) */ + resolvedValue: string; /** Top-level category (e.g., color, space, typography) */ category: string; /** Sub-category path (e.g., interactive/default) */ @@ -60,6 +62,36 @@ function pathToCssVar(path: string[]): string { return `--goa-${path.join("-")}`; } +/** + * Check if a value is a box-shadow object (has x, y, blur, spread, color) + */ +function isBoxShadowObject( + value: unknown, +): value is { x: string; y: string; blur: string; spread: string; color: string } { + return ( + typeof value === "object" && + value !== null && + "x" in value && + "y" in value && + "blur" in value && + "spread" in value && + "color" in value + ); +} + +/** + * Convert a box-shadow object to CSS syntax + */ +function boxShadowToCss(shadow: { + x: string; + y: string; + blur: string; + spread: string; + color: string; +}): string { + return `${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.spread}px ${shadow.color}`; +} + /** * Format a token value for display */ @@ -70,15 +102,100 @@ function formatValue(value: string | number | object): string { if (typeof value === "number") { return String(value); } + // Convert box-shadow objects to CSS syntax + if (isBoxShadowObject(value)) { + return boxShadowToCss(value); + } // For complex values (like typography objects), stringify return JSON.stringify(value); } +/** + * Check if a value is a token reference (e.g., "{color.greyscale.300}") + */ +function isTokenReference(value: string): boolean { + return value.startsWith("{") && value.endsWith("}"); +} + +/** + * Parse a token reference path (e.g., "{color.greyscale.300}" -> ["color", "greyscale", "300"]) + */ +function parseTokenReference(value: string): string[] { + const path = value.slice(1, -1); // Remove { and } + return path.split("."); +} + +/** + * Resolve a token reference to its actual value. + * Follows references recursively until a concrete value is found. + */ +function resolveTokenReference( + value: string, + tokens: Record, + maxDepth = 10, +): string { + if (maxDepth <= 0) return value; // Prevent infinite loops + if (!isTokenReference(value)) return value; + + const path = parseTokenReference(value); + let current: unknown = tokens; + + for (const key of path) { + if (typeof current !== "object" || current === null) { + return value; // Path not found, return original + } + current = (current as Record)[key]; + } + + if (isTokenValue(current)) { + const resolvedValue = formatValue(current.value); + // Recursively resolve if the found value is also a reference + if (typeof resolvedValue === "string" && isTokenReference(resolvedValue)) { + return resolveTokenReference(resolvedValue, tokens, maxDepth - 1); + } + return resolvedValue; + } + + return value; // Couldn't resolve, return original +} + +/** + * Check if a value is a typography object (has fontFamily, fontSize, etc.) + */ +function isTypographyObject( + value: unknown, +): value is Record { + return ( + typeof value === "object" && + value !== null && + ("fontFamily" in value || "fontSize" in value || "fontWeight" in value) + ); +} + +/** + * Resolve a typography object by resolving each property's reference + */ +function resolveTypographyObject( + value: Record, + tokens: Record, +): Record { + const resolved: Record = {}; + for (const [key, val] of Object.entries(value)) { + if (typeof val === "string" && isTokenReference(val)) { + resolved[key] = resolveTokenReference(val, tokens); + } else { + resolved[key] = val; + } + } + return resolved; +} + /** * Recursively flatten the nested token structure */ function flattenTokensRecursive( obj: Record, + rootTokens: Record, path: string[] = [], results: FlatToken[] = [], ): FlatToken[] { @@ -90,13 +207,28 @@ function flattenTokensRecursive( const category = path[0] || key; const tokenPath = currentPath.slice(1).join("/"); const tokenType = value.type || "unknown"; + + // Keep original value, resolve for preview + const rawValue = formatValue(value.value); + let resolvedValue: string; + + // Handle typography objects specially - resolve each property + if (isTypographyObject(value.value)) { + const resolved = resolveTypographyObject(value.value as Record, rootTokens); + resolvedValue = JSON.stringify(resolved); + } else { + resolvedValue = + typeof rawValue === "string" ? resolveTokenReference(rawValue, rootTokens) : rawValue; + } + const isColor = tokenType === "color" || - (typeof value.value === "string" && value.value.startsWith("#")); + (typeof resolvedValue === "string" && resolvedValue.startsWith("#")); results.push({ name: pathToCssVar(currentPath), - value: formatValue(value.value), + value: rawValue, // Original value (may be a reference) + resolvedValue, // Resolved value for preview category, path: tokenPath, type: tokenType, @@ -105,18 +237,30 @@ function flattenTokensRecursive( }); } else if (typeof value === "object" && value !== null) { // Recurse into nested object - flattenTokensRecursive(value as Record, currentPath, results); + flattenTokensRecursive(value as Record, rootTokens, currentPath, results); } } return results; } +/** + * Component-specific token prefixes to exclude from the global tokens display. + * These are implementation details, not meant for direct consumer use. + */ +const EXCLUDED_TOKEN_PREFIXES = ["--goa-input-", "--goa-border-none", "--goa-fontVariationSettings"]; + /** * Get all design tokens flattened for grid display */ export function getAllTokens(): FlatToken[] { - return flattenTokensRecursive(globalTokens as Record); + const tokensObj = globalTokens as Record; + const allTokens = flattenTokensRecursive(tokensObj, tokensObj); + + // Filter out component-specific tokens + return allTokens.filter( + (token) => !EXCLUDED_TOKEN_PREFIXES.some((prefix) => token.name.startsWith(prefix)), + ); } /** diff --git a/docs/src/pages/index.astro b/docs/src/pages/index.astro index f1ac0a1040..f87fa911ae 100644 --- a/docs/src/pages/index.astro +++ b/docs/src/pages/index.astro @@ -49,12 +49,9 @@ import CardLite from '../components/CardLite.astro';

    Our accessible, brand-compliant components and templates help you launch faster while staying aligned with the current standard.

    - - Start using the design system - - - - + + Start using the design system +
    @@ -68,13 +65,13 @@ import CardLite from '../components/CardLite.astro'; imageUrl="/images/home/public-form-thumb.png" title="Public form" description="A pattern optimized for clarity and error prevention for public-facing applications. It includes templates for page types: Start, Task list, Question, Review, and Result." - linkTo="/examples" + linkTo="/examples?userType=citizen" />
    @@ -85,22 +82,16 @@ import CardLite from '../components/CardLite.astro';

    @@ -114,19 +105,19 @@ import CardLite from '../components/CardLite.astro'; imageUrl="/images/home/primary-users-thumb.png" title="Identify the primary users and their main tasks" description="Share the primary users and their main tasks in your digital service. Do you know your users?" - linkTo="/guidance" + linkTo="https://forms.cloud.microsoft/r/qz8XKnbcsE" />
    @@ -274,19 +265,6 @@ import CardLite from '../components/CardLite.astro'; margin: 0 0 var(--goa-space-m); } - .cta-link { - display: inline-flex; - align-items: center; - gap: var(--goa-space-2xs); - color: var(--goa-color-interactive-default); - font: var(--goa-typography-body-m); - text-decoration: none; - } - - .cta-link:hover { - text-decoration: underline; - } - .cta-image { flex: 2; min-width: 0; diff --git a/docs/src/pages/tokens/index.astro b/docs/src/pages/tokens/index.astro index f22b4505a0..02e92b0d9b 100644 --- a/docs/src/pages/tokens/index.astro +++ b/docs/src/pages/tokens/index.astro @@ -29,7 +29,7 @@ const description = 'Browse all GoA design tokens including colors, spacing, typ diff --git a/scripts/indexdocs.ts b/scripts/indexdocs.ts index d6e4f8d638..fc920a6ee2 100644 --- a/scripts/indexdocs.ts +++ b/scripts/indexdocs.ts @@ -5,12 +5,23 @@ import { glob } from "glob"; interface DocIndex { id: string; title: string; + name?: string; // For components - useSearch expects this description: string; content: string; component: string; filePath: string; urlPath: string; tags: string[]; + /** Entry type - must match what useSearch.ts expects */ + type: "component" | "example" | "token" | "page"; + /** URL slug for building links */ + slug: string; + /** Status for sorting (stable, beta, etc.) */ + status?: string; + /** Category for components */ + category?: string; + /** Categories array for examples */ + categories?: string[]; } interface FrontMatter { @@ -20,37 +31,350 @@ interface FrontMatter { [key: string]: any; } +/** + * Token category metadata for search entries + */ +interface TokenCategoryMeta { + title: string; + description: string; + tags: string[]; +} + +/** + * Metadata for each token category + */ +const TOKEN_CATEGORY_META: Record = { + color: { + title: "Color Tokens", + description: "Color design tokens for text, backgrounds, borders, interactive elements, and status indicators", + tags: ["token", "color", "design token", "palette", "theme"], + }, + opacity: { + title: "Opacity Tokens", + description: "Opacity values for overlays, disabled states, and transparency effects", + tags: ["token", "opacity", "transparency", "design token"], + }, + borderRadius: { + title: "Border Radius Tokens", + description: "Border radius values for rounded corners on cards, buttons, and containers", + tags: ["token", "border", "radius", "corners", "design token"], + }, + borderWidth: { + title: "Border Width Tokens", + description: "Border width values for outlines, dividers, and component borders", + tags: ["token", "border", "width", "stroke", "design token"], + }, + space: { + title: "Spacing Tokens", + description: "Spacing values for margins, padding, and gaps between elements", + tags: ["token", "space", "spacing", "margin", "padding", "gap", "design token"], + }, + iconSize: { + title: "Icon Size Tokens", + description: "Standard icon sizes for consistent iconography across the design system", + tags: ["token", "icon", "size", "design token"], + }, + shadow: { + title: "Shadow Tokens", + description: "Box shadow values for elevation and depth effects on cards and modals", + tags: ["token", "shadow", "elevation", "depth", "design token"], + }, + typography: { + title: "Typography Tokens", + description: "Typography presets combining font family, size, weight, and line height", + tags: ["token", "typography", "font", "text", "heading", "body", "design token"], + }, + fontFamily: { + title: "Font Family Tokens", + description: "Font family values for the design system typefaces", + tags: ["token", "font", "family", "typeface", "design token"], + }, + fontSize: { + title: "Font Size Tokens", + description: "Font size values for text hierarchy and responsive typography", + tags: ["token", "font", "size", "typography", "design token"], + }, + fontWeight: { + title: "Font Weight Tokens", + description: "Font weight values for text emphasis and hierarchy", + tags: ["token", "font", "weight", "bold", "design token"], + }, + lineHeight: { + title: "Line Height Tokens", + description: "Line height values for readable text and proper vertical rhythm", + tags: ["token", "line", "height", "leading", "typography", "design token"], + }, + letterSpacing: { + title: "Letter Spacing Tokens", + description: "Letter spacing values for text tracking adjustments", + tags: ["token", "letter", "spacing", "tracking", "typography", "design token"], + }, +}; + +/** + * Categories to exclude from search (internal implementation details) + */ +const EXCLUDED_TOKEN_CATEGORIES = [ + "input", + "border-none", + "fontVariationSettings", + "translate", + "motionCurve", + "motionDuration", + "transition", +]; + +/** + * Static page entries for docs pages (Get Started, Foundations, etc.) + * These are manually defined since Astro pages don't have easily parseable metadata. + */ +interface PageMeta { + id: string; + title: string; + description: string; + urlPath: string; + tags: string[]; + category: string; +} + +const PAGE_ENTRIES: PageMeta[] = [ + // Get Started pages + { + id: "get-started", + title: "Get started", + description: "Introduction to the GoA Design System early adopters program", + urlPath: "get-started", + tags: ["get started", "introduction", "onboarding"], + category: "get started", + }, + { + id: "get-started-developers", + title: "Get started as a developer", + description: "Developer onboarding: package setup, template repo, branches, and compatibility", + urlPath: "get-started/developers", + tags: ["get started", "developer", "setup", "installation", "packages", "npm"], + category: "get started", + }, + { + id: "get-started-designers", + title: "Get started as a designer", + description: "Designer onboarding: Figma libraries, BETA components, and illustration requests", + urlPath: "get-started/designers", + tags: ["get started", "designer", "figma", "libraries", "illustrations"], + category: "get started", + }, +]; + +/** + * Generate search index entries for static pages + */ +function generatePageEntries(): DocIndex[] { + console.log("\nIndexing static pages..."); + + const entries: DocIndex[] = PAGE_ENTRIES.map(page => ({ + id: page.id, + title: page.title, + name: page.title, + description: page.description, + content: "", + component: "", + filePath: `docs/src/pages/${page.urlPath}`, + urlPath: page.urlPath, + tags: page.tags, + type: "page" as const, + slug: page.urlPath, + status: "stable", + category: page.category, + })); + + entries.forEach(e => console.log(` ✓ Indexed: ${e.title}`)); + return entries; +} + +/** + * Convert a token path to CSS variable format + */ +function pathToCssVar(pathParts: string[]): string { + return `--goa-${pathParts.join("-")}`; +} + +/** + * Check if an object is a token value (has a 'value' property) + */ +function isTokenValue(obj: unknown): obj is { value: unknown } { + return typeof obj === "object" && obj !== null && "value" in obj; +} + +/** + * Recursively extract all token names from a category + */ +function extractTokenNames( + obj: Record, + pathParts: string[] = [], +): string[] { + const names: string[] = []; + + for (const [key, value] of Object.entries(obj)) { + const currentPath = [...pathParts, key]; + + if (isTokenValue(value)) { + names.push(pathToCssVar(currentPath)); + } else if (typeof value === "object" && value !== null) { + names.push(...extractTokenNames(value as Record, currentPath)); + } + } + + return names; +} + +/** + * Generate a human-readable description for a token based on its name + */ +function generateTokenDescription(tokenName: string, category: string): string { + // Remove --goa- prefix and category for cleaner description + const shortName = tokenName.replace(/^--goa-/, "").replace(new RegExp(`^${category}-?`), ""); + const categoryMeta = TOKEN_CATEGORY_META[category]; + const categoryLabel = categoryMeta?.title.replace(" Tokens", "").toLowerCase() || category; + + if (!shortName) { + return `${categoryMeta?.title || category} design token`; + } + + // Convert kebab-case to readable format + const readable = shortName.replace(/-/g, " "); + return `${categoryLabel} token: ${readable}`; +} + +/** + * Generate search index entries for design tokens + * Creates both category entries (for browsing) and individual token entries (for direct search) + */ +function generateTokenEntries(): DocIndex[] { + const tokenPath = path.join( + process.cwd(), + "node_modules", + "@abgov", + "design-tokens-v2", + "data", + "goa-global-design-tokens.json", + ); + + if (!fs.existsSync(tokenPath)) { + console.warn(" ⚠ Design tokens not found, skipping token indexing"); + return []; + } + + const tokens = JSON.parse(fs.readFileSync(tokenPath, "utf-8")); + const entries: DocIndex[] = []; + + console.log("\nIndexing design tokens..."); + + let totalIndividualTokens = 0; + + for (const [category, categoryTokens] of Object.entries(tokens)) { + // Skip excluded categories + if (EXCLUDED_TOKEN_CATEGORIES.includes(category)) { + continue; + } + + const meta = TOKEN_CATEGORY_META[category]; + if (!meta) { + // Skip categories without metadata (likely internal) + continue; + } + + // Extract all token names in this category + const tokenNames = extractTokenNames( + { [category]: categoryTokens }, + [], + ); + + // Add category entry (for browsing by category) + const categoryEntry: DocIndex = { + id: `tokens-${category}`, + title: meta.title, + description: meta.description, + content: tokenNames.join(" "), + component: "", + filePath: "design-tokens", + urlPath: "tokens", + tags: meta.tags, + type: "token", + slug: category, // e.g., "color", "space" - used for building URL + status: "stable", + category: category, + }; + entries.push(categoryEntry); + + // Add individual token entries (for direct search) + for (const tokenName of tokenNames) { + // Convert --goa-color-greyscale-100 to color-greyscale-100 for URL slug + const tokenSlug = tokenName.replace(/^--goa-/, ""); + + const tokenEntry: DocIndex = { + id: `token-${tokenSlug}`, + title: tokenName, // Full CSS variable name: --goa-color-greyscale-100 + name: tokenName, + description: generateTokenDescription(tokenName, category), + content: "", // Individual tokens don't need searchable content + component: "", + filePath: "design-tokens", + urlPath: "tokens", + tags: ["token", "design token", category], + type: "token", + slug: tokenSlug, // Used for URL: /tokens?search=color-greyscale-100 + status: "stable", + category: category, + }; + entries.push(tokenEntry); + totalIndividualTokens++; + } + + console.log(` ✓ Indexed: ${meta.title} (${tokenNames.length} tokens)`); + } + + console.log(` → Total individual tokens indexed: ${totalIndividualTokens}`); + + return entries; +} + async function generateSearchIndex() { - const docsPattern = "docs/src/pages/components/**/*.mdx"; - const docFiles = await glob(docsPattern, { + // Index component documentation from content folder + const componentsPattern = "docs/src/content/components/*.mdx"; + const componentFiles = await glob(componentsPattern, { cwd: process.cwd(), nodir: true, }); - console.log(`Found ${docFiles.length} documentation files`); + console.log(`Found ${componentFiles.length} component documentation files`); const index: DocIndex[] = []; - for (const filePath of docFiles) { + for (const filePath of componentFiles) { try { const fullPath = path.join(process.cwd(), filePath); const content = fs.readFileSync(fullPath, "utf-8"); const componentName = extractComponentName(filePath); const { frontMatter, bodyContent } = parseFrontMatter(content); - const title = frontMatter.title || extractTitle(bodyContent); + const title = frontMatter.name || frontMatter.title || extractTitle(bodyContent); const tags = frontMatter.tags || []; const description = frontMatter.description || extractDescription(bodyContent); const docEntry: DocIndex = { id: componentName, title: title || componentName, + name: title || componentName, // useSearch expects 'name' for components description, - content: bodyContent, // TODO: should we extract out everything after the title/description? + content: bodyContent, component: componentName, filePath: filePath, urlPath: `components/${componentName}`, tags: tags, + type: "component", + slug: componentName, + status: frontMatter.status || "stable", + category: frontMatter.category || "general", }; index.push(docEntry); @@ -60,6 +384,64 @@ async function generateSearchIndex() { } } + // Index examples from content folder + const examplesPattern = "docs/src/content/examples/*/index.mdx"; + const exampleFiles = await glob(examplesPattern, { + cwd: process.cwd(), + nodir: true, + }); + + console.log(`\nFound ${exampleFiles.length} example documentation files`); + + for (const filePath of exampleFiles) { + try { + const fullPath = path.join(process.cwd(), filePath); + const content = fs.readFileSync(fullPath, "utf-8"); + + // Extract slug from path (e.g., "add-a-filter-chip" from "docs/src/content/examples/add-a-filter-chip/index.mdx") + const pathParts = filePath.split(path.sep); + const exampleSlug = pathParts[pathParts.length - 2]; + + const { frontMatter, bodyContent } = parseFrontMatter(content); + const title = frontMatter.title || exampleSlug; + const tags = frontMatter.tags || []; + const description = frontMatter.description || extractDescription(bodyContent); + + // Handle components field - could be array or undefined + const components = Array.isArray(frontMatter.components) + ? frontMatter.components.join(", ") + : ""; + + const docEntry: DocIndex = { + id: `example-${exampleSlug}`, + title: title, + description, + content: bodyContent, + component: components, + filePath: filePath, + urlPath: `examples/${exampleSlug}`, + tags: [...tags, "example", "pattern"], + type: "example", + slug: exampleSlug, + status: frontMatter.status || "published", + categories: Array.isArray(frontMatter.categories) ? frontMatter.categories : [], + }; + + index.push(docEntry); + console.log(` ✓ Indexed: ${title}`); + } catch (error) { + console.error(` ✗ Error processing ${filePath}:`, error); + } + } + + // Add design token entries + const tokenEntries = generateTokenEntries(); + index.push(...tokenEntries); + + // Add static page entries (Get Started, etc.) + const pageEntries = generatePageEntries(); + index.push(...pageEntries); + const outputPath = path.join(process.cwd(), "docs", "search-index.json"); const publicOutputPath = path.join( process.cwd(), From 0de3eab55a4c2eb469f85858d07e3973be4c653f Mon Sep 17 00:00:00 2001 From: Benji Franck Date: Thu, 5 Mar 2026 10:16:33 -0700 Subject: [PATCH 039/103] feat(#2893): add open prop to SideMenuGroup Closes #2893 Co-Authored-By: GitHub Copilot --- apps/prs/angular/src/app/app.component.html | 1 + apps/prs/angular/src/app/app.routes.ts | 2 + .../features/feat3398/feat3398.component.html | 62 ++++++++++ .../features/feat3398/feat3398.component.ts | 30 +++++ apps/prs/react/src/app/app.tsx | 1 + apps/prs/react/src/main.tsx | 2 + .../react/src/routes/features/feat3398.tsx | 88 ++++++++++++++ .../src/data/configurations/work-side-menu.ts | 80 +++++++------ .../work-side-menu-group.spec.ts | 21 +++- .../work-side-menu-group.ts | 3 + .../specs/work-side-menu.browser.spec.tsx | 109 ++++++++++++++++-- .../work-side-menu-group.spec.tsx | 20 ++++ .../work-side-menu-group.tsx | 3 + .../work-side-menu/WorkSideMenu.svelte | 7 +- .../work-side-menu/WorkSideMenuGroup.spec.ts | 41 +++++++ .../work-side-menu/WorkSideMenuGroup.svelte | 34 ++++-- 16 files changed, 444 insertions(+), 60 deletions(-) create mode 100644 apps/prs/angular/src/routes/features/feat3398/feat3398.component.html create mode 100644 apps/prs/angular/src/routes/features/feat3398/feat3398.component.ts create mode 100644 apps/prs/react/src/routes/features/feat3398.tsx diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index 29febdb01e..1a80c74ecb 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -111,6 +111,7 @@ 3241 3306 3370 + 3398 Work side menu group open prop v2 header icons 3396 Text heading-2xs size 3407 Skip Focus on Tab diff --git a/apps/prs/angular/src/app/app.routes.ts b/apps/prs/angular/src/app/app.routes.ts index 551c7ad123..d16d99e2df 100644 --- a/apps/prs/angular/src/app/app.routes.ts +++ b/apps/prs/angular/src/app/app.routes.ts @@ -75,6 +75,7 @@ import { Feat3306Component } from "../routes/features/feat3306/feat3306.componen import { Feat3370Component } from "../routes/features/feat3370/feat3370.component"; import { Feat3407SkipOnFocusTabComponent } from "../routes/features/feat3407SkipOnFocusTab/feat3407-skip-on-focus-tab.component"; import { Feat3407StackOnMobileComponent } from "../routes/features/feat3407StackOnMobile/feat3407-stack-on-mobile.component"; +import { Feat3398Component } from "../routes/features/feat3398/feat3398.component"; import { FeatV2IconsComponent } from "../routes/features/featV2Icons/feat-v2-icons.component"; import { Feat3396Component } from "../routes/features/feat3396/feat3396.component"; import { FeatV2CheckboxComponent } from "../routes/features/featV2Checkbox/featV2Checkbox.component"; @@ -160,4 +161,5 @@ export const appRoutes: Route[] = [ { path: "features/3407-skip-on-focus-tab", component: Feat3407SkipOnFocusTabComponent }, { path: "features/3407-stack-on-mobile", component: Feat3407StackOnMobileComponent }, { path: "features/v2-checkbox", component: FeatV2CheckboxComponent }, + { path: "features/3398", component: Feat3398Component }, ]; diff --git a/apps/prs/angular/src/routes/features/feat3398/feat3398.component.html b/apps/prs/angular/src/routes/features/feat3398/feat3398.component.html new file mode 100644 index 0000000000..2b29187505 --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3398/feat3398.component.html @@ -0,0 +1,62 @@ +
    + Feature 3398: Work Side Menu Group open prop + + Use the button below to toggle the side menu group open and closed. + + + Scenario 1: Open and close a group + The button should toggle the group open and closed. + +
    + +
    + + + + {{ groupOpen ? "Close group" : "Open group" }} + + + + + + + + + Scenario 2: Open a group with a current item + + The Features group should be open because it has a current menu item. The + Bugs group should remain closed. + + +
    + +
    + + + + + + + + + + + +
    diff --git a/apps/prs/angular/src/routes/features/feat3398/feat3398.component.ts b/apps/prs/angular/src/routes/features/feat3398/feat3398.component.ts new file mode 100644 index 0000000000..fbd95406dd --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3398/feat3398.component.ts @@ -0,0 +1,30 @@ +import { CommonModule } from "@angular/common"; +import { Component } from "@angular/core"; +import { + GoabButton, + GoabText, + GoabxWorkSideMenu, + GoabxWorkSideMenuGroup, + GoabxWorkSideMenuItem, +} from "@abgov/angular-components"; + +@Component({ + standalone: true, + selector: "abgov-feat3398", + templateUrl: "./feat3398.component.html", + imports: [ + CommonModule, + GoabButton, + GoabText, + GoabxWorkSideMenu, + GoabxWorkSideMenuGroup, + GoabxWorkSideMenuItem, + ], +}) +export class Feat3398Component { + groupOpen = false; + + toggleGroup(): void { + this.groupOpen = !this.groupOpen; + } +} diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index 441917ae00..a9be929254 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -130,6 +130,7 @@ export function App() { 3370 Clear calendar day selection 3396 Text heading-2xs size 3399 V2 Checkbox Spacing + 3398 Group open prop A diff --git a/apps/prs/react/src/main.tsx b/apps/prs/react/src/main.tsx index eb910c1608..972d30310e 100644 --- a/apps/prs/react/src/main.tsx +++ b/apps/prs/react/src/main.tsx @@ -82,6 +82,7 @@ import { Feat3370Route } from "./routes/features/feat3370"; import { Feat3396Route } from "./routes/features/feat3396"; import { Feat3229Route } from "./routes/features/feat3229"; import { FeatV2CheckboxRoute } from "./routes/features/featV2Checkbox"; +import { Feat3398Route } from "./routes/features/feat3398"; const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); @@ -171,6 +172,7 @@ root.render( } /> } /> } /> + } /> diff --git a/apps/prs/react/src/routes/features/feat3398.tsx b/apps/prs/react/src/routes/features/feat3398.tsx new file mode 100644 index 0000000000..d4a8e2e34a --- /dev/null +++ b/apps/prs/react/src/routes/features/feat3398.tsx @@ -0,0 +1,88 @@ +import React, { useState } from "react"; +import { GoabButton, GoabText } from "@abgov/react-components"; +import { + GoabxWorkSideMenu, + GoabxWorkSideMenuGroup, + GoabxWorkSideMenuItem, +} from "@abgov/react-components/experimental"; + +export function Feat3398Route() { + const [groupOpen, setGroupOpen] = useState(false); + + return ( +
    + Feature 3398: Work Side Menu Group open prop + + Use the button below to toggle the side menu group open and closed. + + + Scenario 1: Open and close a group + The button should toggle the group open and closed. + +
    + + setGroupOpen(!groupOpen)} + > + {groupOpen ? "Close group" : "Open group"} + + + + + + + + } + /> +
    + + Scenario 2: Open a group with a current item + + The Features group should be open because it has a current menu item. The{" "} + Bugs group should remain closed. + + +
    + + + + + + + + + + + + + + } + /> +
    +
    + ); +} diff --git a/docs/src/data/configurations/work-side-menu.ts b/docs/src/data/configurations/work-side-menu.ts index 9a55eb48bf..cfd4fadd7b 100644 --- a/docs/src/data/configurations/work-side-menu.ts +++ b/docs/src/data/configurations/work-side-menu.ts @@ -4,18 +4,18 @@ * WorkSideMenu provides navigation for worker applications. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const workSideMenuConfigurations: ComponentConfigurations = { - componentSlug: 'work-side-menu', - componentName: 'Work side menu', - defaultConfigurationId: 'basic', + componentSlug: "work-side-menu", + componentName: "Work side menu", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic work side menu', - description: 'Side navigation for internal apps', + id: "basic", + name: "Basic work side menu", + description: "Side navigation for internal apps", code: { react: ` - + - + } -/>`, - angular: ` -
    - - - - - - - +/> + `, + angular: ` + + + + + + + + + + + + `, + webComponents: ` + +
    + + + + + + +
    -`, - webComponents: ` - - - - - - - -`, +
    + `, }, }, ], diff --git a/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.spec.ts b/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.spec.ts index 78901a3e36..8a71062dca 100644 --- a/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.spec.ts +++ b/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.spec.ts @@ -7,18 +7,25 @@ import { By } from "@angular/platform-browser"; standalone: true, imports: [GoabxWorkSideMenuGroup], template: ` - + `, }) class TestWorkSideMenuGroupComponent { - heading = "Test heading"; - icon = "star"; - testId = "test-id"; + heading?: string; + icon?: string; + testId?: string; + open?: boolean; } describe("GoabxWorkSideMenuGroup", () => { let fixture: ComponentFixture; + let component: TestWorkSideMenuGroupComponent; beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ @@ -26,6 +33,11 @@ describe("GoabxWorkSideMenuGroup", () => { }).compileComponents(); fixture = TestBed.createComponent(TestWorkSideMenuGroupComponent); + component = fixture.componentInstance; + component.heading = "Test heading"; + component.icon = "star"; + component.testId = "test-id"; + component.open = true; fixture.detectChanges(); tick(); // Wait for setTimeout in ngOnInit @@ -39,5 +51,6 @@ describe("GoabxWorkSideMenuGroup", () => { expect(menuGroupElement.getAttribute("heading")).toBe("Test heading"); expect(menuGroupElement.getAttribute("icon")).toBe("star"); expect(menuGroupElement.getAttribute("testid")).toBe("test-id"); + expect(menuGroupElement.hasAttribute("open")).toBe(true); }); }); diff --git a/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.ts b/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.ts index 4cc1d83917..e381e7cfbb 100644 --- a/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.ts +++ b/libs/angular-components/src/experimental/work-side-menu-group/work-side-menu-group.ts @@ -1,6 +1,7 @@ import { GoabIconType } from "@abgov/ui-components-common"; import { CUSTOM_ELEMENTS_SCHEMA, + booleanAttribute, Component, Input, OnInit, @@ -16,6 +17,7 @@ import { @@ -27,6 +29,7 @@ import { export class GoabxWorkSideMenuGroup implements OnInit { @Input({ required: true }) heading!: string; @Input({ required: true }) icon!: GoabIconType; + @Input({ transform: booleanAttribute }) open?: boolean; @Input() testId?: string; isReady = false; diff --git a/libs/react-components/specs/work-side-menu.browser.spec.tsx b/libs/react-components/specs/work-side-menu.browser.spec.tsx index 640783141f..c0ea22165d 100644 --- a/libs/react-components/specs/work-side-menu.browser.spec.tsx +++ b/libs/react-components/specs/work-side-menu.browser.spec.tsx @@ -1,7 +1,11 @@ import { render } from "vitest-browser-react"; import { useState } from "react"; import { GoabButton } from "../src"; -import { GoabxWorkSideMenu, GoabxWorkSideMenuItem } from "../src/experimental"; +import { + GoabxWorkSideMenu, + GoabxWorkSideMenuItem, + GoabxWorkSideMenuGroup, +} from "../src/experimental"; import { expect, describe, it, vi } from "vitest"; import { page } from "@vitest/browser/context"; @@ -94,9 +98,6 @@ describe("WorkSideMenu", () => { ); }; const result = render(); - - expect(result.getByTestId("work-side-menu")).toBeTruthy(); - const menu = result.getByTestId("work-side-menu"); const toggle = result.getByTestId("toggle-menu"); @@ -130,8 +131,6 @@ describe("WorkSideMenu", () => { ); }; const result = render(); - expect(result.getByTestId("work-side-menu")).toBeTruthy(); - const item1 = result.getByTestId("menu-item-1"); await item1.click(); @@ -160,9 +159,6 @@ describe("WorkSideMenu", () => { ); }; const result = render(); - - expect(result.getByTestId("work-side-menu")).toBeTruthy(); - const menu = result.getByTestId("work-side-menu"); const background = result.getByTestId("work-side-menu-background"); @@ -201,9 +197,6 @@ describe("WorkSideMenu", () => { ); }; const result = render(); - - expect(result.getByTestId("work-side-menu")).toBeTruthy(); - const menu = result.getByTestId("work-side-menu"); const button = result.getByText("Toggle menu"); @@ -213,4 +206,96 @@ describe("WorkSideMenu", () => { }); }); }); + + describe("WorkSideMenuGroup", () => { + let isOpen = false; + const Component = () => { + return ( + + + + + + + + + + } + open={true} + /> + ); + }; + + it("should render a group expanded when open is true", async () => { + isOpen = true; + await page.viewport(1024, 768); + + const result = render(); + const group = result.getByTestId("test-group"); + + await vi.waitFor(() => { + const heading = group.getByText("Group heading"); + const detailsEl = heading.element().closest("details"); + const item = result.getByTestId("test-item"); + + expect(detailsEl).toHaveAttribute("open"); + expect(item).toBeVisible(); + }); + }); + + it("should render a group collapsed when open is false", async () => { + isOpen = false; + await page.viewport(1024, 768); + + const result = render(); + const group = result.getByTestId("test-group"); + + await vi.waitFor(() => { + const heading = group.getByText("Group heading"); + const detailsEl = heading.element().closest("details"); + const item = result.getByTestId("test-item"); + + expect(detailsEl).not.toHaveAttribute("open"); + expect(item).not.toBeVisible(); + }); + }); + + it("should render a group expanded when it has a current menu item", async () => { + isOpen = false; + await page.viewport(1024, 768); + + window.history.pushState({}, "", "/test-url"); + window.dispatchEvent(new PopStateEvent("popstate")); + + const result = render(); + const group = result.getByTestId("test-group"); + + await vi.waitFor(() => { + const heading = group.getByText("Group heading"); + const detailsEl = heading.element().closest("details"); + const item = result.getByTestId("test-item"); + const link = item.element().querySelector("a"); + + expect(detailsEl).toHaveAttribute("open"); + expect(item).toBeVisible(); + expect(link?.classList.contains("current")).toBe(true); + }); + }); + }); }); diff --git a/libs/react-components/src/experimental/work-side-menu-group/work-side-menu-group.spec.tsx b/libs/react-components/src/experimental/work-side-menu-group/work-side-menu-group.spec.tsx index b4786252e9..fbeb833888 100644 --- a/libs/react-components/src/experimental/work-side-menu-group/work-side-menu-group.spec.tsx +++ b/libs/react-components/src/experimental/work-side-menu-group/work-side-menu-group.spec.tsx @@ -17,4 +17,24 @@ describe("WorkSideMenuGroup", () => { expect(menuGroup?.getAttribute("icon")).toBe("star"); expect(menuGroup?.getAttribute("testid")).toBe("foo"); }); + + it("should set open attribute", () => { + const { baseElement } = render( + , + ); + const menuGroup = baseElement.querySelector("goa-work-side-menu-group"); + expect(menuGroup?.hasAttribute("open")).toBe(true); + }); + + it("should be closed by default", () => { + const { baseElement } = render( + , + ); + const menuGroup = baseElement.querySelector("goa-work-side-menu-group"); + expect(menuGroup?.getAttribute("open")).toBeNull(); + }); }); diff --git a/libs/react-components/src/experimental/work-side-menu-group/work-side-menu-group.tsx b/libs/react-components/src/experimental/work-side-menu-group/work-side-menu-group.tsx index 5d498c68e4..9e57a591bc 100644 --- a/libs/react-components/src/experimental/work-side-menu-group/work-side-menu-group.tsx +++ b/libs/react-components/src/experimental/work-side-menu-group/work-side-menu-group.tsx @@ -5,6 +5,7 @@ interface WCProps { heading: string; icon: GoabIconType; testid?: string; + open?: boolean; } declare module "react" { @@ -19,6 +20,7 @@ declare module "react" { export interface GoabWorkSideMenuGroupProps { heading: string; icon: GoabIconType; + open?: boolean; testId?: string; children?: React.ReactNode; } @@ -28,6 +30,7 @@ export function GoabxWorkSideMenuGroup(props: GoabWorkSideMenuGroupProps): JSX.E {props.children} diff --git a/libs/web-components/src/components/work-side-menu/WorkSideMenu.svelte b/libs/web-components/src/components/work-side-menu/WorkSideMenu.svelte index dc70d723f0..8a187000be 100644 --- a/libs/web-components/src/components/work-side-menu/WorkSideMenu.svelte +++ b/libs/web-components/src/components/work-side-menu/WorkSideMenu.svelte @@ -17,7 +17,7 @@ diff --git a/libs/web-components/src/components/table/TableSortHeader.spec.ts b/libs/web-components/src/components/table/TableSortHeader.spec.ts index 61c327b6cb..d7b4fbb9af 100644 --- a/libs/web-components/src/components/table/TableSortHeader.spec.ts +++ b/libs/web-components/src/components/table/TableSortHeader.spec.ts @@ -16,7 +16,7 @@ describe("GoATableSortHeader", () => { const icon = container.querySelector("goa-icon"); expect(button.classList.contains("asc")); - expect(icon.getAttribute("type")).toBe("caret-up") + expect(icon.getAttribute("type")).toBe("arrow-up") }) it('binds desc direction param', async () => { @@ -26,6 +26,6 @@ describe("GoATableSortHeader", () => { const icon = container.querySelector("goa-icon"); expect(button.classList.contains("desc")); - expect(icon.getAttribute("type")).toBe("caret-down") + expect(icon.getAttribute("type")).toBe("arrow-down") }) }) diff --git a/libs/web-components/src/components/table/TableSortHeader.svelte b/libs/web-components/src/components/table/TableSortHeader.svelte index f4a751f4a8..d8813366c4 100644 --- a/libs/web-components/src/components/table/TableSortHeader.svelte +++ b/libs/web-components/src/components/table/TableSortHeader.svelte @@ -1,22 +1,41 @@ - + - From a1344489e2b4b1f3e0502aae147968be5aec9076 Mon Sep 17 00:00:00 2001 From: Eric Hoff Date: Tue, 10 Mar 2026 08:41:18 -0600 Subject: [PATCH 041/103] feat(#3569): fix the PushDrawer open prop so the docs site works (#3542) --- libs/react-components/src/lib/push-drawer/push-drawer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/react-components/src/lib/push-drawer/push-drawer.tsx b/libs/react-components/src/lib/push-drawer/push-drawer.tsx index 232d07c9be..e8d3a117f4 100644 --- a/libs/react-components/src/lib/push-drawer/push-drawer.tsx +++ b/libs/react-components/src/lib/push-drawer/push-drawer.tsx @@ -53,7 +53,7 @@ export function GoabPushDrawer({ From ee2816e935fd6fdf026cb80dcc56c77ff4e8c52e Mon Sep 17 00:00:00 2001 From: Dustin Nielsen Date: Tue, 10 Mar 2026 10:40:19 -0600 Subject: [PATCH 042/103] feat: Rewrote Popover using Popover and Anchor Position API (#3478) Co-authored-by: Vanessa Tran --- apps/prs/angular/src/app/app.component.html | 1 + apps/prs/angular/src/app/app.routes.ts | 2 + .../features/feat3478/feat3478.component.html | 370 +++++++++++++ .../features/feat3478/feat3478.component.ts | 108 ++++ apps/prs/react/src/app/app.tsx | 6 +- apps/prs/react/src/main.tsx | 12 +- .../react/src/routes/features/feat3478.tsx | 486 ++++++++++++++++++ .../specs/app-header-menu.browser.spec.tsx | 74 +++ .../specs/modal.browser.spec.tsx | 86 +++- .../specs/popover.browser.spec.tsx | 212 ++++++-- .../src/components/calendar/Calendar.svelte | 2 - .../src/components/dropdown/Dropdown.svelte | 25 +- .../components/menu-button/MenuButton.svelte | 1 - .../src/components/popover/Popover.svelte | 484 ++++++----------- .../src/components/popover/popover.spec.ts | 87 +++- vitest.web-component.setup.ts | 27 + 16 files changed, 1564 insertions(+), 419 deletions(-) create mode 100644 apps/prs/angular/src/routes/features/feat3478/feat3478.component.html create mode 100644 apps/prs/angular/src/routes/features/feat3478/feat3478.component.ts create mode 100644 apps/prs/react/src/routes/features/feat3478.tsx create mode 100644 libs/react-components/specs/app-header-menu.browser.spec.tsx diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index 5deb178ee2..6c2b2b82d6 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -118,6 +118,7 @@ 3407 Skip Focus on Tab 3407 Tabs Orientation 3399 V2 Checkbox Spacing + 3478 Popover API Rewrite diff --git a/apps/prs/angular/src/app/app.routes.ts b/apps/prs/angular/src/app/app.routes.ts index a9824d5a7c..10063d9d24 100644 --- a/apps/prs/angular/src/app/app.routes.ts +++ b/apps/prs/angular/src/app/app.routes.ts @@ -80,6 +80,7 @@ import { Feat3398Component } from "../routes/features/feat3398/feat3398.componen import { FeatV2IconsComponent } from "../routes/features/featV2Icons/feat-v2-icons.component"; import { Feat3396Component } from "../routes/features/feat3396/feat3396.component"; import { FeatV2CheckboxComponent } from "../routes/features/featV2Checkbox/featV2Checkbox.component"; +import { Feat3478Component } from "../routes/features/feat3478/feat3478.component"; export const appRoutes: Route[] = [ { path: "everything", component: EverythingComponent }, @@ -164,4 +165,5 @@ export const appRoutes: Route[] = [ { path: "features/3407-stack-on-mobile", component: Feat3407StackOnMobileComponent }, { path: "features/v2-checkbox", component: FeatV2CheckboxComponent }, { path: "features/3398", component: Feat3398Component }, + { path: "features/3478", component: Feat3478Component }, ]; diff --git a/apps/prs/angular/src/routes/features/feat3478/feat3478.component.html b/apps/prs/angular/src/routes/features/feat3478/feat3478.component.html new file mode 100644 index 0000000000..de6fa413cd --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3478/feat3478.component.html @@ -0,0 +1,370 @@ +
    + Feature #3478: Popover API Rewrite + Test Cases + + + Calendar + + + + + + Popover + + Popover with Close Button (Focus Trap test) + + Open the popover and verify Tab key cycles focus within the popover content (focus + trap). Click the Close button inside to close. + + + + Open Popover + +

    This popover has buttons inside. Tab between them to test focus trap.

    + + + Action + + + Close Popover + + +
    + + Popover Playground + + Modify popover properties dynamically to verify positioning, sizing, and padding work + correctly after the rewrite. + + +
    + + + Click me + + Popover content with dynamic properties. + + Max Width: {{ popoverMaxWidth || "(default)" }} | Min Width: + {{ popoverMinWidth || "(none)" }} | Position: {{ popoverPosition }} | Padded: + {{ popoverPadded ? "Yes" : "No" }} + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Menu Button + + Test Menu Button: Press Enter and arrow up and down see whether Menu Button works as + expected. + + +
    + Short actions: + + + + +
    +
    + Many actions with long text: + + + + + + + +
    +
    + + +
    + Dropdown + + Standard Dropdown + + Dropdown controls its popover by setting open="true"/"false". Click it to verify the + option list appears. If the open prop is missing, the Dropdown will not show its + options. + + + + + + + Selected: {{ modalDropdownValue || "(none)" }} + + Filterable Dropdown + + Focus the input and press Space — it should type a space, not toggle the popover. + + + + + + + + + +
    + Edge Cases + + + Test 1: Popover in Modal (z-index fix) + + Previously, position: absolute and z-index: 99 on the popover content caused dropdowns + and date pickers inside modals to render behind or outside the modal. The native + Popover API renders in the top layer, fixing this. Click the button below to open a + modal with a Dropdown and DatePicker inside. + + Open Modal with Popover Components + + + The Dropdown and DatePicker below should render their popovers correctly above the + modal — not clipped or hidden behind it. + + + + + + + + + + +
    + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis + nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + + + Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia + deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus + error sit voluptatem accusantium doloremque laudantium. + +
    + + + + +
    +
    + + + + + Test 2: AppHeaderMenu closes on navigation + + The "Services" and "Account" menus in the header above use + goab-app-header-menu, which uses goa-popover internally. Open a menu, then click a + link inside it. The page content will change but the header stays — verify the menu + popover closed. This is to test handleUrlChange inside the Popover.svelte + + + + Test 3: Multiple Popovers + + Opening one popover should close others (popover="auto" behavior). + + + + Popover A + Content A + + + Popover B + Content B + + + Popover C + Content C + + + + + Test 4: #3499 Dismissing Notification breaks AppHeaderMenu + + When a Notification banner is dismissed (removed from the DOM), it should not break + the AppHeaderMenu popover. Steps to reproduce: dismiss the notification below, then + try opening the AppHeaderMenu in the header. It should still work. + + + Menu Item 1 + Menu Item 2 + Menu Item 3 + + @if (showBanner) { + + Dismiss this notification, then verify AppHeaderMenu still works. + + } + @if (!showBanner) { + + Notification dismissed. Now open the AppHeaderMenu above — it should still function + correctly. + + + Reset notification + + } + + + Test 5: #3067 Focus issues with Popover + + After closing a popover with Escape, focus should return to the trigger element. + Steps: 1) Focus the button below, 2) Press Enter to open the popover, 3) Press Escape + to close, 4) The button should still be focused (yellow border visible), 5) Press Tab + — the next interactive element should be selected, not the popover. + + + + Focus Test Button + Press Escape to close. Focus should return to the button. + + Next Focusable Element + + + + Test 6: #3062 Popover maxWidth not respected above a button + + When a Popover is placed directly above a goab-button or goab-input in the DOM, it + should still respect the maxWidth property. Both popovers below should have the same + width (default 320px). Previously the one above the button would ignore maxWidth. + + + + + Show Popover + + This popover is above the button. It should respect maxWidth (320px). + + + Submit Form + + + + Popover Test + + This popover is below the button. It should also respect maxWidth + (320px). + + +
    diff --git a/apps/prs/angular/src/routes/features/feat3478/feat3478.component.ts b/apps/prs/angular/src/routes/features/feat3478/feat3478.component.ts new file mode 100644 index 0000000000..78c84c0110 --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3478/feat3478.component.ts @@ -0,0 +1,108 @@ +import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; +import { + GoabBlock, + GoabButton, + GoabCheckbox, + GoabDatePicker, + GoabDetails, + GoabDivider, + GoabDropdown, + GoabDropdownItem, + GoabFormItem, + GoabInput, + GoabMenuAction, + GoabMenuButton, + GoabModal, + GoabNotification, + GoabPopover, + GoabText, + GoabAppHeaderMenu, +} from "@abgov/angular-components"; +import { + GoabCheckboxOnChangeDetail, + GoabDatePickerOnChangeDetail, + GoabDropdownOnChangeDetail, + GoabInputOnChangeDetail, + GoabMenuButtonOnActionDetail, +} from "@abgov/ui-components-common"; + +@Component({ + standalone: true, + selector: "abgov-feat3478", + templateUrl: "./feat3478.component.html", + schemas: [CUSTOM_ELEMENTS_SCHEMA], + imports: [ + GoabBlock, + GoabButton, + GoabCheckbox, + GoabDatePicker, + GoabDetails, + GoabDivider, + GoabDropdown, + GoabDropdownItem, + GoabFormItem, + GoabInput, + GoabMenuAction, + GoabMenuButton, + GoabModal, + GoabNotification, + GoabPopover, + GoabText, + GoabAppHeaderMenu, + ], +}) +export class Feat3478Component { + modalOpen = false; + modalDropdownValue = ""; + modalDateValue: string | Date = ""; + + popoverMaxWidth = "320px"; + popoverMinWidth = ""; + popoverPosition: "above" | "below" | "auto" = "auto"; + popoverPadded = true; + showBanner = true; + + onDateChange(detail: GoabDatePickerOnChangeDetail) { + console.log("DatePicker changed:", detail); + } + + onModalDropdownChange(detail: GoabDropdownOnChangeDetail) { + this.modalDropdownValue = detail.value ?? ""; + } + + onModalDateChange(detail: GoabDatePickerOnChangeDetail) { + this.modalDateValue = detail.valueStr; + } + + onMenuAction(detail: GoabMenuButtonOnActionDetail) { + console.log("Action:", detail); + } + + onFilterableChange(detail: GoabDropdownOnChangeDetail) { + console.log("Filterable selected:", detail.value); + } + + onMaxWidthChange(detail: GoabInputOnChangeDetail) { + this.popoverMaxWidth = detail.value; + } + + onMinWidthChange(detail: GoabInputOnChangeDetail) { + this.popoverMinWidth = detail.value; + } + + onPositionChange(detail: GoabDropdownOnChangeDetail) { + this.popoverPosition = detail.value as "above" | "below" | "auto"; + } + + onPaddedChange(detail: GoabCheckboxOnChangeDetail) { + this.popoverPadded = detail.checked; + } + + dismissNotification() { + this.showBanner = false; + } + + resetNotification() { + this.showBanner = true; + } +} diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index 2e49337cec..9a06068dfd 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -16,9 +16,10 @@ export function App() {
    - Home - + {/* Verify AppHeaderMenu still works after Popover API refactor (PR #3478) */} + bug2720 + Popover Test Dropdown expanding ...inside Container @@ -132,6 +133,7 @@ export function App() { 3407 Skip Focus on Tab 3407 Tabs Orientation 3398 Group open prop + 3478 Popover API Rewrite A diff --git a/apps/prs/react/src/main.tsx b/apps/prs/react/src/main.tsx index 1aa291c494..b787ba2e11 100644 --- a/apps/prs/react/src/main.tsx +++ b/apps/prs/react/src/main.tsx @@ -84,6 +84,7 @@ import { Feat3396Route } from "./routes/features/feat3396"; import { Feat3229Route } from "./routes/features/feat3229"; import { FeatV2CheckboxRoute } from "./routes/features/featV2Checkbox"; import { Feat3398Route } from "./routes/features/feat3398"; +import { Feat3478Route } from "./routes/features/feat3478"; const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); @@ -171,10 +172,17 @@ root.render( } /> } /> } /> - } /> - } /> + } + /> + } + /> } /> } /> + } /> diff --git a/apps/prs/react/src/routes/features/feat3478.tsx b/apps/prs/react/src/routes/features/feat3478.tsx new file mode 100644 index 0000000000..214d5b0bb5 --- /dev/null +++ b/apps/prs/react/src/routes/features/feat3478.tsx @@ -0,0 +1,486 @@ +/** + * PR #3478: Popover API Rewrite + * + * Rewrote goa-popover to use the native HTML Popover API + CSS Anchor Positioning API. + * This test page verifies popover behavior across various scenarios. + */ + +import { useState } from "react"; +import { + GoabBlock, + GoabText, + GoabDivider, + GoabDetails, + GoabButton, + GoabModal, + GoabDropdown, + GoabDropdownItem, + GoabDatePicker, + GoabFormItem, + GoabInput, + GoabCheckbox, + GoabPopover, + GoabMenuButton, + GoabMenuAction, + GoabNotification, + GoabAppHeaderMenu, +} from "@abgov/react-components"; + +export function Feat3478Route() { + const [modalOpen, setModalOpen] = useState(false); + const [modalDropdownValue, setModalDropdownValue] = useState(""); + const [modalDateValue, setModalDateValue] = useState(""); + + // Popover playground controls + const [popoverMaxWidth, setPopoverMaxWidth] = useState("320px"); + const [popoverMinWidth, setPopoverMinWidth] = useState(""); + const [popoverPosition, setPopoverPosition] = useState<"above" | "below" | "auto">( + "auto", + ); + const [popoverPadded, setPopoverPadded] = useState(true); + const [showBanner, setShowBanner] = useState(true); + + return ( +
    + + Feature #3478: Popover API Rewrite + + Test Cases + + Calendar + + + console.log("DatePicker changed:", detail)} + name="item" + value={new Date(2026, 2, 3)} + /> + + + + Popover + + + Popover with Close Button (Focus Trap test) + + Open the popover and verify Tab key cycles focus within the popover content (focus + trap). Click the Close button inside to close. + + Open Popover} minWidth="250px"> +

    This popover has buttons inside. Tab between them to test focus trap.

    + + console.log("Action clicked")} + > + Action + + + Close Popover + + +
    + + Popover Playground + + Modify popover properties dynamically to verify positioning, sizing, and padding + work correctly after the rewrite. + + +
    + Click me} + maxWidth={popoverMaxWidth || undefined} + minWidth={popoverMinWidth || undefined} + position={popoverPosition} + padded={popoverPadded} + > + Popover content with dynamic properties. + + Max Width: {popoverMaxWidth || "(default)"} | Min Width:{" "} + {popoverMinWidth || "(none)"} | Position: {popoverPosition} | Padded:{" "} + {popoverPadded ? "Yes" : "No"} + + +
    + + + + + + setPopoverMaxWidth(detail.value)} + /> + + + setPopoverMinWidth(detail.value)} + /> + + + + + + setPopoverPosition(detail.value as "above" | "below" | "auto") + } + > + + + + + + + setPopoverPadded(detail.checked)} + /> + + + + + + + Menu Button + + + Test Menu Button: Press Enter and arrow up and down see whether Menu Button works + as expected. + + +
    + + Short actions: + + console.log("Action:", detail)} + > + + + +
    +
    + + Many actions with long text: + + console.log("Action:", detail)} + > + + + + + + + + + + + +
    +
    + + Menu button at the bottom of the page (scroll down): + + + This one is placed lower on the page. Open it and check whether the page + scrolls when the focus trap kicks in. + +
    +
    + + + Dropdown + + + Standard Dropdown + + Dropdown controls its popover by setting open="true"/"false". + Click it to verify the option list appears. If the open prop is missing, the + Dropdown will not show its options. +
    + Test to make sure when we click an option (or Enter to select an option), Dropdown + will close (test open dynamically set by Dropdown works in Popover) +
    + setModalDropdownValue(detail.value ?? "")} + > + + + + + Selected: {modalDropdownValue || "(none)"} + + + Filterable Dropdown + + + Focus the input and press Space — it should type a space, not toggle the popover. + + console.log("Filterable selected:", detail.value)} + > + + + + + + +
    + + + Edge Cases + + + {/* Test 1: Popover in Modal (Benji's review comment) */} + Test 1: Popover in Modal (z-index fix) + + Previously, position: absolute and z-index: 99 on the popover content caused + dropdowns and date pickers inside modals to render behind or outside the modal. + The native Popover API renders in the top layer, fixing this. Click the button + below to open a modal with a Dropdown and DatePicker inside. + + setModalOpen(true)}> + Open Modal with Popover Components + + setModalOpen(false)} + > + + The Dropdown and DatePicker below should render their popovers correctly above + the modal — not clipped or hidden behind it. + + + + setModalDropdownValue(detail.value ?? "")} + > + + + + + + +
    + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. + + + Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia + deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste + natus error sit voluptatem accusantium doloremque laudantium, totam rem + aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto + beatae vitae dicta sunt explicabo. + + + Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, + sed quia consequuntur magni dolores eos qui ratione voluptatem sequi + nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, + consectetur, adipisci velit. + + + At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis + praesentium voluptatum deleniti atque corrupti quos dolores et quas + molestias excepturi sint occaecati cupiditate non provident, similique sunt + in culpa qui officia deserunt mollitia animi, id est laborum et dolorum + fuga. + + + Et harum quidem rerum facilis est et expedita distinctio. Nam libero + tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus + id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis + dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut + rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et + molestiae non recusandae. + + + Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis + voluptatibus maiores alias consequatur aut perferendis doloribus asperiores + repellat. Quis autem vel eum iure reprehenderit qui in ea voluptate velit + esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo + voluptas nulla pariatur. + +
    + + + setModalDateValue(detail.valueStr)} + /> + +
    +
    + + + + {/* Test 2: AppHeaderMenu closes on navigation (popstate) */} + Test 2: AppHeaderMenu closes on navigation + + The "Services" and "Account" menus{" "} + in the header above use GoabAppHeaderMenu, which uses + goa-popover internally. Open a menu, then click a link inside it. The page content + will change but the header stays — verify the menu popover closed. This is to test + handleUrlChange inside the Popover.svelte + + + {/* Test 3: Multiple Popovers */} + Test 3: Multiple Popovers + + Opening one popover should close others (popover="auto" behavior). + + + Popover A}> + Content A + + Popover B}> + Content B + + Popover C}> + Content C + + + + {/* Test 4: #3499 Dismissing Notification breaks AppHeaderMenu */} + + Test 4: #3499 Dismissing Notification breaks AppHeaderMenu + + + When a Notification banner is dismissed (removed from the DOM), it should not + break the AppHeaderMenu popover. Steps to reproduce: dismiss the notification + below, then try opening the AppHeaderMenu in the header. It should still work. + + +
    Menu Item 1 + Menu Item 2 + Menu Item 3 + + {showBanner && ( + setShowBanner(false)} + > + Dismiss this notification, then verify AppHeaderMenu still works. + + )} + {!showBanner && ( + <> + + Notification dismissed. Now open the AppHeaderMenu above — it should still + function correctly. + + setShowBanner(true)}> + Reset notification + + + )} + + {/* Test 5: #3067 Focus issues with Popover */} + Test 5: #3067 Focus issues with Popover + + After closing a popover with Escape, focus should return to the trigger element. + Steps: 1) Focus the button below, 2) Press Enter to open the popover, 3) Press + Escape to close, 4) The button should still be focused (yellow border visible), 5) + Press Tab — the next interactive element should be selected, not the popover. + + + Focus Test Button}> + + Press Escape to close. Focus should return to the button. + + + Next Focusable Element + + + {/* Test 6: #3062 Popover maxWidth not respected above a button */} + + Test 6: #3062 Popover maxWidth not respected above a button + + + When a Popover is placed directly above a GoabButton or GoabInput in the DOM, it + should still respect the maxWidth property. Both popovers below should have the + same width (default 320px). Previously the one above the button would ignore + maxWidth. + + + Show Popover}> + + This popover is above the button. It should respect maxWidth (320px). + + + + Submit Form + + + Popover Test + + } + > + + This popover is below the button. It should also respect maxWidth (320px). + + + +
    + ); +} + +export default Feat3478Route; diff --git a/libs/react-components/specs/app-header-menu.browser.spec.tsx b/libs/react-components/specs/app-header-menu.browser.spec.tsx new file mode 100644 index 0000000000..79d5d43015 --- /dev/null +++ b/libs/react-components/specs/app-header-menu.browser.spec.tsx @@ -0,0 +1,74 @@ +import { render } from "vitest-browser-react"; +import { GoabAppHeaderMenu, GoabNotification } from "../src"; +import { expect, describe, it, vi, beforeAll } from "vitest"; +import { useState } from "react"; +import { page, userEvent } from "@vitest/browser/context"; + +describe("AppHeaderMenu", () => { + // AppHeaderMenu uses goa-popover only in desktop mode (>= 1024px) + beforeAll(async () => { + await page.viewport(1280, 800); + }); + + it("should work before and after dismissing a notification banner - issue 3499", async () => { + const Component = () => { + const [showBanner, setShowBanner] = useState(true); + + return ( + <> + + + Menu Item 1 + + + Menu Item 2 + + + Menu Item 3 + + + {showBanner && ( + setShowBanner(false)} + > + Dismiss this notification, then verify AppHeaderMenu still works. + + )} + + ); + }; + + const result = render(); + const menuTrigger = result.getByText("Test Menu"); + + // 1. Open menu while banner is visible + await menuTrigger.click(); + await vi.waitFor(() => { + const popoverContent = result.getByTestId("popover-content"); + expect(popoverContent.element().checkVisibility()).toBeTruthy(); + }); + expect(result.getByTestId("menu-item-1").element().checkVisibility()).toBeTruthy(); + + // Close menu with Escape + await userEvent.keyboard("{Escape}"); + await vi.waitFor(() => { + const popoverContent = result.getByTestId("popover-content"); + expect(popoverContent.element().checkVisibility()).toBeFalsy(); + }); + + // 2. Dismiss the notification banner + const banner = result.getByTestId("test-banner"); + const dismissButton = banner.getByRole("button"); + await dismissButton.click(); + + // 3. Open menu again — should still work after banner is removed from DOM + await menuTrigger.click(); + await vi.waitFor(() => { + const popoverContent = result.getByTestId("popover-content"); + expect(popoverContent.element().checkVisibility()).toBeTruthy(); + }); + expect(result.getByTestId("menu-item-1").element().checkVisibility()).toBeTruthy(); + }); +}); diff --git a/libs/react-components/specs/modal.browser.spec.tsx b/libs/react-components/specs/modal.browser.spec.tsx index 65bc979765..46cc4b5860 100644 --- a/libs/react-components/specs/modal.browser.spec.tsx +++ b/libs/react-components/specs/modal.browser.spec.tsx @@ -1,6 +1,15 @@ import { render } from "vitest-browser-react"; -import { GoabModal, GoabButton, GoabIcon } from "../src"; +import { + GoabModal, + GoabButton, + GoabIcon, + GoabDropdown, + GoabDropdownItem, + GoabDatePicker, + GoabFormItem, +} from "../src"; import { expect, describe, it, vi } from "vitest"; +import { userEvent } from "@vitest/browser/context"; import { useState } from "react"; describe("Modal", () => { @@ -125,4 +134,79 @@ describe("Modal", () => { expect(testLink1.element()).toBeTruthy(); expect(testLink2.element()).toBeTruthy(); }); + + it("should allow dropdown selection within a modal", async () => { + const onChange = vi.fn(); + const Component = () => { + return ( + + + + + + + + + + ); + }; + + const result = render(); + + // Click the dropdown to open it + const dropdown = result.getByTestId("modal-dropdown"); + await dropdown.click(); + + // The dropdown popover should be visible (rendered in top layer) + await vi.waitFor(() => { + const popoverContent = result.getByTestId("popover-content"); + expect(popoverContent.element()).toBeTruthy(); + expect(popoverContent.element().checkVisibility()).toBeTruthy(); + }); + }); + + it("should open date picker calendar within a modal", async () => { + const Component = () => { + return ( + + + + + + ); + }; + + const result = render(); + + // Click the calendar input to open the date picker + const calendarInput = result.getByTestId("calendar-input"); + await userEvent.click(calendarInput); + + // The calendar popover should be visible (rendered in top layer) + await vi.waitFor(() => { + const popoverContent = result.getByTestId("calendar-popover"); + expect(popoverContent.element()).toBeTruthy(); + expect(popoverContent.element().checkVisibility()).toBeTruthy(); + }); + }); }); \ No newline at end of file diff --git a/libs/react-components/specs/popover.browser.spec.tsx b/libs/react-components/specs/popover.browser.spec.tsx index 5b16c1d89f..44c77b0e99 100644 --- a/libs/react-components/specs/popover.browser.spec.tsx +++ b/libs/react-components/specs/popover.browser.spec.tsx @@ -1,6 +1,7 @@ import { render } from "vitest-browser-react"; import { GoabPopover, GoabButton, GoabModal } from "../src"; import { expect, describe, it, vi } from "vitest"; +import { userEvent } from "@vitest/browser/context"; describe("Popover", () => { it("should allow popover to be closed via a button with a close action", async () => { @@ -19,20 +20,16 @@ describe("Popover", () => { const target = result.getByTestId("target"); const closeButton = result.getByTestId("close-button"); - // Actions - await target.click(); - expect(closeButton.element()).toBeTruthy(); + expect(closeButton).toBeVisible(); await closeButton.click(); - // Result - await vi.waitFor(() => { - expect(closeButton.element().checkVisibility()).toBeFalsy(); + expect(closeButton).not.toBeVisible(); }); }); - it("should close popover when clicking on the document body", async () => { + it("should close popover when pressing Escape", async () => { const Component = () => { return ( Open popover}> @@ -46,26 +43,167 @@ describe("Popover", () => { const result = render(); const target = result.getByTestId("target"); + const closeButton = result.getByTestId("close-button"); - // Actions + // Open popover await target.click(); await vi.waitFor(() => { - const closeButton = result.getByTestId("close-button"); - expect(closeButton.element().checkVisibility()).toBeTruthy(); + expect(closeButton).toBeVisible(); + }); + + // Press Escape to close (native popover light dismiss) + await userEvent.keyboard("{Escape}"); + + await vi.waitFor(() => { + expect(closeButton).not.toBeVisible(); + }); + }); + + it("should return focus to trigger after closing with Escape - issue3067", async () => { + const Component = () => { + return ( + Focus Test Button} + > +

    Popover content

    +
    + ); + }; + + const result = render(); + const target = result.getByTestId("focus-target"); + const popoverContent = result.getByTestId("popover-content"); + const popoverTarget = result.getByTestId("popover-target"); + + // Open popover + await target.click(); + await vi.waitFor(() => { + expect(popoverContent).toBeVisible(); + }); + + // Close with Escape + await userEvent.keyboard("{Escape}"); + await vi.waitFor(() => { + expect(popoverContent).not.toBeVisible(); + }); + + // Focus should be on the popover target button + await vi.waitFor(() => { + expect(popoverTarget.element().matches(":focus-within")).toBeTruthy(); + }); + }); + + it("should close Popover A when Popover B is opened (popover='auto' behavior)", async () => { + const Component = () => { + return ( + <> + Popover A} + > +

    Content A

    +
    + Popover B} + > +

    Content B

    +
    + + ); + }; + + const result = render(); + const targetA = result.getByTestId("target-a"); + const targetB = result.getByTestId("target-b"); + const contentA = result.getByTestId("content-a"); + const contentB = result.getByTestId("content-b"); + + // Open Popover A + await targetA.click(); + await vi.waitFor(() => { + expect(contentA).toBeVisible(); }); - document.body.click(); // Simulate click on document body + // Open Popover B — should auto-close Popover A + await targetB.click(); + await vi.waitFor(() => { + expect(contentB).toBeVisible(); + expect(contentA).not.toBeVisible(); + }); + }); - // Result + it("should respect maxWidth when popover is placed above a button - issue3062", async () => { + const Component = () => { + return ( + <> + + Show Popover + + } + > +

    This popover is above the button. It should respect maxWidth (320px).

    +
    + + Submit Form + + + Popover Test + + } + > +

    + This popover is below the button. It should also respect maxWidth (320px). +

    +
    + + ); + }; + + const result = render(); + const targetAbove = result.getByTestId("target-above"); + const targetBelow = result.getByTestId("target-below"); + const popoverAbove = result.getByTestId("popover-above"); + const popoverBelow = result.getByTestId("popover-below"); + + // Open popover above the button + await targetAbove.click(); + + let aboveWidth: number; + const contentAbove = popoverAbove.getByTestId("popover-content"); + await vi.waitFor(() => { + expect(contentAbove).toBeVisible(); + aboveWidth = contentAbove.element().getBoundingClientRect().width; + }); + + // Close it + await userEvent.keyboard("{Escape}"); + + // Open popover below the button + await targetBelow.click(); + + let belowWidth: number; + const contentBelow = popoverBelow.getByTestId("popover-content"); await vi.waitFor(() => { - const closeButton = result.getByTestId("close-button"); - expect(closeButton.element().checkVisibility()).toBeFalsy(); + expect(contentBelow).toBeVisible(); + belowWidth = contentBelow.element().getBoundingClientRect().width; }); + + // Both popovers should have the same width (maxWidth respected equally) + expect(aboveWidth!).toBe(belowWidth!); }); describe("Popover within a modal", () => { - it("should open the popover downwards within a modal if content exceeds available space", async () => { + it("should open the popover within a modal even with long content", async () => { const Component = () => { const longContent = Array.from({ length: 50 }, (_, i) => (

    This is line {i + 1} of the popover content.

    @@ -75,9 +213,7 @@ describe("Popover", () => { { - console.log("Does nothing in this test"); - }} + onClose={vi.fn()} testId="test-modal" > { target={Open popover} >
    {longContent}
    - - Close - + Close
    ); @@ -95,12 +229,12 @@ describe("Popover", () => { const result = render(); const target = result.getByTestId("target"); + const popoverContent = result.getByTestId("popover-content"); + await target.click(); await vi.waitFor(() => { - const popoverContentEl = result.getByTestId("popover-content"); - expect(popoverContentEl.element()).toBeTruthy(); - expect(popoverContentEl.element().style.bottom).toBe(""); + expect(popoverContent).toBeVisible(); }); }); @@ -110,9 +244,7 @@ describe("Popover", () => { { - console.log("Does nothing in this test"); - }} + onClose={vi.fn()} testId="test-modal" >
    @@ -132,9 +264,7 @@ describe("Popover", () => {

    Popover Content

    - - Close - + Close

    Space Below

    @@ -144,13 +274,12 @@ describe("Popover", () => { const result = render(); const target = result.getByTestId("target"); + const popoverContent = result.getByTestId("popover-content"); + await target.click(); await vi.waitFor(() => { - const popoverContentEl = result.getByTestId("popover-content"); - expect(popoverContentEl.element()).toBeTruthy(); - // It should be a number ending with px when opening upwards - expect(popoverContentEl.element().style.top).toMatch(/-?\d+px/); + expect(popoverContent).toBeVisible(); }); }); @@ -160,9 +289,7 @@ describe("Popover", () => { { - console.log("Does nothing in this test"); - }} + onClose={vi.fn()} testId="test-modal" >
    @@ -176,9 +303,7 @@ describe("Popover", () => {

    Popover Content

    - - Close - + Close

    Space Below

    Space Below

    @@ -193,13 +318,12 @@ describe("Popover", () => { const result = render(); const target = result.getByTestId("target"); + const popoverContent = result.getByTestId("popover-content"); + await target.click(); await vi.waitFor(() => { - const popoverContentEl = result.getByTestId("popover-content"); - expect(popoverContentEl.element()).toBeTruthy(); - // bottom should be set to 'auto' when opening downwards - expect(popoverContentEl.element().style.bottom).toBe(""); + expect(popoverContent).toBeVisible(); }); }); }); diff --git a/libs/web-components/src/components/calendar/Calendar.svelte b/libs/web-components/src/components/calendar/Calendar.svelte index 3b88a59878..dcf6f1bbe2 100644 --- a/libs/web-components/src/components/calendar/Calendar.svelte +++ b/libs/web-components/src/components/calendar/Calendar.svelte @@ -337,7 +337,6 @@ > @@ -99,12 +93,6 @@ export let autocomplete: string = ""; /** Sets a data-testid attribute for automated testing. */ export let testid: string = ""; - - // Exposed Privates - - /** Prevents the popover from closing when clicking outside. Used for nested dropdowns or complex interactions. */ - export let disableGlobalClosePopover: boolean = false; - // // Private @@ -176,9 +164,6 @@ sendMountedMessage(); setupPopoverListeners(); - if (disableGlobalClosePopover) { - _popoverEl.setAttribute("disable-global-close-popover", "yes"); - } _eventHandler = _filterable ? new ComboboxKeyUpHandler(_inputEl) : new DropdownKeyUpHandler(_inputEl); @@ -824,7 +809,7 @@ {/if} @@ -1048,7 +1033,10 @@ /** menu **/ ul[role="listbox"] { - border-radius: var(--goa-dropdown-menu-border-radius, var(--goa-dropdown-border-radius)); + border-radius: var( + --goa-dropdown-menu-border-radius, + var(--goa-dropdown-border-radius) + ); padding: 0; margin: var(--goa-dropdown-menu-margin, 0); } @@ -1067,7 +1055,6 @@ border-radius: var(--goa-dropdown-item-border-radius, 0); } - .dropdown-item:hover, .dropdown-item--highlighted { background: var(--goa-dropdown-item-color-bg-hover); diff --git a/libs/web-components/src/components/menu-button/MenuButton.svelte b/libs/web-components/src/components/menu-button/MenuButton.svelte index ece53d6ad8..9af6007abb 100644 --- a/libs/web-components/src/components/menu-button/MenuButton.svelte +++ b/libs/web-components/src/components/menu-button/MenuButton.svelte @@ -157,7 +157,6 @@ padded="false" tabindex="-1" maxwidth={maxWidth || "none"} - prevent-scroll-into-view={true} > {#if text} - - -
    { e.preventDefault(); @@ -485,38 +282,28 @@ -
    -
    - -
    - -
    -
    -
    -
    +
    + + + +
    @@ -540,29 +327,46 @@ padding: 0; background-color: transparent; width: inherit; + anchor-name: --goa-popover-target; } .popover-target:has(:focus-visible) { - outline: var(--goa-popover-border-focus); + outline: var( + --goa-popover-border-focus, + var(--focus-border-width) solid var(--goa-color-interactive-default) + ); } .popover-content { color: var(--goa-color-text-default); - position: absolute; - z-index: 99; width: fit-content; list-style-type: none; background: var(--goa-popover-color-bg); - border-radius: var(--goa-popover-border-radius); + border-radius: var(--border-radius, var(--goa-popover-border-radius)); outline: none; overflow: visible; box-shadow: var(--goa-popover-box-shadow, none); filter: var(--goa-popover-shadow, none); border: var(--goa-popover-border, none); - margin-top: var(--offset-top, 3px); - margin-bottom: var(--offset-bottom, 3px); - margin-left: var(--offset-left, 0); - margin-right: var(--offset-right, 0); + margin: 0; + + position-anchor: --goa-popover-target; + inset-block-start: anchor(bottom); + inset-inline-start: anchor(left); + --popover-translate-x: var(--offset-left, 0); + --popover-translate-y: var(--offset-top, 3px); + translate: var(--popover-translate-x) var(--popover-translate-y); + } + + .popover-content.position-above { + inset-block-start: anchor(top); + --popover-translate-y: calc(-100% - var(--offset-bottom, 3px)); + position-try-fallbacks: none; + } + + .popover-content.position-below { + inset-block-start: anchor(bottom); + --popover-translate-y: var(--offset-top, 3px); } :global(::slotted(ul)) { diff --git a/libs/web-components/src/components/popover/popover.spec.ts b/libs/web-components/src/components/popover/popover.spec.ts index e7d141d2c1..1a24619a1e 100644 --- a/libs/web-components/src/components/popover/popover.spec.ts +++ b/libs/web-components/src/components/popover/popover.spec.ts @@ -17,7 +17,7 @@ describe("Popover", () => { const slotContent = result.queryByTestId("popover-content"); const slotTarget = result.queryByTestId("popover-target"); - expect(slotContent?.parentElement?.style.display).toBe("none"); + expect(slotContent?.classList.contains("is-open")).toBe(false); expect(slotTarget).toBeTruthy(); }); @@ -28,7 +28,7 @@ describe("Popover", () => { target && (await user.click(target)); const popOverContent = result.queryByTestId("popover-content"); - expect(popOverContent?.parentElement?.style.display).not.toBe("none"); + expect(popOverContent?.classList.contains("is-open")).toBe(true); const style = popOverContent?.getAttribute("style"); expect(style).toContain("min-width: 8rem"); @@ -36,6 +36,77 @@ describe("Popover", () => { expect(style).toContain("padding: var(--goa-space-m)"); }); + it("should close content when target is clicked again", async () => { + const result = render(Popover); + const target = result.queryByTestId("popover-target"); + + // open + target && (await user.click(target)); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(true); + + // close + target && (await user.click(target)); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(false); + }); + + it("should open when open prop is set to true", async () => { + const result = render(Popover, { open: "true" }); + const popoverContent = result.queryByTestId("popover-content"); + + expect(popoverContent?.classList.contains("is-open")).toBe(true); + }); + + it("should close when open prop changes from true to false", async () => { + const result = render(Popover, { open: "true" }); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(true); + + await result.rerender({ open: "false" }); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(false); + }); + + it("should dispatch _open event when popover opens", async () => { + const result = render(Popover); + const rootEl = result.queryByTestId("popover"); + const target = result.queryByTestId("popover-target"); + + const openHandler = vi.fn(); + rootEl?.addEventListener("_open", openHandler); + + target && (await user.click(target)); + expect(openHandler).toHaveBeenCalledTimes(1); + }); + + it("should dispatch _close event when popover closes", async () => { + const result = render(Popover); + const rootEl = result.queryByTestId("popover"); + const target = result.queryByTestId("popover-target"); + + const closeHandler = vi.fn(); + rootEl?.addEventListener("_close", closeHandler); + + // open then close + target && (await user.click(target)); + target && (await user.click(target)); + expect(closeHandler).toHaveBeenCalledTimes(1); + }); + + it("should not open on space key when disabled", async () => { + const result = render(Popover, { disabled: "true" }); + const target = result.queryByTestId("popover-target"); + + target?.focus(); + await user.keyboard(" "); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(false); + }); + + it("should apply explicit placement classes", async () => { + const result = render(Popover, { position: "above" }); + const popoverContent = result.queryByTestId("popover-content") as HTMLElement; + + expect(popoverContent.classList.contains("position-above")).toBe(true); + expect(popoverContent.classList.contains("position-auto")).toBe(false); + }); + it("should not close content when clicked focusable target then click focusable content inside the content container", async () => { // arrange to test that focusout event bubbles up to popover component const result = render(PopoverWrapper, { @@ -45,16 +116,16 @@ describe("Popover", () => { const target = result.queryByTestId("clickable-target"); expect(target).toBeTruthy(); - expect(result.queryByTestId("popover-content")?.parentElement?.style.display).toBe("none"); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(false); // click on focusable element within popover target target && (await user.click(target)); - expect(result.queryByTestId("popover-content")?.parentElement?.style.display).not.toBe("none"); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(true); // click on focusable content inside popover content const button = result.queryByTestId("clickable-content"); button && (await user.click(button)); - expect(result.queryByTestId("popover-content")?.parentElement?.style.display).not.toBe("none"); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(true); }); it("should not close content when clicked non-focusable target then click non-focusable content inside the content container", async () => { @@ -66,17 +137,17 @@ describe("Popover", () => { const target = result.queryByTestId("non-focusable-target"); expect(target).toBeTruthy(); - expect(result.queryByTestId("popover-content")?.parentElement?.style.display).toBe("none"); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(false); // click on non-focusable element within popover target target && (await user.click(target)); - expect(result.queryByTestId("popover-content")?.parentElement?.style.display).not.toBe("none"); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(true); // click on non-focusable content within popover content const contentNonfocusableEl = result.queryByTestId("non-focusable-content"); expect(contentNonfocusableEl?.tabIndex).toBe(-1); contentNonfocusableEl && (await user.click(contentNonfocusableEl)); - expect(result.queryByTestId("popover-content")?.parentElement?.style.display).not.toBe("none"); + expect(result.queryByTestId("popover-content")?.classList.contains("is-open")).toBe(true); }); }) diff --git a/vitest.web-component.setup.ts b/vitest.web-component.setup.ts index 66e9f8a5e1..804e775ae7 100644 --- a/vitest.web-component.setup.ts +++ b/vitest.web-component.setup.ts @@ -14,3 +14,30 @@ console.error = (...params) => { originalConsoleError(...params); } }; + +// jsdom does not implement the HTML Popover API yet. +if (!HTMLElement.prototype.showPopover) { + Object.defineProperty(HTMLElement.prototype, "showPopover", { + configurable: true, + writable: true, + value() { + this.setAttribute("data-popover-open", "true"); + this.dispatchEvent( + Object.assign(new Event("toggle"), { newState: "open", oldState: "closed" }), + ); + }, + }); +} + +if (!HTMLElement.prototype.hidePopover) { + Object.defineProperty(HTMLElement.prototype, "hidePopover", { + configurable: true, + writable: true, + value() { + this.removeAttribute("data-popover-open"); + this.dispatchEvent( + Object.assign(new Event("toggle"), { newState: "closed", oldState: "open" }), + ); + }, + }); +} From e0433adb68b3f5f5f389aad3dd03299c74d23ca0 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery <82968683+twjeffery@users.noreply.github.com> Date: Tue, 10 Mar 2026 10:50:35 -0600 Subject: [PATCH 043/103] fix: use Node 22 for Netlify deploys (#3543) --- netlify.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netlify.toml b/netlify.toml index 0c5962c489..e365f3fdf7 100644 --- a/netlify.toml +++ b/netlify.toml @@ -3,5 +3,5 @@ command = "npm ci && cd docs && npm ci && cd .. && npm run build:prod" [build.environment] - NODE_VERSION = "24" + NODE_VERSION = "22" NPM_FLAGS = "--legacy-peer-deps" From 6a2325f9953f6927c97a9ddbc4168d7050916a7e Mon Sep 17 00:00:00 2001 From: Thomas Jeffery <82968683+twjeffery@users.noreply.github.com> Date: Tue, 10 Mar 2026 10:51:48 -0600 Subject: [PATCH 044/103] Add Get Support documentation page (#3480) --- .../src/layouts/DocumentationPageLayout.astro | 4 +- docs/src/pages/support.astro | 86 +++++++++++++++++++ 2 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 docs/src/pages/support.astro diff --git a/docs/src/layouts/DocumentationPageLayout.astro b/docs/src/layouts/DocumentationPageLayout.astro index 85a60124b8..8c05a326e5 100644 --- a/docs/src/layouts/DocumentationPageLayout.astro +++ b/docs/src/layouts/DocumentationPageLayout.astro @@ -24,8 +24,8 @@ import { TableOfContents } from '../components/TableOfContents'; interface Props { title: string; description?: string; - /** Section to highlight in menu: 'get-started' | 'foundations' */ - section: 'get-started' | 'foundations'; + /** Section to highlight in menu: 'get-started' | 'foundations' | 'parent' (no highlight) */ + section: 'get-started' | 'foundations' | 'parent'; /** Show table of contents on right side (default: true) */ showToc?: boolean; /** CSS selector for TOC headings (default: 'h2[id], h3[id]') */ diff --git a/docs/src/pages/support.astro b/docs/src/pages/support.astro new file mode 100644 index 0000000000..13b37eee77 --- /dev/null +++ b/docs/src/pages/support.astro @@ -0,0 +1,86 @@ +--- +/** + * Get Support + * + * Contact info, issue reporting, Slack channels, drop-in hours, + * and design system team members. + */ +import DocumentationPageLayout from '../layouts/DocumentationPageLayout.astro'; +--- + + + Get support + + Get help from our team with using the design system, including components, guidelines, best + practices, and accessibility. + + +

    Raise an issue

    + + Let us know if you find a problem in the design system or if you need a new component or + pattern. You can report a bug or request a new feature on GitHub. + + + Raise an issue on GitHub + + + + +

    Talk to us

    + +

    Slack

    + + #design-system-support + — Reach out to the design system directly to ask a question and get support. + + + #figma + — A place for any Figma discussion. Share tips, tricks, techniques, ask questions, report + issues. + + +

    Drop-in hours

    + + Tuesday and Friday, 1:00 – 3:00 pm MST + + + For product teams to get feedback on their usage of the design system, propose new components or + changes to existing components, ask any questions, and give feedback to the design system. + + + Book a time + + + + +

    Design system team

    + +
      +
    • Product owner: Mark Elamatha
    • +
    • Digital architect and Lead developer: Chris Olsen
    • +
    • Scrum master and DevOps: Dustin Nielsen
    • +
    • Developers: Vanessa Tran, Eric Hoff
    • +
    • Designer and Developer: Thomas Jeffery, Benji Franck
    • +
    +
    + + + + + Join design system drop-in hours to: +
      +
    • Get feedback on your service
    • +
    • Propose new components or patterns
    • +
    • Suggest updates to existing resources
    • +
    • Ask questions
    • +
    • Share feedback
    • +
    + Drop-in sessions are available to Government of Alberta product teams. +

    + Book time in drop-in hours +
    +
    From 480661bb0b46f6fe6ea0b37b1b6403a8d652413d Mon Sep 17 00:00:00 2001 From: Benji Franck Date: Tue, 10 Mar 2026 10:52:21 -0600 Subject: [PATCH 045/103] fix(#3397): use existing design tokens in Astro docs (#3515) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/src/components/CodeSnippet.tsx | 10 +- docs/src/components/ComponentSandbox.tsx | 34 +-- docs/src/components/ComponentsGrid.tsx | 4 +- docs/src/components/ConfigurationPreview.tsx | 2 +- docs/src/components/DoDont.astro | 8 +- docs/src/components/ExampleCard.astro | 36 +-- docs/src/components/ExampleDisplay.astro | 2 +- docs/src/components/ExampleListingCard.astro | 4 +- docs/src/components/ExamplesGrid.tsx | 4 +- docs/src/components/GuidanceGrid.astro | 6 +- docs/src/components/GuidanceSection.astro | 2 +- docs/src/components/TokensGrid.tsx | 4 +- docs/src/components/nav/menu-secondary.css | 2 +- docs/src/components/search/search.css | 32 +- .../guidance/notification-above-fixed.mdx | 2 +- .../content/guidance/tooltip-force-scroll.mdx | 2 +- docs/src/content/guidance/tooltip-too-far.mdx | 2 +- docs/src/layouts/BaseLayout.astro | 287 +++++++++--------- docs/src/layouts/ComponentPageLayout.astro | 8 +- .../src/layouts/DocumentationPageLayout.astro | 28 +- docs/src/layouts/ExamplesPageLayout.astro | 8 +- docs/src/layouts/HomeLayout.astro | 6 +- docs/src/layouts/TokensLayout.astro | 8 +- docs/src/pages/components/[slug].astro | 6 +- docs/src/pages/examples/[slug].astro | 6 +- docs/src/pages/examples/all.astro | 2 +- docs/src/pages/index.astro | 6 +- docs/src/pages/search.astro | 10 +- 28 files changed, 259 insertions(+), 272 deletions(-) diff --git a/docs/src/components/CodeSnippet.tsx b/docs/src/components/CodeSnippet.tsx index 8ec6f36f43..1001816565 100644 --- a/docs/src/components/CodeSnippet.tsx +++ b/docs/src/components/CodeSnippet.tsx @@ -540,7 +540,7 @@ function CodeSnippetStyles() { border-radius: var(--goa-border-radius-m, 4px); overflow: hidden; background: var(--goa-color-greyscale-100, #f1f1f1); - font-size: 0.875rem; + font-size: var(--goa-font-size-2); } .framework-switcher .code-snippet { @@ -568,19 +568,19 @@ function CodeSnippetStyles() { .code-block-title { font-size: 0.75rem; - font-weight: 600; + font-weight: var(--goa-font-weight-semi-bold); color: var(--goa-color-text-secondary, #666); text-transform: uppercase; letter-spacing: 0.5px; } .copy-button { - background: white; + background: var(--goa-color-greyscale-white); border: 1px solid var(--goa-color-greyscale-200, #dcdcdc); color: var(--goa-color-interactive-default, #0070c4); width: 28px; height: 28px; - border-radius: 4px; + border-radius: var(--goa-border-radius-xs); cursor: pointer; display: flex; align-items: center; @@ -596,7 +596,7 @@ function CodeSnippetStyles() { .copy-button.copied { background: var(--goa-color-status-success, #2e7d32); border-color: var(--goa-color-status-success, #2e7d32); - color: white; + color: var(--goa-color-greyscale-white); } .copy-icon { diff --git a/docs/src/components/ComponentSandbox.tsx b/docs/src/components/ComponentSandbox.tsx index f46f068706..8cd0b38c95 100644 --- a/docs/src/components/ComponentSandbox.tsx +++ b/docs/src/components/ComponentSandbox.tsx @@ -175,16 +175,16 @@ export function ComponentSandbox({ diff --git a/docs/src/components/ExampleCard.astro b/docs/src/components/ExampleCard.astro index 9096558a3f..31bb5dc0cb 100644 --- a/docs/src/components/ExampleCard.astro +++ b/docs/src/components/ExampleCard.astro @@ -98,9 +98,9 @@ const scaleStyle = scaleColors[data.scale] || { bg: '#f5f5f5', color: '#666' }; diff --git a/docs/src/components/ExampleDisplay.astro b/docs/src/components/ExampleDisplay.astro index 16ac584a51..07af06fe54 100644 --- a/docs/src/components/ExampleDisplay.astro +++ b/docs/src/components/ExampleDisplay.astro @@ -61,7 +61,7 @@ const code = await getExampleCode(example.slug); .example-meta p { margin: 0; - color: var(--goa-color-text-secondary, #666); + color: var(--goa-color-text-secondary); line-height: 1.5; } diff --git a/docs/src/components/ExampleListingCard.astro b/docs/src/components/ExampleListingCard.astro index 474b030e25..0af66d1915 100644 --- a/docs/src/components/ExampleListingCard.astro +++ b/docs/src/components/ExampleListingCard.astro @@ -113,7 +113,7 @@ const userGoal = getUserGoal(data.title); .card-image-link { display: block; text-decoration: none; - border-radius: 12px; + border-radius: var(--goa-border-radius-xl); margin-bottom: var(--goa-space-l, 24px); } @@ -126,7 +126,7 @@ const userGoal = getUserGoal(data.title); .card-image { aspect-ratio: 4/3; background: var(--goa-color-greyscale-200, #e5e5e5); - border-radius: 12px; + border-radius: var(--goa-border-radius-xl); overflow: hidden; } diff --git a/docs/src/components/ExamplesGrid.tsx b/docs/src/components/ExamplesGrid.tsx index feef7d492a..8272bf684c 100644 --- a/docs/src/components/ExamplesGrid.tsx +++ b/docs/src/components/ExamplesGrid.tsx @@ -1027,7 +1027,7 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { position: sticky; top: 0; z-index: 1; - background: white; + background: var(--goa-color-greyscale-white); display: flex; flex-direction: row; align-items: flex-start; @@ -1050,7 +1050,7 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { bottom: 0; left: -9999px; right: -9999px; - background: white; + background: var(--goa-color-greyscale-white); box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.15); z-index: -1; } diff --git a/docs/src/components/GuidanceGrid.astro b/docs/src/components/GuidanceGrid.astro index 343366f620..ae82c684df 100644 --- a/docs/src/components/GuidanceGrid.astro +++ b/docs/src/components/GuidanceGrid.astro @@ -122,8 +122,8 @@ const mdxComponents = { Preview, InfoCard }; font-style: italic; padding: var(--goa-space-l); text-align: center; - background: var(--goa-color-background-light); - border-radius: var(--goa-radius-m); + background: var(--goa-color-greyscale-100); + border-radius: var(--goa-border-radius-m); } .guidance-content { @@ -141,7 +141,7 @@ const mdxComponents = { Preview, InfoCard }; .guidance-content :global(code) { background: rgba(0, 0, 0, 0.06); padding: 0.1em 0.3em; - border-radius: 3px; + border-radius: var(--goa-border-radius-xs); font-size: 0.85em; } diff --git a/docs/src/components/GuidanceSection.astro b/docs/src/components/GuidanceSection.astro index 03aa19ec30..16aea52ef1 100644 --- a/docs/src/components/GuidanceSection.astro +++ b/docs/src/components/GuidanceSection.astro @@ -83,7 +83,7 @@ const typeConfig: Record diff --git a/docs/src/components/TokensGrid.tsx b/docs/src/components/TokensGrid.tsx index ef2c695350..4d3c7a49aa 100644 --- a/docs/src/components/TokensGrid.tsx +++ b/docs/src/components/TokensGrid.tsx @@ -1009,7 +1009,7 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) { position: sticky; top: 0; z-index: 1; - background: white; + background: var(--goa-color-greyscale-white); display: flex; flex-direction: row; align-items: flex-start; @@ -1032,7 +1032,7 @@ export function TokensGrid({ tokens, filterGroups }: TokensGridProps) { bottom: 0; left: -9999px; right: -9999px; - background: white; + background: var(--goa-color-greyscale-white); box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.15); z-index: -1; } diff --git a/docs/src/components/nav/menu-secondary.css b/docs/src/components/nav/menu-secondary.css index 642f6a5adc..483f4b8404 100644 --- a/docs/src/components/nav/menu-secondary.css +++ b/docs/src/components/nav/menu-secondary.css @@ -37,6 +37,6 @@ font-size: var(--goa-font-size-2); background-color: var(--goa-color-greyscale-100); border: 1px solid var(--goa-color-greyscale-200); - border-radius: 6px; + border-radius: var(--goa-border-radius-s); padding: 0 6px; } diff --git a/docs/src/components/search/search.css b/docs/src/components/search/search.css index d7b4325f56..059ce59a88 100644 --- a/docs/src/components/search/search.css +++ b/docs/src/components/search/search.css @@ -41,7 +41,7 @@ } .search-modal { - background: white; + background: var(--goa-color-greyscale-white); border-radius: var(--goa-space-m); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), @@ -134,7 +134,7 @@ color: var(--goa-color-greyscale-600, #555); background: var(--goa-color-greyscale-100, #f5f5f5); border: 1px solid var(--goa-color-greyscale-200, #e0e0e0); - border-radius: 4px; + border-radius: var(--goa-border-radius-xs); } .search-input-close { @@ -143,7 +143,7 @@ background: none; border: none; cursor: pointer; - border-radius: 4px; + border-radius: var(--goa-border-radius-xs); color: var(--goa-color-greyscale-500, #666); display: flex; align-items: center; @@ -201,7 +201,7 @@ display: block; color: var(--goa-color-status-emergency, #d32f2f); font: var(--goa-typography-body-m); - font-weight: 600; + font-weight: var(--goa-font-weight-semi-bold); margin-bottom: var(--goa-space-xs); } @@ -298,7 +298,7 @@ .search-result-title { font: var(--goa-typography-body-m); - font-weight: 600; + font-weight: var(--goa-font-weight-semi-bold); color: var(--goa-color-interactive-default, #0070c4); margin-bottom: var(--goa-space-3xs); } @@ -322,7 +322,7 @@ font: var(--goa-typography-body-xs); font-size: 11px; text-transform: uppercase; - border-radius: 4px; + border-radius: var(--goa-border-radius-xs); vertical-align: middle; } @@ -362,7 +362,7 @@ color: var(--goa-color-interactive-default, #0070c4); background: none; border: 1px solid var(--goa-color-greyscale-200, #e0e0e0); - border-radius: 4px; + border-radius: var(--goa-border-radius-xs); cursor: pointer; transition: background-color 100ms ease; } @@ -386,11 +386,11 @@ gap: var(--goa-space-2xs); padding: var(--goa-space-3xs) var(--goa-space-xs); background: var(--goa-color-interactive-default, #0070c4); - color: white; + color: var(--goa-color-greyscale-white); font: var(--goa-typography-body-xs); font-size: 12px; border: none; - border-radius: 4px; + border-radius: var(--goa-border-radius-xs); cursor: pointer; flex-shrink: 0; transition: background-color 100ms ease; @@ -472,7 +472,7 @@ .search-filter-hints-command { font: var(--goa-typography-body-m); - font-weight: 600; + font-weight: var(--goa-font-weight-semi-bold); color: var(--goa-color-interactive-default, #0070c4); } @@ -506,7 +506,7 @@ font-size: 11px; background: var(--goa-color-greyscale-100, #f5f5f5); border: 1px solid var(--goa-color-greyscale-200, #e0e0e0); - border-radius: 3px; + border-radius: var(--goa-border-radius-xs); } /* ========================================================================== @@ -548,7 +548,7 @@ border: none; cursor: pointer; padding: var(--goa-space-3xs) var(--goa-space-xs); - border-radius: 4px; + border-radius: var(--goa-border-radius-xs); } .search-empty-clear:hover { @@ -623,7 +623,7 @@ } .search-no-results-query { - font-weight: 600; + font-weight: var(--goa-font-weight-semi-bold); color: var(--goa-color-text-default, #333); } @@ -656,7 +656,7 @@ color: var(--goa-color-interactive-default, #0070c4); background: var(--goa-color-greyscale-100, #f5f5f5); border: 1px solid var(--goa-color-greyscale-200, #e0e0e0); - border-radius: 4px; + border-radius: var(--goa-border-radius-xs); padding: var(--goa-space-2xs) var(--goa-space-s); cursor: pointer; transition: @@ -688,7 +688,7 @@ align-items: center; gap: var(--goa-space-s); padding: var(--goa-space-s) var(--goa-space-m); - background: white; + background: var(--goa-color-greyscale-white); border: 1px solid var(--goa-color-greyscale-300, #ccc); border-radius: var(--goa-border-radius-m); transition: @@ -716,7 +716,7 @@ .search-page-results { margin-top: var(--goa-space-m); - background: white; + background: var(--goa-color-greyscale-white); border: 1px solid var(--goa-color-greyscale-200, #e0e0e0); border-radius: var(--goa-space-m); min-height: 300px; diff --git a/docs/src/content/guidance/notification-above-fixed.mdx b/docs/src/content/guidance/notification-above-fixed.mdx index fea508893b..ddbd83bb4a 100644 --- a/docs/src/content/guidance/notification-above-fixed.mdx +++ b/docs/src/content/guidance/notification-above-fixed.mdx @@ -21,7 +21,7 @@ status: published Your profile information has been updated.
    -
    +
    Click to chat
    diff --git a/docs/src/content/guidance/tooltip-force-scroll.mdx b/docs/src/content/guidance/tooltip-force-scroll.mdx index bcd2b9136b..86a49072a4 100644 --- a/docs/src/content/guidance/tooltip-force-scroll.mdx +++ b/docs/src/content/guidance/tooltip-force-scroll.mdx @@ -20,7 +20,7 @@ status: published
    -
    +
    We will send important updates to this email address.
    diff --git a/docs/src/content/guidance/tooltip-too-far.mdx b/docs/src/content/guidance/tooltip-too-far.mdx index 56f9dd2925..a551d5b789 100644 --- a/docs/src/content/guidance/tooltip-too-far.mdx +++ b/docs/src/content/guidance/tooltip-too-far.mdx @@ -16,7 +16,7 @@ status: published
    -
    +
    Tooltip
    diff --git a/docs/src/layouts/BaseLayout.astro b/docs/src/layouts/BaseLayout.astro index 702e762f49..70ef8f0d28 100644 --- a/docs/src/layouts/BaseLayout.astro +++ b/docs/src/layouts/BaseLayout.astro @@ -53,184 +53,171 @@ const { title, description, page } = Astro.props; import '../scripts/mobile-bridge.ts'; - diff --git a/docs/src/pages/examples/all.astro b/docs/src/pages/examples/all.astro index 04a8b317f0..72b9b4d56a 100644 --- a/docs/src/pages/examples/all.astro +++ b/docs/src/pages/examples/all.astro @@ -88,7 +88,7 @@ const sortedExamples = allExamples.sort((a, b) => .component-pages { margin-top: var(--goa-space-xs); - font-size: 0.875rem; + font-size: var(--goa-font-size-2); border-top: none; } diff --git a/docs/src/pages/index.astro b/docs/src/pages/index.astro index f87fa911ae..3e90028a1f 100644 --- a/docs/src/pages/index.astro +++ b/docs/src/pages/index.astro @@ -223,13 +223,13 @@ import CardLite from '../components/CardLite.astro'; padding: var(--goa-space-2xs) var(--goa-space-xs); background: var(--goa-color-greyscale-100); border: 1px solid var(--goa-color-greyscale-200); - border-radius: 6px; + border-radius: var(--goa-border-radius-s); color: var(--goa-color-greyscale-800); } /* Main Content - White background */ .ds-main-content { - background: white; + background: var(--goa-color-greyscale-white); padding: var(--goa-space-4xl) var(--goa-space-m); } @@ -375,7 +375,7 @@ import CardLite from '../components/CardLite.astro'; min-height: 515px; display: flex; flex-direction: column; - border-radius: 0; + border-radius: var(--goa-border-radius-none); padding: 0 var(--goa-space-xs); /* Extra top padding to account for header overlay (~73px) */ padding-top: 73px; diff --git a/docs/src/pages/search.astro b/docs/src/pages/search.astro index 21a3b75f0b..5bfc9a3d23 100644 --- a/docs/src/pages/search.astro +++ b/docs/src/pages/search.astro @@ -80,8 +80,8 @@ const initialQuery = url.searchParams.get('q') || ''; } .content-card { - background: white; - border-radius: 24px; + background: var(--goa-color-greyscale-white); + border-radius: var(--goa-border-radius-3xl); border: 1px solid var(--goa-color-greyscale-150); padding: var(--goa-space-xl) var(--goa-space-2xl); min-height: calc(100vh - var(--goa-space-l) * 2); @@ -95,7 +95,7 @@ const initialQuery = url.searchParams.get('q') || ''; } .search-page-header h1 { - font-size: 2.5rem; + font-size: var(--goa-font-size-9); font-weight: 700; margin: 0 0 var(--goa-space-s); color: var(--goa-color-text-default, #333); @@ -118,7 +118,7 @@ const initialQuery = url.searchParams.get('q') || ''; /* Mobile: 624px breakpoint */ @media (max-width: 623px) { .layout-wrapper { - background: white; + background: var(--goa-color-greyscale-white); } .layout-container { @@ -137,7 +137,7 @@ const initialQuery = url.searchParams.get('q') || ''; } .content-card { - border-radius: 0; + border-radius: var(--goa-border-radius-none); border: none; padding: var(--goa-space-m); min-height: auto; From aae50a892679aaee1c03a738af0256d065a7f450 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery <82968683+twjeffery@users.noreply.github.com> Date: Wed, 11 Mar 2026 11:11:01 -0600 Subject: [PATCH 046/103] docs: add push drawer documentation page (#3521) --- .../generated/component-apis/push-drawer.json | 46 +++ docs/src/components/DoDont.astro | 4 + docs/src/content/components/push-drawer.mdx | 18 + .../index.mdx | 39 ++ .../react.tsx | 129 +++++++ .../web-components.html | 114 ++++++ .../guidance/push-drawer-actions-optional.mdx | 14 + ...push-drawer-dont-use-for-focused-tasks.mdx | 15 + .../guidance/push-drawer-mobile-fallback.mdx | 14 + .../push-drawer-use-for-reference-tasks.mdx | 14 + docs/src/data/configurations/index.ts | 361 +++++++++--------- docs/src/data/configurations/push-drawer.ts | 174 +++++++++ 12 files changed, 763 insertions(+), 179 deletions(-) create mode 100644 docs/generated/component-apis/push-drawer.json create mode 100644 docs/src/content/components/push-drawer.mdx create mode 100644 docs/src/content/examples/filter-a-list-using-a-push-drawer/index.mdx create mode 100644 docs/src/content/examples/filter-a-list-using-a-push-drawer/react.tsx create mode 100644 docs/src/content/examples/filter-a-list-using-a-push-drawer/web-components.html create mode 100644 docs/src/content/guidance/push-drawer-actions-optional.mdx create mode 100644 docs/src/content/guidance/push-drawer-dont-use-for-focused-tasks.mdx create mode 100644 docs/src/content/guidance/push-drawer-mobile-fallback.mdx create mode 100644 docs/src/content/guidance/push-drawer-use-for-reference-tasks.mdx create mode 100644 docs/src/data/configurations/push-drawer.ts diff --git a/docs/generated/component-apis/push-drawer.json b/docs/generated/component-apis/push-drawer.json new file mode 100644 index 0000000000..c11f01d554 --- /dev/null +++ b/docs/generated/component-apis/push-drawer.json @@ -0,0 +1,46 @@ +{ + "componentSlug": "push-drawer", + "extractedFrom": "libs/web-components/src/components/push-drawer/PushDrawer.svelte", + "extractedAt": "2026-03-03T18:47:38.073Z", + "props": [ + { + "name": "testId", + "type": "\"string\"", + "required": false, + "default": null, + "description": "" + }, + { + "name": "open", + "type": "boolean", + "required": false, + "default": "false", + "description": "" + }, + { + "name": "heading", + "type": "string", + "required": false, + "default": "", + "description": "" + }, + { + "name": "width", + "type": "string", + "required": false, + "default": "492px", + "description": "" + } + ], + "events": [], + "slots": [ + { + "name": "default", + "description": "" + }, + { + "name": "actions", + "description": "" + } + ] +} diff --git a/docs/src/components/DoDont.astro b/docs/src/components/DoDont.astro index a2f4db8ebc..db5f27fa61 100644 --- a/docs/src/components/DoDont.astro +++ b/docs/src/components/DoDont.astro @@ -91,6 +91,9 @@ const config = typeConfig[type]; ) : (
    + {description && ( +
    {description}
    + )}
    )} @@ -196,6 +199,7 @@ const config = typeConfig[type]; .info-content { color: var(--goa-color-info-text); margin-bottom: var(--goa-space-l); + max-width: 70ch; } .info-content :global(p) { diff --git a/docs/src/content/components/push-drawer.mdx b/docs/src/content/components/push-drawer.mdx new file mode 100644 index 0000000000..d004f74429 --- /dev/null +++ b/docs/src/content/components/push-drawer.mdx @@ -0,0 +1,18 @@ +--- +name: Push Drawer +description: A panel that pushes the main page content aside on desktop, falling back to an overlay drawer on smaller screens. +status: stable +category: content-layout +tags: + - sections + - structure and navigation + - drawer + - sidebar + - panel +relatedComponents: + - drawer +githubUrl: https://github.com/GovAlta/ui-components/labels/Push%20Drawer +webComponentTag: goa-push-drawer +reactClassName: GoabPushDrawer +angularSelector: goab-push-drawer +--- diff --git a/docs/src/content/examples/filter-a-list-using-a-push-drawer/index.mdx b/docs/src/content/examples/filter-a-list-using-a-push-drawer/index.mdx new file mode 100644 index 0000000000..80ec50761b --- /dev/null +++ b/docs/src/content/examples/filter-a-list-using-a-push-drawer/index.mdx @@ -0,0 +1,39 @@ +--- +id: filter-a-list-using-a-push-drawer +title: Filter a list using a push drawer +categories: + - content-layout +scale: task +userType: worker +tags: + - push-drawer + - filters + - list + - search +components: + - push-drawer + - button + - table + - badge + - checkbox + - checkbox-list + - dropdown + - form-item +status: published +--- + +Use a push drawer to house filters alongside a list of records. The push drawer keeps the filter controls accessible while users can still see and interact with the filtered results. + +## When to use + +Use this pattern when: + +- Users need to filter a list or table and see results update alongside the filters +- The filter panel should be dismissible to reclaim screen space +- Users go back and forth between adjusting filters and reviewing results + +## Considerations + +- On smaller screens, the push drawer falls back to an overlay drawer automatically +- Consider whether filters should apply immediately or require a Save action +- Consider hiding the trigger button while the drawer is open to reduce visual clutter diff --git a/docs/src/content/examples/filter-a-list-using-a-push-drawer/react.tsx b/docs/src/content/examples/filter-a-list-using-a-push-drawer/react.tsx new file mode 100644 index 0000000000..c26142a8c8 --- /dev/null +++ b/docs/src/content/examples/filter-a-list-using-a-push-drawer/react.tsx @@ -0,0 +1,129 @@ +import { useState } from "react"; +import { + GoabxButton, + GoabxCheckbox, + GoabxCheckboxList, + GoabxDropdown, + GoabxDropdownItem, + GoabxFormItem, + GoabxTable, + GoabxBadge, +} from "@abgov/react-components/experimental"; +import { GoabPushDrawer } from "@abgov/react-components"; + +export function FilterAListUsingAPushDrawer() { + const [open, setOpen] = useState(false); + + return ( +
    +
    +
    +

    All cases

    + {!open && ( + setOpen(true)} + > + Filters + + )} +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    StatusNameFile numberAct
    + + Gilbert Barton24567-9876Traffic safety act
    + + Brynn Hurley98765-3456Trespass to premises act
    + + Marco Silva34521-7890Gaming, liquor, and cannabis act
    + + Dana Chen55123-4567Traffic safety act
    + + Amira Hassan67890-1234Trespass to premises act
    +
    +
    + + setOpen(false)} + > + + {}}> + + + + + + + {}} value="" size="compact"> + + + + + + + +
    + ); +} diff --git a/docs/src/content/examples/filter-a-list-using-a-push-drawer/web-components.html b/docs/src/content/examples/filter-a-list-using-a-push-drawer/web-components.html new file mode 100644 index 0000000000..2cccba9c5c --- /dev/null +++ b/docs/src/content/examples/filter-a-list-using-a-push-drawer/web-components.html @@ -0,0 +1,114 @@ +
    +
    +
    +

    All cases

    + Filters +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    StatusNameFile numberAct
    + + Gilbert Barton24567-9876Traffic safety act
    Brynn Hurley98765-3456Trespass to premises act
    + + Marco Silva34521-7890Gaming, liquor, and cannabis act
    + + Dana Chen55123-4567Traffic safety act
    Amira Hassan67890-1234Trespass to premises act
    +
    +
    + + + + + + + + + + + + + + + + + + +
    + + diff --git a/docs/src/content/guidance/push-drawer-actions-optional.mdx b/docs/src/content/guidance/push-drawer-actions-optional.mdx new file mode 100644 index 0000000000..4a37f1b406 --- /dev/null +++ b/docs/src/content/guidance/push-drawer-actions-optional.mdx @@ -0,0 +1,14 @@ +--- +id: push-drawer-actions-optional +type: tip +description: The actions slot is optional. Include Save or Cancel buttons when the drawer content requires explicit confirmation. Omit them when changes apply immediately, like live filtering. +topic: other +tags: + - push-drawer + - actions + - forms +appliesTo: + components: + - push-drawer +status: published +--- diff --git a/docs/src/content/guidance/push-drawer-dont-use-for-focused-tasks.mdx b/docs/src/content/guidance/push-drawer-dont-use-for-focused-tasks.mdx new file mode 100644 index 0000000000..53c9d75fd5 --- /dev/null +++ b/docs/src/content/guidance/push-drawer-dont-use-for-focused-tasks.mdx @@ -0,0 +1,15 @@ +--- +id: push-drawer-dont-use-for-focused-tasks +type: dont +description: Don't use a push drawer for tasks that require the user's full attention. Use a regular drawer instead — it blocks interaction with the background and focuses the user on the task. +topic: other +tags: + - push-drawer + - drawer + - modal +appliesTo: + components: + - push-drawer + - drawer +status: published +--- diff --git a/docs/src/content/guidance/push-drawer-mobile-fallback.mdx b/docs/src/content/guidance/push-drawer-mobile-fallback.mdx new file mode 100644 index 0000000000..0228764db5 --- /dev/null +++ b/docs/src/content/guidance/push-drawer-mobile-fallback.mdx @@ -0,0 +1,14 @@ +--- +id: push-drawer-mobile-fallback +type: tip +description: On screens narrower than 1024px, the push drawer automatically falls back to an overlay drawer. Design content that works well in both layouts. +topic: other +tags: + - push-drawer + - responsive + - mobile +appliesTo: + components: + - push-drawer +status: published +--- diff --git a/docs/src/content/guidance/push-drawer-use-for-reference-tasks.mdx b/docs/src/content/guidance/push-drawer-use-for-reference-tasks.mdx new file mode 100644 index 0000000000..85a39fcf2c --- /dev/null +++ b/docs/src/content/guidance/push-drawer-use-for-reference-tasks.mdx @@ -0,0 +1,14 @@ +--- +id: push-drawer-use-for-reference-tasks +type: do +description: Use a push drawer when users need to reference or interact with page content while the panel is open, such as filtering a list, viewing record details, or adjusting settings. +topic: other +tags: + - push-drawer + - drawer + - layout +appliesTo: + components: + - push-drawer +status: published +--- diff --git a/docs/src/data/configurations/index.ts b/docs/src/data/configurations/index.ts index 7376dea4d3..e35e0c46bb 100644 --- a/docs/src/data/configurations/index.ts +++ b/docs/src/data/configurations/index.ts @@ -5,162 +5,164 @@ * Add new component configurations here as they're created. */ -export * from './types'; +export * from "./types"; // Form components -export { buttonConfigurations } from './button'; -export { inputConfigurations } from './input'; -export { dropdownConfigurations } from './dropdown'; -export { checkboxConfigurations } from './checkbox'; -export { checkboxListConfigurations } from './checkbox-list'; -export { radioGroupConfigurations } from './radio-group'; -export { radioItemConfigurations } from './radio-item'; -export { textAreaConfigurations } from './text-area'; -export { formItemConfigurations } from './form-item'; -export { formConfigurations } from './form'; -export { formStepperConfigurations } from './form-stepper'; -export { formStepConfigurations } from './form-step'; -export { datePickerConfigurations } from './date-picker'; -export { calendarConfigurations } from './calendar'; -export { fileUploadInputConfigurations } from './file-upload-input'; -export { fileUploadCardConfigurations } from './file-upload-card'; +export { buttonConfigurations } from "./button"; +export { inputConfigurations } from "./input"; +export { dropdownConfigurations } from "./dropdown"; +export { checkboxConfigurations } from "./checkbox"; +export { checkboxListConfigurations } from "./checkbox-list"; +export { radioGroupConfigurations } from "./radio-group"; +export { radioItemConfigurations } from "./radio-item"; +export { textAreaConfigurations } from "./text-area"; +export { formItemConfigurations } from "./form-item"; +export { formConfigurations } from "./form"; +export { formStepperConfigurations } from "./form-stepper"; +export { formStepConfigurations } from "./form-step"; +export { datePickerConfigurations } from "./date-picker"; +export { calendarConfigurations } from "./calendar"; +export { fileUploadInputConfigurations } from "./file-upload-input"; +export { fileUploadCardConfigurations } from "./file-upload-card"; // Feedback components -export { calloutConfigurations } from './callout'; -export { notificationConfigurations } from './notification'; -export { temporaryNotificationConfigurations } from './temporary-notification'; -export { badgeConfigurations } from './badge'; -export { chipConfigurations } from './chip'; -export { filterChipConfigurations } from './filter-chip'; -export { tooltipConfigurations } from './tooltip'; -export { spinnerConfigurations } from './spinner'; -export { circularProgressConfigurations } from './circular-progress'; -export { linearProgressConfigurations } from './linear-progress'; -export { skeletonConfigurations } from './skeleton'; +export { calloutConfigurations } from "./callout"; +export { notificationConfigurations } from "./notification"; +export { temporaryNotificationConfigurations } from "./temporary-notification"; +export { badgeConfigurations } from "./badge"; +export { chipConfigurations } from "./chip"; +export { filterChipConfigurations } from "./filter-chip"; +export { tooltipConfigurations } from "./tooltip"; +export { spinnerConfigurations } from "./spinner"; +export { circularProgressConfigurations } from "./circular-progress"; +export { linearProgressConfigurations } from "./linear-progress"; +export { skeletonConfigurations } from "./skeleton"; // Layout components -export { containerConfigurations } from './container'; -export { blockConfigurations } from './block'; -export { gridConfigurations } from './grid'; -export { pageBlockConfigurations } from './page-block'; -export { pagesConfigurations } from './pages'; -export { dividerConfigurations } from './divider'; -export { spacerConfigurations } from './spacer'; -export { scrollableConfigurations } from './scrollable'; -export { heroBannerConfigurations } from './hero-banner'; +export { containerConfigurations } from "./container"; +export { blockConfigurations } from "./block"; +export { gridConfigurations } from "./grid"; +export { pageBlockConfigurations } from "./page-block"; +export { pagesConfigurations } from "./pages"; +export { dividerConfigurations } from "./divider"; +export { spacerConfigurations } from "./spacer"; +export { scrollableConfigurations } from "./scrollable"; +export { heroBannerConfigurations } from "./hero-banner"; // Navigation components -export { tabsConfigurations } from './tabs'; -export { tabConfigurations } from './tab'; -export { paginationConfigurations } from './pagination'; -export { sideMenuConfigurations } from './side-menu'; -export { sideMenuGroupConfigurations } from './side-menu-group'; -export { sideMenuHeadingConfigurations } from './side-menu-heading'; -export { workSideMenuConfigurations } from './work-side-menu'; -export { menuButtonConfigurations } from './menu-button'; -export { appHeaderConfigurations } from './app-header'; -export { appHeaderMenuConfigurations } from './app-header-menu'; -export { micrositeHeaderConfigurations } from './microsite-header'; -export { footerConfigurations } from './footer'; -export { footerNavSectionConfigurations } from './footer-nav-section'; -export { footerMetaSectionConfigurations } from './footer-meta-section'; -export { linkButtonConfigurations } from './link-button'; +export { tabsConfigurations } from "./tabs"; +export { tabConfigurations } from "./tab"; +export { paginationConfigurations } from "./pagination"; +export { sideMenuConfigurations } from "./side-menu"; +export { sideMenuGroupConfigurations } from "./side-menu-group"; +export { sideMenuHeadingConfigurations } from "./side-menu-heading"; +export { workSideMenuConfigurations } from "./work-side-menu"; +export { menuButtonConfigurations } from "./menu-button"; +export { appHeaderConfigurations } from "./app-header"; +export { appHeaderMenuConfigurations } from "./app-header-menu"; +export { micrositeHeaderConfigurations } from "./microsite-header"; +export { footerConfigurations } from "./footer"; +export { footerNavSectionConfigurations } from "./footer-nav-section"; +export { footerMetaSectionConfigurations } from "./footer-meta-section"; +export { linkButtonConfigurations } from "./link-button"; // Display components -export { cardConfigurations } from './card'; -export { cardGroupConfigurations } from './card-group'; -export { cardContentConfigurations } from './card-content'; -export { cardImageConfigurations } from './card-image'; -export { cardActionsConfigurations } from './card-actions'; -export { tableConfigurations } from './table'; -export { tableSortHeaderConfigurations } from './table-sort-header'; -export { dataGridConfigurations } from './data-grid'; -export { modalConfigurations } from './modal'; -export { drawerConfigurations } from './drawer'; -export { popoverConfigurations } from './popover'; -export { accordionConfigurations } from './accordion'; -export { detailsConfigurations } from './details'; +export { cardConfigurations } from "./card"; +export { cardGroupConfigurations } from "./card-group"; +export { cardContentConfigurations } from "./card-content"; +export { cardImageConfigurations } from "./card-image"; +export { cardActionsConfigurations } from "./card-actions"; +export { tableConfigurations } from "./table"; +export { tableSortHeaderConfigurations } from "./table-sort-header"; +export { dataGridConfigurations } from "./data-grid"; +export { modalConfigurations } from "./modal"; +export { drawerConfigurations } from "./drawer"; +export { pushDrawerConfigurations } from "./push-drawer"; +export { popoverConfigurations } from "./popover"; +export { accordionConfigurations } from "./accordion"; +export { detailsConfigurations } from "./details"; // Utility components -export { iconConfigurations } from './icon'; -export { iconButtonConfigurations } from './icon-button'; -export { buttonGroupConfigurations } from './button-group'; -export { linkConfigurations } from './link'; -export { textConfigurations } from './text'; -export { focusTrapConfigurations } from './focus-trap'; +export { iconConfigurations } from "./icon"; +export { iconButtonConfigurations } from "./icon-button"; +export { buttonGroupConfigurations } from "./button-group"; +export { linkConfigurations } from "./link"; +export { textConfigurations } from "./text"; +export { focusTrapConfigurations } from "./focus-trap"; // Import all configurations for registry -import type { ComponentConfigurations, ConfigurationRegistry } from './types'; -import { buttonConfigurations } from './button'; -import { inputConfigurations } from './input'; -import { dropdownConfigurations } from './dropdown'; -import { checkboxConfigurations } from './checkbox'; -import { checkboxListConfigurations } from './checkbox-list'; -import { radioGroupConfigurations } from './radio-group'; -import { radioItemConfigurations } from './radio-item'; -import { textAreaConfigurations } from './text-area'; -import { formItemConfigurations } from './form-item'; -import { formConfigurations } from './form'; -import { formStepperConfigurations } from './form-stepper'; -import { formStepConfigurations } from './form-step'; -import { datePickerConfigurations } from './date-picker'; -import { calendarConfigurations } from './calendar'; -import { fileUploadInputConfigurations } from './file-upload-input'; -import { fileUploadCardConfigurations } from './file-upload-card'; -import { calloutConfigurations } from './callout'; -import { notificationConfigurations } from './notification'; -import { temporaryNotificationConfigurations } from './temporary-notification'; -import { badgeConfigurations } from './badge'; -import { chipConfigurations } from './chip'; -import { filterChipConfigurations } from './filter-chip'; -import { tooltipConfigurations } from './tooltip'; -import { spinnerConfigurations } from './spinner'; -import { circularProgressConfigurations } from './circular-progress'; -import { linearProgressConfigurations } from './linear-progress'; -import { skeletonConfigurations } from './skeleton'; -import { containerConfigurations } from './container'; -import { blockConfigurations } from './block'; -import { gridConfigurations } from './grid'; -import { pageBlockConfigurations } from './page-block'; -import { pagesConfigurations } from './pages'; -import { dividerConfigurations } from './divider'; -import { spacerConfigurations } from './spacer'; -import { scrollableConfigurations } from './scrollable'; -import { heroBannerConfigurations } from './hero-banner'; -import { tabsConfigurations } from './tabs'; -import { tabConfigurations } from './tab'; -import { paginationConfigurations } from './pagination'; -import { sideMenuConfigurations } from './side-menu'; -import { sideMenuGroupConfigurations } from './side-menu-group'; -import { sideMenuHeadingConfigurations } from './side-menu-heading'; -import { workSideMenuConfigurations } from './work-side-menu'; -import { menuButtonConfigurations } from './menu-button'; -import { appHeaderConfigurations } from './app-header'; -import { appHeaderMenuConfigurations } from './app-header-menu'; -import { micrositeHeaderConfigurations } from './microsite-header'; -import { footerConfigurations } from './footer'; -import { footerNavSectionConfigurations } from './footer-nav-section'; -import { footerMetaSectionConfigurations } from './footer-meta-section'; -import { linkButtonConfigurations } from './link-button'; -import { cardConfigurations } from './card'; -import { cardGroupConfigurations } from './card-group'; -import { cardContentConfigurations } from './card-content'; -import { cardImageConfigurations } from './card-image'; -import { cardActionsConfigurations } from './card-actions'; -import { tableConfigurations } from './table'; -import { tableSortHeaderConfigurations } from './table-sort-header'; -import { dataGridConfigurations } from './data-grid'; -import { modalConfigurations } from './modal'; -import { drawerConfigurations } from './drawer'; -import { popoverConfigurations } from './popover'; -import { accordionConfigurations } from './accordion'; -import { detailsConfigurations } from './details'; -import { iconConfigurations } from './icon'; -import { iconButtonConfigurations } from './icon-button'; -import { buttonGroupConfigurations } from './button-group'; -import { linkConfigurations } from './link'; -import { textConfigurations } from './text'; -import { focusTrapConfigurations } from './focus-trap'; +import type { ComponentConfigurations, ConfigurationRegistry } from "./types"; +import { buttonConfigurations } from "./button"; +import { inputConfigurations } from "./input"; +import { dropdownConfigurations } from "./dropdown"; +import { checkboxConfigurations } from "./checkbox"; +import { checkboxListConfigurations } from "./checkbox-list"; +import { radioGroupConfigurations } from "./radio-group"; +import { radioItemConfigurations } from "./radio-item"; +import { textAreaConfigurations } from "./text-area"; +import { formItemConfigurations } from "./form-item"; +import { formConfigurations } from "./form"; +import { formStepperConfigurations } from "./form-stepper"; +import { formStepConfigurations } from "./form-step"; +import { datePickerConfigurations } from "./date-picker"; +import { calendarConfigurations } from "./calendar"; +import { fileUploadInputConfigurations } from "./file-upload-input"; +import { fileUploadCardConfigurations } from "./file-upload-card"; +import { calloutConfigurations } from "./callout"; +import { notificationConfigurations } from "./notification"; +import { temporaryNotificationConfigurations } from "./temporary-notification"; +import { badgeConfigurations } from "./badge"; +import { chipConfigurations } from "./chip"; +import { filterChipConfigurations } from "./filter-chip"; +import { tooltipConfigurations } from "./tooltip"; +import { spinnerConfigurations } from "./spinner"; +import { circularProgressConfigurations } from "./circular-progress"; +import { linearProgressConfigurations } from "./linear-progress"; +import { skeletonConfigurations } from "./skeleton"; +import { containerConfigurations } from "./container"; +import { blockConfigurations } from "./block"; +import { gridConfigurations } from "./grid"; +import { pageBlockConfigurations } from "./page-block"; +import { pagesConfigurations } from "./pages"; +import { dividerConfigurations } from "./divider"; +import { spacerConfigurations } from "./spacer"; +import { scrollableConfigurations } from "./scrollable"; +import { heroBannerConfigurations } from "./hero-banner"; +import { tabsConfigurations } from "./tabs"; +import { tabConfigurations } from "./tab"; +import { paginationConfigurations } from "./pagination"; +import { sideMenuConfigurations } from "./side-menu"; +import { sideMenuGroupConfigurations } from "./side-menu-group"; +import { sideMenuHeadingConfigurations } from "./side-menu-heading"; +import { workSideMenuConfigurations } from "./work-side-menu"; +import { menuButtonConfigurations } from "./menu-button"; +import { appHeaderConfigurations } from "./app-header"; +import { appHeaderMenuConfigurations } from "./app-header-menu"; +import { micrositeHeaderConfigurations } from "./microsite-header"; +import { footerConfigurations } from "./footer"; +import { footerNavSectionConfigurations } from "./footer-nav-section"; +import { footerMetaSectionConfigurations } from "./footer-meta-section"; +import { linkButtonConfigurations } from "./link-button"; +import { cardConfigurations } from "./card"; +import { cardGroupConfigurations } from "./card-group"; +import { cardContentConfigurations } from "./card-content"; +import { cardImageConfigurations } from "./card-image"; +import { cardActionsConfigurations } from "./card-actions"; +import { tableConfigurations } from "./table"; +import { tableSortHeaderConfigurations } from "./table-sort-header"; +import { dataGridConfigurations } from "./data-grid"; +import { modalConfigurations } from "./modal"; +import { drawerConfigurations } from "./drawer"; +import { pushDrawerConfigurations } from "./push-drawer"; +import { popoverConfigurations } from "./popover"; +import { accordionConfigurations } from "./accordion"; +import { detailsConfigurations } from "./details"; +import { iconConfigurations } from "./icon"; +import { iconButtonConfigurations } from "./icon-button"; +import { buttonGroupConfigurations } from "./button-group"; +import { linkConfigurations } from "./link"; +import { textConfigurations } from "./text"; +import { focusTrapConfigurations } from "./focus-trap"; /** * Registry of all component configurations. @@ -172,82 +174,83 @@ export const configurationRegistry: ConfigurationRegistry = { input: inputConfigurations, dropdown: dropdownConfigurations, checkbox: checkboxConfigurations, - 'checkbox-list': checkboxListConfigurations, - 'radio-group': radioGroupConfigurations, - 'radio-item': radioItemConfigurations, - 'text-area': textAreaConfigurations, - 'form-item': formItemConfigurations, + "checkbox-list": checkboxListConfigurations, + "radio-group": radioGroupConfigurations, + "radio-item": radioItemConfigurations, + "text-area": textAreaConfigurations, + "form-item": formItemConfigurations, form: formConfigurations, - 'form-stepper': formStepperConfigurations, - 'form-step': formStepConfigurations, - 'date-picker': datePickerConfigurations, + "form-stepper": formStepperConfigurations, + "form-step": formStepConfigurations, + "date-picker": datePickerConfigurations, calendar: calendarConfigurations, - 'file-upload-input': fileUploadInputConfigurations, - 'file-upload-card': fileUploadCardConfigurations, + "file-upload-input": fileUploadInputConfigurations, + "file-upload-card": fileUploadCardConfigurations, // Feedback components callout: calloutConfigurations, notification: notificationConfigurations, - 'temporary-notification': temporaryNotificationConfigurations, + "temporary-notification": temporaryNotificationConfigurations, badge: badgeConfigurations, chip: chipConfigurations, - 'filter-chip': filterChipConfigurations, + "filter-chip": filterChipConfigurations, tooltip: tooltipConfigurations, spinner: spinnerConfigurations, - 'circular-progress': circularProgressConfigurations, - 'linear-progress': linearProgressConfigurations, + "circular-progress": circularProgressConfigurations, + "linear-progress": linearProgressConfigurations, skeleton: skeletonConfigurations, // Layout components container: containerConfigurations, block: blockConfigurations, grid: gridConfigurations, - 'page-block': pageBlockConfigurations, + "page-block": pageBlockConfigurations, pages: pagesConfigurations, divider: dividerConfigurations, spacer: spacerConfigurations, scrollable: scrollableConfigurations, - 'hero-banner': heroBannerConfigurations, + "hero-banner": heroBannerConfigurations, // Navigation components tabs: tabsConfigurations, tab: tabConfigurations, pagination: paginationConfigurations, - 'side-menu': sideMenuConfigurations, - 'side-menu-group': sideMenuGroupConfigurations, - 'side-menu-heading': sideMenuHeadingConfigurations, - 'work-side-menu': workSideMenuConfigurations, - 'menu-button': menuButtonConfigurations, - 'app-header': appHeaderConfigurations, - 'app-header-menu': appHeaderMenuConfigurations, - 'microsite-header': micrositeHeaderConfigurations, + "side-menu": sideMenuConfigurations, + "side-menu-group": sideMenuGroupConfigurations, + "side-menu-heading": sideMenuHeadingConfigurations, + "work-side-menu": workSideMenuConfigurations, + "menu-button": menuButtonConfigurations, + "app-header": appHeaderConfigurations, + "app-header-menu": appHeaderMenuConfigurations, + "microsite-header": micrositeHeaderConfigurations, footer: footerConfigurations, - 'footer-nav-section': footerNavSectionConfigurations, - 'footer-meta-section': footerMetaSectionConfigurations, - 'link-button': linkButtonConfigurations, + "footer-nav-section": footerNavSectionConfigurations, + "footer-meta-section": footerMetaSectionConfigurations, + "link-button": linkButtonConfigurations, // Display components card: cardConfigurations, - 'card-group': cardGroupConfigurations, - 'card-content': cardContentConfigurations, - 'card-image': cardImageConfigurations, - 'card-actions': cardActionsConfigurations, + "card-group": cardGroupConfigurations, + "card-content": cardContentConfigurations, + "card-image": cardImageConfigurations, + "card-actions": cardActionsConfigurations, table: tableConfigurations, - 'table-sort-header': tableSortHeaderConfigurations, - 'data-grid': dataGridConfigurations, + "table-sort-header": tableSortHeaderConfigurations, + "data-grid": dataGridConfigurations, modal: modalConfigurations, drawer: drawerConfigurations, + "push-drawer": pushDrawerConfigurations, popover: popoverConfigurations, accordion: accordionConfigurations, details: detailsConfigurations, // Utility components icon: iconConfigurations, - 'icon-button': iconButtonConfigurations, - 'button-group': buttonGroupConfigurations, + "icon-button": iconButtonConfigurations, + "button-group": buttonGroupConfigurations, link: linkConfigurations, text: textConfigurations, - 'focus-trap': focusTrapConfigurations, + "focus-trap": focusTrapConfigurations, }; /** @@ -255,7 +258,7 @@ export const configurationRegistry: ConfigurationRegistry = { * Returns undefined if no configurations exist. */ export function getComponentConfigurations( - slug: string + slug: string, ): ComponentConfigurations | undefined { return configurationRegistry[slug]; } diff --git a/docs/src/data/configurations/push-drawer.ts b/docs/src/data/configurations/push-drawer.ts new file mode 100644 index 0000000000..13f654d810 --- /dev/null +++ b/docs/src/data/configurations/push-drawer.ts @@ -0,0 +1,174 @@ +/** + * Push Drawer Component Configurations + * + * Push drawers push the main page content aside on desktop, + * falling back to an overlay drawer on smaller screens. + */ + +import type { ComponentConfigurations } from "./types"; + +const pushDrawerScript = ` +document.getElementById('open-push-drawer').addEventListener('click', () => { + document.getElementById('demo-push-drawer').setAttribute('open', 'true'); +}); +document.getElementById('demo-push-drawer').addEventListener('_close', (e) => { + e.target.removeAttribute('open'); +}); +`; + +export const pushDrawerConfigurations: ComponentConfigurations = { + componentSlug: "push-drawer", + componentName: "Push Drawer", + defaultConfigurationId: "basic", + + configurations: [ + { + id: "basic", + name: "Basic push drawer", + description: "Opens from the right, pushing page content aside", + code: { + react: ` + Applicant name + Jane Smith + File number + 24567-9876 + Status + + Submitted + January 15, 2025 +`, + angular: ` + Applicant name + Jane Smith + File number + 24567-9876 + Status + + Submitted + January 15, 2025 +`, + webComponents: `
    +
    + Open push drawer +
    + + Applicant name + Jane Smith + File number + 24567-9876 + Status + + Submitted + January 15, 2025 + +
    +`, + }, + }, + { + id: "custom-width", + name: "Custom width", + description: "Push drawer with a custom width", + code: { + react: ` + Officer + Const. M. Roberts, Badge #4412 + Date + February 3, 2025 + Notes + Applicant provided updated documentation. Reviewed supporting evidence and confirmed eligibility criteria are met. Forwarded to supervisor for final approval. +`, + angular: ` + Officer + Const. M. Roberts, Badge #4412 + Date + February 3, 2025 + Notes + Applicant provided updated documentation. Reviewed supporting evidence and confirmed eligibility criteria are met. Forwarded to supervisor for final approval. +`, + webComponents: `
    +
    + Open push drawer +
    + + Officer + Const. M. Roberts, Badge #4412 + Date + February 3, 2025 + Notes + Applicant provided updated documentation. Reviewed supporting evidence and confirmed eligibility criteria are met. Forwarded to supervisor for final approval. + +
    +`, + }, + }, + { + id: "with-actions", + name: "With actions", + description: "Push drawer with footer actions", + code: { + react: ` + Save + Cancel + + } +> + + + + + + + +`, + angular: ` + + + + + + + + + + + + Save + Cancel + +`, + webComponents: `
    +
    + Open push drawer +
    + + + + + + + + + + Save + Cancel + + +
    +`, + }, + }, + ], +}; From ca60800cd2cec8f668bb284f8a3df9ffe5d921d3 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery <82968683+twjeffery@users.noreply.github.com> Date: Wed, 11 Mar 2026 13:13:23 -0600 Subject: [PATCH 047/103] feat(docs): automate component API extraction in build pipeline (#3513) --- docs/ARCHITECTURE.md | 344 ++++++++ docs/generated/component-apis/accordion.json | 1 - .../component-apis/app-header-menu.json | 12 +- .../component-apis/app-header-navigation.json | 38 + docs/generated/component-apis/app-header.json | 35 +- docs/generated/component-apis/badge.json | 1 - docs/generated/component-apis/block.json | 1 - .../component-apis/button-group.json | 1 - docs/generated/component-apis/button.json | 1 - docs/generated/component-apis/calendar.json | 1 - docs/generated/component-apis/callout.json | 1 - .../component-apis/card-actions.json | 1 - .../component-apis/card-content.json | 1 - docs/generated/component-apis/card-group.json | 1 - docs/generated/component-apis/card-image.json | 1 - docs/generated/component-apis/card.json | 1 - .../component-apis/checkbox-list.json | 12 +- docs/generated/component-apis/checkbox.json | 1 - docs/generated/component-apis/chip.json | 3 +- .../component-apis/circular-progress.json | 1 - docs/generated/component-apis/container.json | 1 - docs/generated/component-apis/data-grid.json | 1 - .../generated/component-apis/date-picker.json | 1 - docs/generated/component-apis/details.json | 1 - docs/generated/component-apis/divider.json | 1 - docs/generated/component-apis/drawer.json | 7 +- docs/generated/component-apis/dropdown.json | 7 +- .../component-apis/file-upload-card.json | 1 - .../component-apis/file-upload-input.json | 7 +- .../generated/component-apis/filter-chip.json | 1 - docs/generated/component-apis/focus-trap.json | 1 - .../component-apis/footer-meta-section.json | 1 - .../component-apis/footer-nav-section.json | 1 - docs/generated/component-apis/footer.json | 1 - docs/generated/component-apis/form-item.json | 1 - docs/generated/component-apis/form-step.json | 8 +- .../component-apis/form-stepper.json | 1 - docs/generated/component-apis/form.json | 1 - docs/generated/component-apis/grid.json | 1 - .../generated/component-apis/hero-banner.json | 1 - .../generated/component-apis/icon-button.json | 1 - docs/generated/component-apis/icon.json | 531 +++++++++++- docs/generated/component-apis/input.json | 13 +- .../component-apis/linear-progress.json | 25 +- .../generated/component-apis/link-button.json | 1 - docs/generated/component-apis/link.json | 1 - .../generated/component-apis/menu-button.json | 27 +- .../component-apis/microsite-header.json | 1 - docs/generated/component-apis/modal.json | 7 +- .../component-apis/notification.json | 1 - docs/generated/component-apis/page-block.json | 7 +- docs/generated/component-apis/pages.json | 1 - docs/generated/component-apis/pagination.json | 1 - docs/generated/component-apis/popover.json | 1 - .../generated/component-apis/push-drawer.json | 5 +- .../generated/component-apis/radio-group.json | 1 - docs/generated/component-apis/radio-item.json | 1 - docs/generated/component-apis/scrollable.json | 1 - .../component-apis/side-menu-group.json | 1 - .../component-apis/side-menu-heading.json | 1 - docs/generated/component-apis/side-menu.json | 1 - docs/generated/component-apis/skeleton.json | 1 - docs/generated/component-apis/spacer.json | 1 - docs/generated/component-apis/spinner.json | 9 +- docs/generated/component-apis/tab.json | 1 - docs/generated/component-apis/table.json | 1 - docs/generated/component-apis/tabs.json | 12 +- .../temporary-notification.json | 16 +- docs/generated/component-apis/text-area.json | 13 +- docs/generated/component-apis/text.json | 4 +- docs/generated/component-apis/tooltip.json | 1 - .../component-apis/work-side-menu.json | 1 - docs/package.json | 5 +- docs/project.json | 2 +- docs/src/components/SiteNav.tsx | 96 ++- docs/src/layouts/ComponentPageLayout.astro | 3 + .../src/layouts/DocumentationPageLayout.astro | 3 + docs/src/layouts/ExamplesPageLayout.astro | 3 + docs/src/layouts/HomeLayout.astro | 3 + docs/src/layouts/TokensLayout.astro | 3 + docs/src/lib/content-queries.ts | 1 - docs/src/lib/nav-categories.ts | 72 ++ docs/src/scripts/extract-api.ts | 755 ++++++++++++++++++ 83 files changed, 1956 insertions(+), 182 deletions(-) create mode 100644 docs/ARCHITECTURE.md create mode 100644 docs/generated/component-apis/app-header-navigation.json create mode 100644 docs/src/lib/nav-categories.ts create mode 100644 docs/src/scripts/extract-api.ts diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md new file mode 100644 index 0000000000..ab9c2630a2 --- /dev/null +++ b/docs/ARCHITECTURE.md @@ -0,0 +1,344 @@ +# Docs Site — How It Works + +Practical guide for the team on how this site is built, where content comes from, and how to make changes. + +**Location:** `ui-components/docs/` (not the old `ui-components-docs/` SPA) +**Stack:** Astro + MDX + React islands +**Dev server:** `npm run dev` → http://localhost:4203 + +--- + +## How the site is structured + +The docs site pulls content from three types of sources: + +``` +Svelte source code Manual MDX content +(libs/web-components/) (docs/src/content/) + │ │ + ▼ ▼ + extract-api.ts Astro content collections + │ (components, guidance, examples) + ▼ │ + generated/component-apis/*.json │ + │ │ + └──────────────┬──────────────────────┘ + ▼ + Astro static build + (pages assembled from all sources) +``` + +### Content sources at a glance + +| Content | Source | Automated? | +| ------------------------------------ | --------------------------------------------------------- | ----------------------------- | +| Component API (props, events, slots) | Extracted from Svelte → `generated/component-apis/*.json` | **Yes** — runs on every build | +| Component descriptions & metadata | `src/content/components/*.mdx` | Manual | +| Guidance atoms (~130+) | `src/content/guidance/*.mdx` | Manual | +| Examples (~80) | `src/content/examples/*/` | Manual | +| Configuration previews (~65) | `src/data/configurations/*.ts` | Manual (curated) | +| Design tokens | `@abgov/design-tokens-v2` npm package | Yes (npm import) | +| Search index | `search-index.json` | Yes (build step) | + +--- + +## Build pipeline + +```bash +npm run build +``` + +This runs three steps in sequence: + +1. **`npm run extract-api`** — Runs `tsx src/scripts/extract-api.ts --all`. Scans every Svelte component in `libs/web-components/src/components/`, extracts props/events/slots, writes JSON to `docs/generated/component-apis/`. +2. **`astro check`** — TypeScript type checking. +3. **`astro build`** — Static site generation. Content collections are processed, dynamic routes are pre-rendered, output goes to `ui-components/dist/docs`. + +The generated API JSON files are **committed to git** so changes are visible in PR diffs. They're also regenerated on every build to ensure freshness. + +> **Note:** The `extract-api` step was added in PR #3513. If you're on a branch that predates this merge, you'll need to manually create or copy the JSON files in `docs/generated/component-apis/` for the dev server to show API data. + +### Vite aliases + +The site resolves monorepo packages directly via aliases in `astro.config.mjs`: + +- `@abgov/react-components` → `libs/react-components/src/index.ts` +- `@abgov/web-components` → `dist/libs/web-components/` +- `@abgov/style` → `dist/libs/web-components/index.css` +- `@design-tokens` → `node_modules/@abgov/design-tokens-v2/dist` + +**Important:** `@abgov/web-components` points to `dist/`, so you need to build web components first (`npm run build` from the root) for the docs site to work. + +--- + +## Content collections + +Defined in `src/content/config.ts`. Three collections: + +### Components (`src/content/components/*.mdx`) + +One MDX file per component. Mostly frontmatter — the page template pulls in API data, guidance, examples, and configurations automatically. + +```yaml +--- +name: Button +description: Carry out an important action or navigate to another page. +status: stable # stable | beta | deprecated | experimental +category: inputs-and-actions # determines nav section +tags: [action, submit] +relatedComponents: [button-group, icon-button] +figmaUrl: https://www.figma.com/... +githubUrl: https://github.com/... +webComponentTag: goa-button +reactClassName: GoabButton +angularSelector: goab-button +hidden: false # set true to hide from nav +--- +``` + +The MDX body is usually empty. Any content you add appears at the bottom of the "Usage guidelines" tab. + +### Guidance (`src/content/guidance/*.mdx`) + +Atomic pieces of design knowledge — do's, don'ts, tips, warnings. These are linked to components via `appliesTo.components` and appear on those component pages automatically. + +```yaml +--- +id: accordion-content-left-aligned +type: do # do | dont | tip | warning | info +description: Ensure accordion content is left-aligned with the heading. +topic: positioning # determines which section on the page +tags: [accordion, alignment] +appliesTo: + components: [accordion] # shows on these component pages +status: published # published | draft | deprecated +--- + + +Content here... + + +``` + +**Topics** determine where guidance appears on the component page. Only these values are recognized by the rendering code in `src/lib/content-queries.ts`: + +- **Usage tab:** `types`, `states`, `sizing`, `icons`, `positioning`, `content`, `other` +- **Accessibility tab:** `screen-readers`, `keyboard`, `focus` + +The schema in `config.ts` accepts additional topic values (usage, interaction, forms, layout, performance, accessibility, feedback), but any guidance using those topics will be **silently filtered out** and won't render on the page. Stick to the values above. + +### Examples (`src/content/examples/*/`) + +Each example is a folder with an `index.mdx` + framework code files: + +``` +src/content/examples/button-with-icon/ +├── index.mdx # Frontmatter + description +├── react.tsx # React implementation +├── angular.html # Angular template +├── angular.ts # Angular component class +└── web-components.html # Web components implementation +``` + +```yaml +# index.mdx frontmatter +--- +id: button-with-icon +title: Button with Icon +categories: [inputs-and-actions] # content-layout | feedback-and-alerts | inputs-and-actions | forms | structure-and-navigation | technical +scale: interaction # interaction | task | page | service +userType: both # citizen | worker | both +tags: [icons, buttons] +components: [button, icon] # links this example to component pages +accessibilityNotes: | + Button text provides the accessible name. +status: published +--- +``` + +Example code is loaded at build time via Vite glob imports (`src/lib/example-code.ts`). + +--- + +## Configuration previews + +The interactive preview at the top of each component page (dropdown + live preview + code snippet). + +**Files:** `src/data/configurations/.ts` +**Registry:** `src/data/configurations/index.ts` + +Each file exports an object with preset configurations: + +```typescript +export const buttonConfigurations: ComponentConfigurations = { + componentSlug: "button", + componentName: "Button", + defaultConfigurationId: "basic", + configurations: [ + { + id: "basic", + name: "Primary button", + code: { + react: `Submit`, + angular: `Submit`, + webComponents: `Submit`, + }, + }, + // ... more variants + ], +}; +``` + +**Note:** Most configuration code uses `Goabx` / `goabx-` prefixes (experimental V2 wrappers). However, not all components have experimental wrappers — some (like accordion) only have standard wrappers (`GoabAccordion` / `goab-accordion`). Check `libs/react-components/src/experimental/` to see which components have experimental versions. + +**Slots across frameworks:** Each configuration file contains code for all three frameworks, and slots work differently in each: + +- **Web Components:** native `slot="name"` attribute — `
    ...
    ` +- **React:** slots become JSX props — `actions={
    ...
    }` +- **Angular:** slots become `TemplateRef` inputs with `ng-template` — `[actions]="actionsTemplate"` and `...` + +This is a common source of errors when writing configuration code since all three are in the same file. + +--- + +## How to: common changes + +### Add a new component page + +1. **Create the MDX file:** + + ```bash + # Create src/content/components/my-component.mdx + ``` + + Add frontmatter with name, description, status, category, framework identifiers. See any existing file for the template. + +2. **API data is automatic.** As long as the Svelte component exists in `libs/web-components/src/components/my-component/`, the build extracts its API. The slug must match the folder name. + +3. **Add a configuration preview** (optional but recommended): + - Create `src/data/configurations/my-component.ts` + - Export a `ComponentConfigurations` object + - Add the import + export to `src/data/configurations/index.ts` + - Add the slug to the `configurationRegistry` object in the same file + +4. The component appears in the nav and grid automatically. The side nav is built dynamically from the content collection — Astro queries all component MDX files, groups them by `category`, and passes the data to `ComponentsSubMenu` via `nav-categories.ts`. No hardcoded nav lists to update. + +### Hide a component from navigation + +Set `hidden: true` in the component's MDX frontmatter. It won't appear in the nav or component grid, but the page still exists if you visit the URL directly. + +### Add guidance for a component + +1. Create `src/content/guidance/.mdx` +2. Set `appliesTo.components` to include the component slug(s) +3. Choose the right `type` (do/dont/tip/warning/info) and `topic` +4. The guidance appears automatically on those component pages, in the correct tab + +One guidance atom can apply to multiple components — just list them all in `appliesTo.components`. + +### Add a new example + +1. Create a folder: `src/content/examples/my-example/` +2. Add `index.mdx` with frontmatter (id, title, categories, scale, components, etc.) +3. Add framework files: + - `react.tsx` — React implementation + - `angular.html` + `angular.ts` — Angular template and component + - `web-components.html` — Web components HTML +4. List the component slugs in the `components` array — this links the example to those component pages + +All three framework files are optional, but at least one is needed. + +### Update a configuration preview + +Edit the relevant file in `src/data/configurations/.ts`. Each configuration has an `id`, `name`, and `code` with React/Angular/Web Components snippets. + +### Add/update a component thumbnail + +Place an SVG in `docs/public/thumbnails/.svg`. The components grid references these. + +--- + +## Key files reference + +| What | Where | +| ----------------------- | ------------------------------------------------ | +| Astro config | `docs/astro.config.mjs` | +| Content schemas | `docs/src/content/config.ts` | +| Component page template | `docs/src/pages/components/[slug].astro` | +| Example page template | `docs/src/pages/examples/[slug].astro` | +| Content query helpers | `docs/src/lib/content-queries.ts` | +| Example code loader | `docs/src/lib/example-code.ts` | +| API extraction script | `docs/src/scripts/extract-api.ts` | +| Configuration registry | `docs/src/data/configurations/index.ts` | +| Configuration types | `docs/src/data/configurations/types.ts` | +| JSX workarounds | `docs/src/global.d.ts` | +| Layouts | `docs/src/layouts/` | +| Generated API JSON | `docs/generated/component-apis/` | + +--- + +## How component pages are assembled + +The page template (`src/pages/components/[slug].astro`) pulls from five sources: + +1. **MDX content** — renders the component's `.mdx` file (mostly frontmatter-driven) +2. **Extracted API** — `getComponentApi(slug)` loads from `generated/component-apis/.json` +3. **Guidance** — `getGuidanceForComponent(slug)` filters guidance where `appliesTo.components` includes this slug, then splits into usage vs accessibility topics +4. **Examples** — `getExamplesForComponent(slug)` filters examples where `components` includes this slug +5. **Configurations** — `getComponentConfigurations(slug)` looks up from the registry + +These are rendered into four tabs: Properties, Examples, Usage guidelines, Accessibility. + +--- + +## Framework preference sync + +The site has a framework preference switcher (React / Angular / Web Components). The choice is stored in `localStorage` and synced across tabs via `CustomEvent`. See `src/lib/framework-preference.ts`. + +Configuration previews and example code tabs both respect this preference — change it once and it applies everywhere. + +--- + +## Workarounds and known issues + +### `global.d.ts` — JSX type workarounds + +When a React wrapper doesn't support a V2 feature yet, we declare the raw web component in JSX so TypeScript doesn't error. Each entry has a tracking issue: + +- `goa-badge` — V2 types not in wrapper ([#3385](https://github.com/GovAlta/ui-components/issues/3385)) +- `goa-table` — V2 styling issues ([#3384](https://github.com/GovAlta/ui-components/issues/3384)) +- `goa-table-sort-header` — missing sortOrder prop +- `goa-tabs` / `goa-tab` — missing updateUrl and stackOnMobile props + +When the wrapper is fixed, remove the corresponding `global.d.ts` entry and switch to the React wrapper. + +### Design tokens V2 + +The docs site uses V2 tokens via an npm alias: + +```json +"@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.0.0" +``` + +Referenced in code as `@design-tokens` (Vite alias). This lets us use V2 tokens while the main package is still at V1 for other consumers. + +### `client:only="react"` hydration + +Some React components (like `ConfigurationPreview`) use `client:only="react"` instead of `client:load`. This avoids SSR hydration mismatches with web components. If you see React state issues during SSR, this is the fix. + +### Web components need a build + +The docs site resolves `@abgov/web-components` to `dist/libs/web-components/`. If you're seeing missing components in dev, run a build from the repo root first: + +```bash +cd /path/to/ui-components +npm run build +``` + +--- + +## What's still planned + +- **Wrapper-based extraction** — Extract React/Angular prop names from wrappers too, not just Svelte. Blocked on [#3361](https://github.com/GovAlta/ui-components/issues/3361). +- **Automated example screenshots** — Generate preview images for the examples grid automatically. +- **MCP JSON generation** — Generate the MCP server's knowledge base from the docs site content, closing the loop between docs and AI tooling. diff --git a/docs/generated/component-apis/accordion.json b/docs/generated/component-apis/accordion.json index d1a728750d..132e50b852 100644 --- a/docs/generated/component-apis/accordion.json +++ b/docs/generated/component-apis/accordion.json @@ -1,7 +1,6 @@ { "componentSlug": "accordion", "extractedFrom": "libs/web-components/src/components/accordion/Accordion.svelte", - "extractedAt": "2026-02-04T08:10:50.390Z", "props": [ { "name": "open", diff --git a/docs/generated/component-apis/app-header-menu.json b/docs/generated/component-apis/app-header-menu.json index 02665ecfbc..1e8fca8a88 100644 --- a/docs/generated/component-apis/app-header-menu.json +++ b/docs/generated/component-apis/app-header-menu.json @@ -1,7 +1,6 @@ { "componentSlug": "app-header-menu", "extractedFrom": "libs/web-components/src/components/app-header-menu/AppHeaderMenu.svelte", - "extractedAt": "2026-02-04T08:10:50.392Z", "props": [ { "name": "heading", @@ -29,6 +28,17 @@ "default": "primary", "description": "The menu style variant. Primary uses bold text, secondary uses regular weight." }, + { + "name": "version", + "type": "\"1\" | \"2\"", + "values": [ + "1", + "2" + ], + "required": false, + "default": "1", + "description": "The header version this menu is used with." + }, { "name": "testId", "type": "string", diff --git a/docs/generated/component-apis/app-header-navigation.json b/docs/generated/component-apis/app-header-navigation.json new file mode 100644 index 0000000000..8d8a1251fc --- /dev/null +++ b/docs/generated/component-apis/app-header-navigation.json @@ -0,0 +1,38 @@ +{ + "componentSlug": "app-header-navigation", + "extractedFrom": "libs/web-components/src/components/app-header-navigation/AppHeaderNavigation.svelte", + "props": [ + { + "name": "version", + "type": "\"1\" | \"2\"", + "values": [ + "1", + "2" + ], + "required": false, + "default": "1", + "description": "" + }, + { + "name": "windowWidth", + "type": "number", + "required": true, + "default": null, + "description": "" + }, + { + "name": "mobile", + "type": "boolean", + "required": false, + "default": "false", + "description": "" + } + ], + "events": [], + "slots": [ + { + "name": "default", + "description": "" + } + ] +} \ No newline at end of file diff --git a/docs/generated/component-apis/app-header.json b/docs/generated/component-apis/app-header.json index 4e4aae8a3e..164f93138c 100644 --- a/docs/generated/component-apis/app-header.json +++ b/docs/generated/component-apis/app-header.json @@ -1,8 +1,18 @@ { "componentSlug": "app-header", "extractedFrom": "libs/web-components/src/components/app-header/AppHeader.svelte", - "extractedAt": "2026-02-04T08:10:50.392Z", "props": [ + { + "name": "version", + "type": "\"1\" | \"2\"", + "values": [ + "1", + "2" + ], + "required": false, + "default": "1", + "description": "" + }, { "name": "heading", "type": "string", @@ -10,6 +20,13 @@ "default": "", "description": "Set the service name to display in the app header." }, + { + "name": "secondarytext", + "type": "string", + "required": false, + "default": "", + "description": "V2 only: Secondary text displayed under the service name." + }, { "name": "url", "type": "string", @@ -68,6 +85,22 @@ { "name": "default", "description": "" + }, + { + "name": "banner", + "description": "" + }, + { + "name": "phase", + "description": "" + }, + { + "name": "utilities", + "description": "" + }, + { + "name": "navigation", + "description": "" } ] } \ No newline at end of file diff --git a/docs/generated/component-apis/badge.json b/docs/generated/component-apis/badge.json index c43ec0a408..cc16d9e39b 100644 --- a/docs/generated/component-apis/badge.json +++ b/docs/generated/component-apis/badge.json @@ -1,7 +1,6 @@ { "componentSlug": "badge", "extractedFrom": "libs/web-components/src/components/badge/Badge.svelte", - "extractedAt": "2026-02-04T08:10:50.393Z", "props": [ { "name": "type", diff --git a/docs/generated/component-apis/block.json b/docs/generated/component-apis/block.json index 476ccb2ac6..499c8e80e5 100644 --- a/docs/generated/component-apis/block.json +++ b/docs/generated/component-apis/block.json @@ -1,7 +1,6 @@ { "componentSlug": "block", "extractedFrom": "libs/web-components/src/components/block/Block.svelte", - "extractedAt": "2026-02-04T08:10:50.394Z", "props": [ { "name": "gap", diff --git a/docs/generated/component-apis/button-group.json b/docs/generated/component-apis/button-group.json index 6c07fe07aa..8014882d01 100644 --- a/docs/generated/component-apis/button-group.json +++ b/docs/generated/component-apis/button-group.json @@ -1,7 +1,6 @@ { "componentSlug": "button-group", "extractedFrom": "libs/web-components/src/components/button-group/ButtonGroup.svelte", - "extractedAt": "2026-02-04T08:10:50.394Z", "props": [ { "name": "alignment", diff --git a/docs/generated/component-apis/button.json b/docs/generated/component-apis/button.json index 969cc8656b..755dffddc7 100644 --- a/docs/generated/component-apis/button.json +++ b/docs/generated/component-apis/button.json @@ -1,7 +1,6 @@ { "componentSlug": "button", "extractedFrom": "libs/web-components/src/components/button/Button.svelte", - "extractedAt": "2026-02-04T08:10:50.394Z", "props": [ { "name": "type", diff --git a/docs/generated/component-apis/calendar.json b/docs/generated/component-apis/calendar.json index a404130e5b..5a6285f88b 100644 --- a/docs/generated/component-apis/calendar.json +++ b/docs/generated/component-apis/calendar.json @@ -1,7 +1,6 @@ { "componentSlug": "calendar", "extractedFrom": "libs/web-components/src/components/calendar/Calendar.svelte", - "extractedAt": "2026-02-04T08:10:50.395Z", "props": [ { "name": "name", diff --git a/docs/generated/component-apis/callout.json b/docs/generated/component-apis/callout.json index 1487db5865..bbb0415aca 100644 --- a/docs/generated/component-apis/callout.json +++ b/docs/generated/component-apis/callout.json @@ -1,7 +1,6 @@ { "componentSlug": "callout", "extractedFrom": "libs/web-components/src/components/callout/Callout.svelte", - "extractedAt": "2026-02-04T08:10:50.395Z", "props": [ { "name": "mt", diff --git a/docs/generated/component-apis/card-actions.json b/docs/generated/component-apis/card-actions.json index 407acdc9ca..9efe3cc159 100644 --- a/docs/generated/component-apis/card-actions.json +++ b/docs/generated/component-apis/card-actions.json @@ -1,7 +1,6 @@ { "componentSlug": "card-actions", "extractedFrom": "libs/web-components/src/components/card-actions/CardActions.svelte", - "extractedAt": "2026-02-04T08:10:50.396Z", "props": [], "events": [], "slots": [ diff --git a/docs/generated/component-apis/card-content.json b/docs/generated/component-apis/card-content.json index eaa9415441..e757b05dbe 100644 --- a/docs/generated/component-apis/card-content.json +++ b/docs/generated/component-apis/card-content.json @@ -1,7 +1,6 @@ { "componentSlug": "card-content", "extractedFrom": "libs/web-components/src/components/card-content/CardContent.svelte", - "extractedAt": "2026-02-04T08:10:50.396Z", "props": [], "events": [], "slots": [ diff --git a/docs/generated/component-apis/card-group.json b/docs/generated/component-apis/card-group.json index 7dfb5247c7..5ca2073983 100644 --- a/docs/generated/component-apis/card-group.json +++ b/docs/generated/component-apis/card-group.json @@ -1,7 +1,6 @@ { "componentSlug": "card-group", "extractedFrom": "libs/web-components/src/components/card-group/CardGroup.svelte", - "extractedAt": "2026-02-04T08:10:50.396Z", "props": [], "events": [], "slots": [ diff --git a/docs/generated/component-apis/card-image.json b/docs/generated/component-apis/card-image.json index dcccaedd40..6569d15281 100644 --- a/docs/generated/component-apis/card-image.json +++ b/docs/generated/component-apis/card-image.json @@ -1,7 +1,6 @@ { "componentSlug": "card-image", "extractedFrom": "libs/web-components/src/components/card-image/CardImage.svelte", - "extractedAt": "2026-02-04T08:10:50.396Z", "props": [ { "name": "src", diff --git a/docs/generated/component-apis/card.json b/docs/generated/component-apis/card.json index e885f3ddb7..bff87bf697 100644 --- a/docs/generated/component-apis/card.json +++ b/docs/generated/component-apis/card.json @@ -1,7 +1,6 @@ { "componentSlug": "card", "extractedFrom": "libs/web-components/src/components/card/Card.svelte", - "extractedAt": "2026-02-04T08:10:50.395Z", "props": [ { "name": "elevation", diff --git a/docs/generated/component-apis/checkbox-list.json b/docs/generated/component-apis/checkbox-list.json index 749952d938..921345b50f 100644 --- a/docs/generated/component-apis/checkbox-list.json +++ b/docs/generated/component-apis/checkbox-list.json @@ -1,7 +1,6 @@ { "componentSlug": "checkbox-list", "extractedFrom": "libs/web-components/src/components/checkbox-list/CheckboxList.svelte", - "extractedAt": "2026-02-04T19:24:42.584Z", "props": [ { "name": "name", @@ -45,6 +44,17 @@ "default": "none", "description": "Sets the maximum width of the checkbox list container." }, + { + "name": "size", + "type": "\"default\" | \"compact\"", + "values": [ + "default", + "compact" + ], + "required": false, + "default": "default", + "description": "Sets the size of the checkbox list. 'compact' reduces spacing between items." + }, { "name": "mt", "type": "Spacing", diff --git a/docs/generated/component-apis/checkbox.json b/docs/generated/component-apis/checkbox.json index 3db9f637d4..5e2809db8e 100644 --- a/docs/generated/component-apis/checkbox.json +++ b/docs/generated/component-apis/checkbox.json @@ -1,7 +1,6 @@ { "componentSlug": "checkbox", "extractedFrom": "libs/web-components/src/components/checkbox/Checkbox.svelte", - "extractedAt": "2026-02-04T08:10:50.397Z", "props": [ { "name": "name", diff --git a/docs/generated/component-apis/chip.json b/docs/generated/component-apis/chip.json index cb2fc27d5b..ed45fe3d41 100644 --- a/docs/generated/component-apis/chip.json +++ b/docs/generated/component-apis/chip.json @@ -1,7 +1,6 @@ { "componentSlug": "chip", "extractedFrom": "libs/web-components/src/components/chip/Chip.svelte", - "extractedAt": "2026-02-04T08:10:50.398Z", "props": [ { "name": "mt", @@ -78,7 +77,7 @@ }, { "name": "variant", - "type": "ChipVariant", + "type": "\"filter\"", "required": true, "default": null, "description": "@deprecated Use GoAFilterChip instead. The chip variant style.", diff --git a/docs/generated/component-apis/circular-progress.json b/docs/generated/component-apis/circular-progress.json index 14f29e041b..15cdda806d 100644 --- a/docs/generated/component-apis/circular-progress.json +++ b/docs/generated/component-apis/circular-progress.json @@ -1,7 +1,6 @@ { "componentSlug": "circular-progress", "extractedFrom": "libs/web-components/src/components/circular-progress/CircularProgress.svelte", - "extractedAt": "2026-02-04T08:10:50.399Z", "props": [ { "name": "variant", diff --git a/docs/generated/component-apis/container.json b/docs/generated/component-apis/container.json index f86316b7a5..6b8be6c90d 100644 --- a/docs/generated/component-apis/container.json +++ b/docs/generated/component-apis/container.json @@ -1,7 +1,6 @@ { "componentSlug": "container", "extractedFrom": "libs/web-components/src/components/container/Container.svelte", - "extractedAt": "2026-02-04T08:10:50.399Z", "props": [ { "name": "type", diff --git a/docs/generated/component-apis/data-grid.json b/docs/generated/component-apis/data-grid.json index ff058c8495..bf52986bea 100644 --- a/docs/generated/component-apis/data-grid.json +++ b/docs/generated/component-apis/data-grid.json @@ -1,7 +1,6 @@ { "componentSlug": "data-grid", "extractedFrom": "libs/web-components/src/components/data-grid/DataGrid.svelte", - "extractedAt": "2026-02-04T08:10:50.400Z", "props": [ { "name": "keyboardIconVisibility", diff --git a/docs/generated/component-apis/date-picker.json b/docs/generated/component-apis/date-picker.json index a65aaa58c1..536705b8ef 100644 --- a/docs/generated/component-apis/date-picker.json +++ b/docs/generated/component-apis/date-picker.json @@ -1,7 +1,6 @@ { "componentSlug": "date-picker", "extractedFrom": "libs/web-components/src/components/date-picker/DatePicker.svelte", - "extractedAt": "2026-02-04T08:10:50.400Z", "props": [ { "name": "type", diff --git a/docs/generated/component-apis/details.json b/docs/generated/component-apis/details.json index 569bd66ee5..0a698e46db 100644 --- a/docs/generated/component-apis/details.json +++ b/docs/generated/component-apis/details.json @@ -1,7 +1,6 @@ { "componentSlug": "details", "extractedFrom": "libs/web-components/src/components/details/Details.svelte", - "extractedAt": "2026-02-04T08:10:50.401Z", "props": [ { "name": "heading", diff --git a/docs/generated/component-apis/divider.json b/docs/generated/component-apis/divider.json index 8cdfb589a3..4982fd0656 100644 --- a/docs/generated/component-apis/divider.json +++ b/docs/generated/component-apis/divider.json @@ -1,7 +1,6 @@ { "componentSlug": "divider", "extractedFrom": "libs/web-components/src/components/divider/Divider.svelte", - "extractedAt": "2026-02-04T08:10:50.401Z", "props": [ { "name": "testId", diff --git a/docs/generated/component-apis/drawer.json b/docs/generated/component-apis/drawer.json index 455940af7d..c77e1dc2dd 100644 --- a/docs/generated/component-apis/drawer.json +++ b/docs/generated/component-apis/drawer.json @@ -1,7 +1,6 @@ { "componentSlug": "drawer", "extractedFrom": "libs/web-components/src/components/drawer/Drawer.svelte", - "extractedAt": "2026-02-04T08:10:50.401Z", "props": [ { "name": "open", @@ -40,7 +39,11 @@ }, { "name": "version", - "type": "VersionType", + "type": "\"1\" | \"2\"", + "values": [ + "1", + "2" + ], "required": false, "default": "1", "description": "" diff --git a/docs/generated/component-apis/dropdown.json b/docs/generated/component-apis/dropdown.json index ee0dbe9395..76012d4799 100644 --- a/docs/generated/component-apis/dropdown.json +++ b/docs/generated/component-apis/dropdown.json @@ -1,7 +1,6 @@ { "componentSlug": "dropdown", "extractedFrom": "libs/web-components/src/components/dropdown/Dropdown.svelte", - "extractedAt": "2026-02-04T08:10:50.403Z", "props": [ { "name": "name", @@ -26,11 +25,7 @@ }, { "name": "value", - "type": "string | undefined", - "values": [ - "string", - "undefined" - ], + "type": "string", "required": false, "default": "", "description": "Stores the value of the item selected from the dropdown." diff --git a/docs/generated/component-apis/file-upload-card.json b/docs/generated/component-apis/file-upload-card.json index 0290fe9ffb..eef41bd76c 100644 --- a/docs/generated/component-apis/file-upload-card.json +++ b/docs/generated/component-apis/file-upload-card.json @@ -1,7 +1,6 @@ { "componentSlug": "file-upload-card", "extractedFrom": "libs/web-components/src/components/file-upload-card/FileUploadCard.svelte", - "extractedAt": "2026-02-04T08:10:50.404Z", "props": [ { "name": "filename", diff --git a/docs/generated/component-apis/file-upload-input.json b/docs/generated/component-apis/file-upload-input.json index 675cc1ba78..360834b1bb 100644 --- a/docs/generated/component-apis/file-upload-input.json +++ b/docs/generated/component-apis/file-upload-input.json @@ -1,11 +1,14 @@ { "componentSlug": "file-upload-input", "extractedFrom": "libs/web-components/src/components/file-upload-input/FileUploadInput.svelte", - "extractedAt": "2026-02-04T08:10:50.404Z", "props": [ { "name": "variant", - "type": "Variant", + "type": "\"dragdrop\" | \"button\"", + "values": [ + "dragdrop", + "button" + ], "required": false, "default": "dragdrop", "description": "The input display variant. \"dragdrop\" shows a drag-and-drop area, \"button\" shows a simple button." diff --git a/docs/generated/component-apis/filter-chip.json b/docs/generated/component-apis/filter-chip.json index 227ab5800c..ebe6047613 100644 --- a/docs/generated/component-apis/filter-chip.json +++ b/docs/generated/component-apis/filter-chip.json @@ -1,7 +1,6 @@ { "componentSlug": "filter-chip", "extractedFrom": "libs/web-components/src/components/filter-chip/FilterChip.svelte", - "extractedAt": "2026-02-04T08:10:50.404Z", "props": [ { "name": "mt", diff --git a/docs/generated/component-apis/focus-trap.json b/docs/generated/component-apis/focus-trap.json index 5b67b45af1..fdbda8a84b 100644 --- a/docs/generated/component-apis/focus-trap.json +++ b/docs/generated/component-apis/focus-trap.json @@ -1,7 +1,6 @@ { "componentSlug": "focus-trap", "extractedFrom": "libs/web-components/src/components/focus-trap/FocusTrap.svelte", - "extractedAt": "2026-02-04T08:10:50.405Z", "props": [ { "name": "open", diff --git a/docs/generated/component-apis/footer-meta-section.json b/docs/generated/component-apis/footer-meta-section.json index 8a0a1b2c2d..2fbe01ebb2 100644 --- a/docs/generated/component-apis/footer-meta-section.json +++ b/docs/generated/component-apis/footer-meta-section.json @@ -1,7 +1,6 @@ { "componentSlug": "footer-meta-section", "extractedFrom": "libs/web-components/src/components/footer-meta-section/FooterMetaSection.svelte", - "extractedAt": "2026-02-04T08:10:50.405Z", "props": [ { "name": "testId", diff --git a/docs/generated/component-apis/footer-nav-section.json b/docs/generated/component-apis/footer-nav-section.json index 9891387078..c4016d9b34 100644 --- a/docs/generated/component-apis/footer-nav-section.json +++ b/docs/generated/component-apis/footer-nav-section.json @@ -1,7 +1,6 @@ { "componentSlug": "footer-nav-section", "extractedFrom": "libs/web-components/src/components/footer-nav-section/FooterNavSection.svelte", - "extractedAt": "2026-02-04T08:10:50.406Z", "props": [ { "name": "heading", diff --git a/docs/generated/component-apis/footer.json b/docs/generated/component-apis/footer.json index a25e04ab98..fc3313b76e 100644 --- a/docs/generated/component-apis/footer.json +++ b/docs/generated/component-apis/footer.json @@ -1,7 +1,6 @@ { "componentSlug": "footer", "extractedFrom": "libs/web-components/src/components/footer/Footer.svelte", - "extractedAt": "2026-02-04T08:10:50.405Z", "props": [ { "name": "maxcontentwidth", diff --git a/docs/generated/component-apis/form-item.json b/docs/generated/component-apis/form-item.json index f6636112fd..2785c75759 100644 --- a/docs/generated/component-apis/form-item.json +++ b/docs/generated/component-apis/form-item.json @@ -1,7 +1,6 @@ { "componentSlug": "form-item", "extractedFrom": "libs/web-components/src/components/form-item/FormItem.svelte", - "extractedAt": "2026-02-04T08:10:50.407Z", "props": [ { "name": "mt", diff --git a/docs/generated/component-apis/form-step.json b/docs/generated/component-apis/form-step.json index 5491572709..d8bfb22ee0 100644 --- a/docs/generated/component-apis/form-step.json +++ b/docs/generated/component-apis/form-step.json @@ -1,7 +1,6 @@ { "componentSlug": "form-step", "extractedFrom": "libs/web-components/src/components/form-step/FormStep.svelte", - "extractedAt": "2026-02-04T08:10:50.408Z", "props": [ { "name": "text", @@ -12,10 +11,11 @@ }, { "name": "status", - "type": "FormStepStatus | undefined", + "type": "\"complete\" | \"incomplete\" | \"not-started\"", "values": [ - "FormStepStatus", - "undefined" + "complete", + "incomplete", + "not-started" ], "required": false, "default": null, diff --git a/docs/generated/component-apis/form-stepper.json b/docs/generated/component-apis/form-stepper.json index 83747ad003..78f1db04e2 100644 --- a/docs/generated/component-apis/form-stepper.json +++ b/docs/generated/component-apis/form-stepper.json @@ -1,7 +1,6 @@ { "componentSlug": "form-stepper", "extractedFrom": "libs/web-components/src/components/form-stepper/FormStepper.svelte", - "extractedAt": "2026-02-04T08:10:50.408Z", "props": [ { "name": "step", diff --git a/docs/generated/component-apis/form.json b/docs/generated/component-apis/form.json index b8d1d2270d..f60c7e3fb6 100644 --- a/docs/generated/component-apis/form.json +++ b/docs/generated/component-apis/form.json @@ -1,7 +1,6 @@ { "componentSlug": "form", "extractedFrom": "libs/web-components/src/components/form/Form.svelte", - "extractedAt": "2026-02-04T08:10:50.407Z", "props": [ { "name": "status", diff --git a/docs/generated/component-apis/grid.json b/docs/generated/component-apis/grid.json index ba37934cae..3bad56dd41 100644 --- a/docs/generated/component-apis/grid.json +++ b/docs/generated/component-apis/grid.json @@ -1,7 +1,6 @@ { "componentSlug": "grid", "extractedFrom": "libs/web-components/src/components/grid/Grid.svelte", - "extractedAt": "2026-02-04T08:10:50.408Z", "props": [ { "name": "gap", diff --git a/docs/generated/component-apis/hero-banner.json b/docs/generated/component-apis/hero-banner.json index 38c9bc89ad..c5185159b6 100644 --- a/docs/generated/component-apis/hero-banner.json +++ b/docs/generated/component-apis/hero-banner.json @@ -1,7 +1,6 @@ { "componentSlug": "hero-banner", "extractedFrom": "libs/web-components/src/components/hero-banner/HeroBanner.svelte", - "extractedAt": "2026-02-04T08:10:50.408Z", "props": [ { "name": "heading", diff --git a/docs/generated/component-apis/icon-button.json b/docs/generated/component-apis/icon-button.json index 19cec5c09f..9b3ca9c4e2 100644 --- a/docs/generated/component-apis/icon-button.json +++ b/docs/generated/component-apis/icon-button.json @@ -1,7 +1,6 @@ { "componentSlug": "icon-button", "extractedFrom": "libs/web-components/src/components/icon-button/IconButton.svelte", - "extractedAt": "2026-02-04T08:10:50.410Z", "props": [ { "name": "icon", diff --git a/docs/generated/component-apis/icon.json b/docs/generated/component-apis/icon.json index a8ebbfecff..d69598cc20 100644 --- a/docs/generated/component-apis/icon.json +++ b/docs/generated/component-apis/icon.json @@ -1,7 +1,6 @@ { "componentSlug": "icon", "extractedFrom": "libs/web-components/src/components/icon/Icon.svelte", - "extractedAt": "2026-02-04T08:10:50.410Z", "props": [ { "name": "mt", @@ -37,22 +36,546 @@ }, { "name": "type", - "type": "GoAIconType", + "type": "\"accessibility\" | \"add-circle\" | \"add\" | \"airplane\" | \"alarm\" | \"albums\" | \"alert-circle\" | \"alert\" | \"american-football\" | \"analytics\" | \"aperture\" | \"apps\" | \"archive\" | \"arrow-back-circle\" | \"arrow-back\" | \"arrow-down-circle\" | \"arrow-down\" | \"arrow-forward-circle\" | \"arrow-forward\" | \"arrow-redo-circle\" | \"arrow-redo\" | \"arrow-undo-circle\" | \"arrow-undo\" | \"arrow-up-circle\" | \"arrow-up\" | \"at-circle\" | \"at\" | \"attach\" | \"backspace\" | \"bag-add\" | \"bag-check\" | \"bag-handle\" | \"bag\" | \"bag-remove\" | \"balloon\" | \"ban\" | \"bandage\" | \"bar-chart\" | \"barbell\" | \"barcode\" | \"baseball\" | \"basket\" | \"basketball\" | \"battery-charging\" | \"battery-dead\" | \"battery-full\" | \"battery-half\" | \"beaker\" | \"bed\" | \"beer\" | \"bicycle\" | \"bluetooth\" | \"boat\" | \"body\" | \"bonfire\" | \"book\" | \"bookmark\" | \"bookmarks\" | \"bowling-ball\" | \"briefcase\" | \"browsers\" | \"brush\" | \"bug\" | \"build\" | \"bulb\" | \"bus\" | \"business\" | \"cafe\" | \"calculator\" | \"calendar-clear\" | \"calendar-number\" | \"calendar\" | \"call\" | \"camera\" | \"camera-reverse\" | \"car\" | \"car-sport\" | \"card\" | \"caret-back-circle\" | \"caret-back\" | \"caret-down-circle\" | \"caret-down\" | \"caret-forward-circle\" | \"caret-forward\" | \"caret-up-circle\" | \"caret-up\" | \"cart\" | \"cash\" | \"cellular\" | \"chatbox-ellipses\" | \"chatbox\" | \"chatbubble-ellipses\" | \"chatbubble\" | \"chatbubbles\" | \"checkbox\" | \"checkmark-circle\" | \"checkmark-done-circle\" | \"checkmark-done\" | \"chevron-back-circle\" | \"chevron-back\" | \"chevron-down-circle\" | \"chevron-down\" | \"chevron-expand\" | \"chevron-forward-circle\" | \"chevron-forward\" | \"chevron-up-circle\" | \"chevron-up\" | \"clipboard\" | \"close-circle\" | \"close\" | \"cloud-circle\" | \"cloud-done\" | \"cloud-download\" | \"cloud-offline\" | \"cloud\" | \"cloud-upload\" | \"cloudy-night\" | \"cloudy\" | \"code-download\" | \"code\" | \"code-slash\" | \"code-working\" | \"cog\" | \"color-fill\" | \"color-filter\" | \"color-palette\" | \"color-wand\" | \"compass\" | \"construct\" | \"contract\" | \"contrast\" | \"copy\" | \"create\" | \"crop\" | \"cube\" | \"cut\" | \"desktop\" | \"diamond\" | \"dice\" | \"disc\" | \"document-attach\" | \"document-lock\" | \"document\" | \"document-text\" | \"documents\" | \"download\" | \"duplicate\" | \"ear\" | \"earth\" | \"easel\" | \"egg\" | \"ellipse\" | \"ellipsis-horizontal-circle\" | \"ellipsis-horizontal\" | \"ellipsis-vertical-circle\" | \"ellipsis-vertical\" | \"enter\" | \"exit\" | \"expand\" | \"extension-puzzle\" | \"eye-off\" | \"eye\" | \"eyedrop\" | \"fast-food\" | \"female\" | \"file-tray-full\" | \"file-tray\" | \"file-tray-stacked\" | \"filenames.ps1\" | \"film\" | \"filter-circle\" | \"filter-lines\" | \"filter\" | \"finger-print\" | \"fish\" | \"fitness\" | \"flag\" | \"flame\" | \"flash-off\" | \"flash\" | \"flashlight\" | \"flask\" | \"flower\" | \"folder-open\" | \"folder\" | \"football\" | \"footsteps\" | \"funnel\" | \"game-controller\" | \"gift\" | \"git-branch\" | \"git-commit\" | \"git-compare\" | \"git-merge\" | \"git-network\" | \"git-pull-request\" | \"glasses\" | \"globe\" | \"golf\" | \"grid\" | \"hammer\" | \"hand-left\" | \"hand-right\" | \"happy\" | \"hardware-chip\" | \"headset\" | \"heart-circle\" | \"heart-dislike-circle\" | \"heart-dislike\" | \"heart-half\" | \"heart\" | \"help-buoy\" | \"help-circle\" | \"help\" | \"home\" | \"hourglass\" | \"ice-cream\" | \"id-card\" | \"image\" | \"images\" | \"infinite\" | \"information-circle\" | \"information\" | \"invert-mode\" | \"journal\" | \"key\" | \"keypad\" | \"language\" | \"laptop\" | \"layers\" | \"leaf\" | \"library\" | \"link\" | \"list-circle\" | \"list\" | \"locate\" | \"location\" | \"lock-closed\" | \"lock-open\" | \"log-in\" | \"log-out\" | \"magnet\" | \"mail-open\" | \"mail\" | \"mail-unread\" | \"male-female\" | \"male\" | \"man\" | \"map\" | \"medal\" | \"medical\" | \"medkit\" | \"megaphone\" | \"menu\" | \"mic-circle\" | \"mic-off-circle\" | \"mic-off\" | \"mic\" | \"moon\" | \"move\" | \"musical-note\" | \"musical-notes\" | \"navigate-circle\" | \"navigate\" | \"newspaper\" | \"notifications-circle\" | \"notifications-off-circle\" | \"notifications-off\" | \"notifications\" | \"nuclear\" | \"nutrition\" | \"open\" | \"options\" | \"paper-plane\" | \"partly-sunny\" | \"pause-circle\" | \"pause\" | \"paw\" | \"people-circle\" | \"people\" | \"person-add\" | \"person-circle\" | \"person\" | \"person-remove\" | \"phone-landscape\" | \"phone-portrait\" | \"pie-chart\" | \"pin\" | \"pint\" | \"pizza\" | \"planet\" | \"play-back-circle\" | \"play-back\" | \"play-circle\" | \"play-forward-circle\" | \"play-forward\" | \"play\" | \"play-skip-back-circle\" | \"play-skip-back\" | \"play-skip-forward-circle\" | \"play-skip-forward\" | \"podium\" | \"power\" | \"pricetag\" | \"pricetags\" | \"print\" | \"prism\" | \"pulse\" | \"push\" | \"qr-code\" | \"radio-button-off\" | \"radio-button-on\" | \"radio\" | \"rainy\" | \"reader\" | \"receipt\" | \"recording\" | \"refresh-circle\" | \"refresh\" | \"reload-circle\" | \"reload\" | \"remove-circle\" | \"reorder-four\" | \"reorder-three\" | \"reorder-two\" | \"repeat\" | \"resize\" | \"restaurant\" | \"return-down-back\" | \"return-down-forward\" | \"return-up-back\" | \"return-up-forward\" | \"ribbon\" | \"rocket\" | \"rose\" | \"sad\" | \"save\" | \"scale\" | \"scan-circle\" | \"scan\" | \"school\" | \"search-circle\" | \"search\" | \"send\" | \"server\" | \"settings\" | \"shapes\" | \"share\" | \"share-social\" | \"shield-checkmark\" | \"shield-half\" | \"shield\" | \"shirt\" | \"shuffle\" | \"skull\" | \"snow\" | \"sparkles\" | \"speedometer\" | \"square\" | \"star-half\" | \"star\" | \"stats-chart\" | \"stop-circle\" | \"stop\" | \"stopwatch\" | \"storefront\" | \"subway\" | \"sunny\" | \"swap-horizontal\" | \"swap-vertical\" | \"sync-circle\" | \"sync\" | \"tablet-landscape\" | \"tablet-portrait\" | \"telescope\" | \"tennisball\" | \"terminal\" | \"text\" | \"thermometer\" | \"thumbs-down\" | \"thumbs-up\" | \"thunderstorm\" | \"ticket\" | \"time\" | \"timer\" | \"today\" | \"toggle\" | \"trail-sign\" | \"train\" | \"transgender\" | \"trash-bin\" | \"trash\" | \"trending-down\" | \"trending-up\" | \"triangle\" | \"trophy\" | \"tv\" | \"umbrella\" | \"unlink\" | \"videocam-off\" | \"videocam\" | \"volume-high\" | \"volume-low\" | \"volume-medium\" | \"volume-mute\" | \"volume-off\" | \"walk\" | \"wallet\" | \"warning\" | \"watch\" | \"water\" | \"wifi\" | \"wine\" | \"woman\" | \"logo-alipay\" | \"logo-amazon\" | \"logo-amplify\" | \"logo-android\" | \"logo-angular\" | \"logo-apple\" | \"logo-apple-appstore\" | \"logo-apple-ar\" | \"logo-behance\" | \"logo-bitbucket\" | \"logo-bitcoin\" | \"logo-buffer\" | \"logo-capacitor\" | \"logo-chrome\" | \"logo-closed-captioning\" | \"logo-codepen\" | \"logo-css3\" | \"logo-designernews\" | \"logo-deviantart\" | \"logo-discord\" | \"logo-docker\" | \"logo-dribbble\" | \"logo-dropbox\" | \"logo-edge\" | \"logo-electron\" | \"logo-euro\" | \"logo-facebook\" | \"logo-figma\" | \"logo-firebase\" | \"logo-firefox\" | \"logo-flickr\" | \"logo-foursquare\" | \"logo-github\" | \"logo-gitlab\" | \"logo-google\" | \"logo-google-playstore\" | \"logo-hackernews\" | \"logo-html5\" | \"logo-instagram\" | \"logo-ionic\" | \"logo-ionitron\" | \"logo-javascript\" | \"logo-laravel\" | \"logo-linkedin\" | \"logo-markdown\" | \"logo-mastodon\" | \"logo-medium\" | \"logo-microsoft\" | \"logo-no-smoking\" | \"logo-nodejs\" | \"logo-npm\" | \"logo-octocat\" | \"logo-paypal\" | \"logo-pinterest\" | \"logo-playstation\" | \"logo-pwa\" | \"logo-python\" | \"logo-react\" | \"logo-reddit\" | \"logo-rss\" | \"logo-sass\" | \"logo-skype\" | \"logo-slack\" | \"logo-snapchat\" | \"logo-soundcloud\" | \"logo-stackoverflow\" | \"logo-steam\" | \"logo-stencil\" | \"logo-tableau\" | \"logo-tiktok\" | \"logo-tumblr\" | \"logo-tux\" | \"logo-twitch\" | \"logo-twitter\" | \"logo-usd\" | \"logo-venmo\" | \"logo-vercel\" | \"logo-vimeo\" | \"logo-vk\" | \"logo-vue\" | \"logo-web-component\" | \"logo-wechat\" | \"logo-whatsapp\" | \"logo-windows\" | \"logo-wordpress\" | \"logo-xbox\" | \"logo-xing\" | \"logo-yahoo\" | \"logo-yen\" | \"logo-youtube\"", "typeLabel": "GoAIconType", + "values": [ + "accessibility", + "add-circle", + "add", + "airplane", + "alarm", + "albums", + "alert-circle", + "alert", + "american-football", + "analytics", + "aperture", + "apps", + "archive", + "arrow-back-circle", + "arrow-back", + "arrow-down-circle", + "arrow-down", + "arrow-forward-circle", + "arrow-forward", + "arrow-redo-circle", + "arrow-redo", + "arrow-undo-circle", + "arrow-undo", + "arrow-up-circle", + "arrow-up", + "at-circle", + "at", + "attach", + "backspace", + "bag-add", + "bag-check", + "bag-handle", + "bag", + "bag-remove", + "balloon", + "ban", + "bandage", + "bar-chart", + "barbell", + "barcode", + "baseball", + "basket", + "basketball", + "battery-charging", + "battery-dead", + "battery-full", + "battery-half", + "beaker", + "bed", + "beer", + "bicycle", + "bluetooth", + "boat", + "body", + "bonfire", + "book", + "bookmark", + "bookmarks", + "bowling-ball", + "briefcase", + "browsers", + "brush", + "bug", + "build", + "bulb", + "bus", + "business", + "cafe", + "calculator", + "calendar-clear", + "calendar-number", + "calendar", + "call", + "camera", + "camera-reverse", + "car", + "car-sport", + "card", + "caret-back-circle", + "caret-back", + "caret-down-circle", + "caret-down", + "caret-forward-circle", + "caret-forward", + "caret-up-circle", + "caret-up", + "cart", + "cash", + "cellular", + "chatbox-ellipses", + "chatbox", + "chatbubble-ellipses", + "chatbubble", + "chatbubbles", + "checkbox", + "checkmark-circle", + "checkmark-done-circle", + "checkmark-done", + "chevron-back-circle", + "chevron-back", + "chevron-down-circle", + "chevron-down", + "chevron-expand", + "chevron-forward-circle", + "chevron-forward", + "chevron-up-circle", + "chevron-up", + "clipboard", + "close-circle", + "close", + "cloud-circle", + "cloud-done", + "cloud-download", + "cloud-offline", + "cloud", + "cloud-upload", + "cloudy-night", + "cloudy", + "code-download", + "code", + "code-slash", + "code-working", + "cog", + "color-fill", + "color-filter", + "color-palette", + "color-wand", + "compass", + "construct", + "contract", + "contrast", + "copy", + "create", + "crop", + "cube", + "cut", + "desktop", + "diamond", + "dice", + "disc", + "document-attach", + "document-lock", + "document", + "document-text", + "documents", + "download", + "duplicate", + "ear", + "earth", + "easel", + "egg", + "ellipse", + "ellipsis-horizontal-circle", + "ellipsis-horizontal", + "ellipsis-vertical-circle", + "ellipsis-vertical", + "enter", + "exit", + "expand", + "extension-puzzle", + "eye-off", + "eye", + "eyedrop", + "fast-food", + "female", + "file-tray-full", + "file-tray", + "file-tray-stacked", + "filenames.ps1", + "film", + "filter-circle", + "filter-lines", + "filter", + "finger-print", + "fish", + "fitness", + "flag", + "flame", + "flash-off", + "flash", + "flashlight", + "flask", + "flower", + "folder-open", + "folder", + "football", + "footsteps", + "funnel", + "game-controller", + "gift", + "git-branch", + "git-commit", + "git-compare", + "git-merge", + "git-network", + "git-pull-request", + "glasses", + "globe", + "golf", + "grid", + "hammer", + "hand-left", + "hand-right", + "happy", + "hardware-chip", + "headset", + "heart-circle", + "heart-dislike-circle", + "heart-dislike", + "heart-half", + "heart", + "help-buoy", + "help-circle", + "help", + "home", + "hourglass", + "ice-cream", + "id-card", + "image", + "images", + "infinite", + "information-circle", + "information", + "invert-mode", + "journal", + "key", + "keypad", + "language", + "laptop", + "layers", + "leaf", + "library", + "link", + "list-circle", + "list", + "locate", + "location", + "lock-closed", + "lock-open", + "log-in", + "log-out", + "magnet", + "mail-open", + "mail", + "mail-unread", + "male-female", + "male", + "man", + "map", + "medal", + "medical", + "medkit", + "megaphone", + "menu", + "mic-circle", + "mic-off-circle", + "mic-off", + "mic", + "moon", + "move", + "musical-note", + "musical-notes", + "navigate-circle", + "navigate", + "newspaper", + "notifications-circle", + "notifications-off-circle", + "notifications-off", + "notifications", + "nuclear", + "nutrition", + "open", + "options", + "paper-plane", + "partly-sunny", + "pause-circle", + "pause", + "paw", + "people-circle", + "people", + "person-add", + "person-circle", + "person", + "person-remove", + "phone-landscape", + "phone-portrait", + "pie-chart", + "pin", + "pint", + "pizza", + "planet", + "play-back-circle", + "play-back", + "play-circle", + "play-forward-circle", + "play-forward", + "play", + "play-skip-back-circle", + "play-skip-back", + "play-skip-forward-circle", + "play-skip-forward", + "podium", + "power", + "pricetag", + "pricetags", + "print", + "prism", + "pulse", + "push", + "qr-code", + "radio-button-off", + "radio-button-on", + "radio", + "rainy", + "reader", + "receipt", + "recording", + "refresh-circle", + "refresh", + "reload-circle", + "reload", + "remove-circle", + "reorder-four", + "reorder-three", + "reorder-two", + "repeat", + "resize", + "restaurant", + "return-down-back", + "return-down-forward", + "return-up-back", + "return-up-forward", + "ribbon", + "rocket", + "rose", + "sad", + "save", + "scale", + "scan-circle", + "scan", + "school", + "search-circle", + "search", + "send", + "server", + "settings", + "shapes", + "share", + "share-social", + "shield-checkmark", + "shield-half", + "shield", + "shirt", + "shuffle", + "skull", + "snow", + "sparkles", + "speedometer", + "square", + "star-half", + "star", + "stats-chart", + "stop-circle", + "stop", + "stopwatch", + "storefront", + "subway", + "sunny", + "swap-horizontal", + "swap-vertical", + "sync-circle", + "sync", + "tablet-landscape", + "tablet-portrait", + "telescope", + "tennisball", + "terminal", + "text", + "thermometer", + "thumbs-down", + "thumbs-up", + "thunderstorm", + "ticket", + "time", + "timer", + "today", + "toggle", + "trail-sign", + "train", + "transgender", + "trash-bin", + "trash", + "trending-down", + "trending-up", + "triangle", + "trophy", + "tv", + "umbrella", + "unlink", + "videocam-off", + "videocam", + "volume-high", + "volume-low", + "volume-medium", + "volume-mute", + "volume-off", + "walk", + "wallet", + "warning", + "watch", + "water", + "wifi", + "wine", + "woman", + "logo-alipay", + "logo-amazon", + "logo-amplify", + "logo-android", + "logo-angular", + "logo-apple", + "logo-apple-appstore", + "logo-apple-ar", + "logo-behance", + "logo-bitbucket", + "logo-bitcoin", + "logo-buffer", + "logo-capacitor", + "logo-chrome", + "logo-closed-captioning", + "logo-codepen", + "logo-css3", + "logo-designernews", + "logo-deviantart", + "logo-discord", + "logo-docker", + "logo-dribbble", + "logo-dropbox", + "logo-edge", + "logo-electron", + "logo-euro", + "logo-facebook", + "logo-figma", + "logo-firebase", + "logo-firefox", + "logo-flickr", + "logo-foursquare", + "logo-github", + "logo-gitlab", + "logo-google", + "logo-google-playstore", + "logo-hackernews", + "logo-html5", + "logo-instagram", + "logo-ionic", + "logo-ionitron", + "logo-javascript", + "logo-laravel", + "logo-linkedin", + "logo-markdown", + "logo-mastodon", + "logo-medium", + "logo-microsoft", + "logo-no-smoking", + "logo-nodejs", + "logo-npm", + "logo-octocat", + "logo-paypal", + "logo-pinterest", + "logo-playstation", + "logo-pwa", + "logo-python", + "logo-react", + "logo-reddit", + "logo-rss", + "logo-sass", + "logo-skype", + "logo-slack", + "logo-snapchat", + "logo-soundcloud", + "logo-stackoverflow", + "logo-steam", + "logo-stencil", + "logo-tableau", + "logo-tiktok", + "logo-tumblr", + "logo-tux", + "logo-twitch", + "logo-twitter", + "logo-usd", + "logo-venmo", + "logo-vercel", + "logo-vimeo", + "logo-vk", + "logo-vue", + "logo-web-component", + "logo-wechat", + "logo-whatsapp", + "logo-windows", + "logo-wordpress", + "logo-xbox", + "logo-xing", + "logo-yahoo", + "logo-yen", + "logo-youtube" + ], "required": true, "default": null, "description": "The icon type to display. See GoAIconType for available icons." }, { "name": "size", - "type": "IconSize", + "type": "\"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"2xsmall\" | \"xsmall\" | \"small\" | \"medium\" | \"large\" | \"xlarge\"", + "values": [ + "1", + "2", + "3", + "4", + "5", + "6", + "2xsmall", + "xsmall", + "small", + "medium", + "large", + "xlarge" + ], "required": false, "default": "medium", "description": "Sets the size of the icon. Accepts numeric (1-6) or named sizes." }, { "name": "theme", - "type": "IconTheme", + "type": "\"outline\" | \"filled\"", + "values": [ + "outline", + "filled" + ], "required": false, "default": "outline", "description": "Sets the icon theme. 'outline' shows stroked icons, 'filled' shows solid icons." diff --git a/docs/generated/component-apis/input.json b/docs/generated/component-apis/input.json index 71c8e0d3a1..9faee7dc10 100644 --- a/docs/generated/component-apis/input.json +++ b/docs/generated/component-apis/input.json @@ -1,7 +1,6 @@ { "componentSlug": "input", "extractedFrom": "libs/web-components/src/components/input/Input.svelte", - "extractedAt": "2026-02-04T08:10:50.410Z", "props": [ { "name": "type", @@ -88,7 +87,11 @@ }, { "name": "variant", - "type": "GoAInputVariant", + "type": "\"goa\" | \"bare\"", + "values": [ + "goa", + "bare" + ], "required": false, "default": "goa", "description": "Sets the visual style variant. 'goa' for standard GoA styling, 'bare' for minimal styling." @@ -202,11 +205,7 @@ }, { "name": "maxLength", - "type": "number | null", - "values": [ - "number", - "null" - ], + "type": "number", "required": false, "default": null, "description": "Defines the maximum number of characters (as UTF-16 code units) the user can enter into the input." diff --git a/docs/generated/component-apis/linear-progress.json b/docs/generated/component-apis/linear-progress.json index f6b94e16c6..22c95b034e 100644 --- a/docs/generated/component-apis/linear-progress.json +++ b/docs/generated/component-apis/linear-progress.json @@ -1,26 +1,17 @@ { "componentSlug": "linear-progress", "extractedFrom": "libs/web-components/src/components/linear-progress/LinearProgress.svelte", - "extractedAt": "2026-02-04T08:10:50.411Z", "props": [ { "name": "testId", - "type": "string | undefined", - "values": [ - "string", - "undefined" - ], + "type": "string", "required": false, "default": null, "description": "Sets a data-testid attribute for automated testing." }, { "name": "progress", - "type": "number | undefined", - "values": [ - "number", - "undefined" - ], + "type": "number", "required": false, "default": null, "description": "Progress value (0-100). When undefined, shows an indeterminate loading animation." @@ -38,22 +29,14 @@ }, { "name": "ariaLabel", - "type": "string | undefined", - "values": [ - "string", - "undefined" - ], + "type": "string", "required": false, "default": null, "description": "Accessible label for the progress bar." }, { "name": "ariaLabelledBy", - "type": "string | undefined", - "values": [ - "string", - "undefined" - ], + "type": "string", "required": false, "default": null, "description": "ID of the element that labels this progress bar." diff --git a/docs/generated/component-apis/link-button.json b/docs/generated/component-apis/link-button.json index c64d4b4ec5..2c1bb9e6bd 100644 --- a/docs/generated/component-apis/link-button.json +++ b/docs/generated/component-apis/link-button.json @@ -1,7 +1,6 @@ { "componentSlug": "link-button", "extractedFrom": "libs/web-components/src/components/link-button/LinkButton.svelte", - "extractedAt": "2026-02-04T08:10:50.411Z", "props": [ { "name": "color", diff --git a/docs/generated/component-apis/link.json b/docs/generated/component-apis/link.json index 1b37ff7aee..fbd438df74 100644 --- a/docs/generated/component-apis/link.json +++ b/docs/generated/component-apis/link.json @@ -1,7 +1,6 @@ { "componentSlug": "link", "extractedFrom": "libs/web-components/src/components/link/Link.svelte", - "extractedAt": "2026-02-04T08:10:50.411Z", "props": [ { "name": "leadingIcon", diff --git a/docs/generated/component-apis/menu-button.json b/docs/generated/component-apis/menu-button.json index 9dfc28020d..ac9450c0d9 100644 --- a/docs/generated/component-apis/menu-button.json +++ b/docs/generated/component-apis/menu-button.json @@ -1,7 +1,6 @@ { "componentSlug": "menu-button", "extractedFrom": "libs/web-components/src/components/menu-button/MenuButton.svelte", - "extractedAt": "2026-02-04T08:10:50.411Z", "props": [ { "name": "text", @@ -13,7 +12,11 @@ { "name": "type", "type": "\"primary\" | \"secondary\" | \"tertiary\"", - "values": ["primary", "secondary", "tertiary"], + "values": [ + "primary", + "secondary", + "tertiary" + ], "required": false, "default": "primary", "description": "The button style variant." @@ -43,7 +46,10 @@ { "name": "size", "type": "\"normal\" | \"compact\"", - "values": ["normal", "compact"], + "values": [ + "normal", + "compact" + ], "required": false, "default": "normal", "description": "Sets the size of the button." @@ -51,7 +57,10 @@ { "name": "variant", "type": "\"normal\" | \"destructive\"", - "values": ["normal", "destructive"], + "values": [ + "normal", + "destructive" + ], "required": false, "default": "normal", "description": "Sets the color variant for semantic meaning." @@ -69,13 +78,17 @@ "name": "onAction", "type": "(event: Event) => void", "description": "", - "frameworks": ["react"] + "frameworks": [ + "react" + ] }, { "name": "_action", "type": "CustomEvent", "description": "", - "frameworks": ["angular"] + "frameworks": [ + "angular" + ] } ], "slots": [ @@ -84,4 +97,4 @@ "description": "" } ] -} +} \ No newline at end of file diff --git a/docs/generated/component-apis/microsite-header.json b/docs/generated/component-apis/microsite-header.json index 0ae09d208d..fa93c3147f 100644 --- a/docs/generated/component-apis/microsite-header.json +++ b/docs/generated/component-apis/microsite-header.json @@ -1,7 +1,6 @@ { "componentSlug": "microsite-header", "extractedFrom": "libs/web-components/src/components/microsite-header/MicrositeHeader.svelte", - "extractedAt": "2026-02-04T08:10:50.412Z", "props": [ { "name": "type", diff --git a/docs/generated/component-apis/modal.json b/docs/generated/component-apis/modal.json index 6fa18e10b1..592278d64c 100644 --- a/docs/generated/component-apis/modal.json +++ b/docs/generated/component-apis/modal.json @@ -1,7 +1,6 @@ { "componentSlug": "modal", "extractedFrom": "libs/web-components/src/components/modal/Modal.svelte", - "extractedAt": "2026-02-04T08:10:50.412Z", "props": [ { "name": "heading", @@ -39,11 +38,7 @@ }, { "name": "calloutVariant", - "type": "CalloutVariant | null", - "values": [ - "CalloutVariant", - "null" - ], + "type": "\"\"", "required": false, "default": null, "description": "Define the context and colour of the callout modal. It is required when type is set to callout." diff --git a/docs/generated/component-apis/notification.json b/docs/generated/component-apis/notification.json index c75e4dcedb..8f6ac51b2a 100644 --- a/docs/generated/component-apis/notification.json +++ b/docs/generated/component-apis/notification.json @@ -1,7 +1,6 @@ { "componentSlug": "notification", "extractedFrom": "libs/web-components/src/components/notification/Notification.svelte", - "extractedAt": "2026-02-04T08:10:50.413Z", "props": [ { "name": "type", diff --git a/docs/generated/component-apis/page-block.json b/docs/generated/component-apis/page-block.json index 4e24858b7a..a38dd13162 100644 --- a/docs/generated/component-apis/page-block.json +++ b/docs/generated/component-apis/page-block.json @@ -1,11 +1,14 @@ { "componentSlug": "page-block", "extractedFrom": "libs/web-components/src/components/page-block/PageBlock.svelte", - "extractedAt": "2026-02-04T08:10:50.413Z", "props": [ { "name": "width", - "type": "Size", + "type": "\"full\" | string", + "values": [ + "full", + "string" + ], "required": false, "default": "full", "description": "Maximum width of the content area. Use \"full\" for 100% width or a CSS dimension like \"1200px\"." diff --git a/docs/generated/component-apis/pages.json b/docs/generated/component-apis/pages.json index e0bcf9e6f0..11a1560d9a 100644 --- a/docs/generated/component-apis/pages.json +++ b/docs/generated/component-apis/pages.json @@ -1,7 +1,6 @@ { "componentSlug": "pages", "extractedFrom": "libs/web-components/src/components/pages/Pages.svelte", - "extractedAt": "2026-02-04T08:10:50.413Z", "props": [ { "name": "current", diff --git a/docs/generated/component-apis/pagination.json b/docs/generated/component-apis/pagination.json index 1ccbeb877b..fd65d9187c 100644 --- a/docs/generated/component-apis/pagination.json +++ b/docs/generated/component-apis/pagination.json @@ -1,7 +1,6 @@ { "componentSlug": "pagination", "extractedFrom": "libs/web-components/src/components/pagination/Pagination.svelte", - "extractedAt": "2026-02-04T08:10:50.414Z", "props": [ { "name": "pagenumber", diff --git a/docs/generated/component-apis/popover.json b/docs/generated/component-apis/popover.json index 812189843a..ee57a4dfb6 100644 --- a/docs/generated/component-apis/popover.json +++ b/docs/generated/component-apis/popover.json @@ -1,7 +1,6 @@ { "componentSlug": "popover", "extractedFrom": "libs/web-components/src/components/popover/Popover.svelte", - "extractedAt": "2026-02-04T08:10:50.414Z", "props": [ { "name": "testId", diff --git a/docs/generated/component-apis/push-drawer.json b/docs/generated/component-apis/push-drawer.json index c11f01d554..41d1a3e8bd 100644 --- a/docs/generated/component-apis/push-drawer.json +++ b/docs/generated/component-apis/push-drawer.json @@ -1,11 +1,10 @@ { "componentSlug": "push-drawer", "extractedFrom": "libs/web-components/src/components/push-drawer/PushDrawer.svelte", - "extractedAt": "2026-03-03T18:47:38.073Z", "props": [ { "name": "testId", - "type": "\"string\"", + "type": "string", "required": false, "default": null, "description": "" @@ -43,4 +42,4 @@ "description": "" } ] -} +} \ No newline at end of file diff --git a/docs/generated/component-apis/radio-group.json b/docs/generated/component-apis/radio-group.json index e31334346e..7c04d97a54 100644 --- a/docs/generated/component-apis/radio-group.json +++ b/docs/generated/component-apis/radio-group.json @@ -1,7 +1,6 @@ { "componentSlug": "radio-group", "extractedFrom": "libs/web-components/src/components/radio-group/RadioGroup.svelte", - "extractedAt": "2026-02-04T08:10:50.414Z", "props": [ { "name": "name", diff --git a/docs/generated/component-apis/radio-item.json b/docs/generated/component-apis/radio-item.json index db42e1f0c3..13e6d1b66c 100644 --- a/docs/generated/component-apis/radio-item.json +++ b/docs/generated/component-apis/radio-item.json @@ -1,7 +1,6 @@ { "componentSlug": "radio-item", "extractedFrom": "libs/web-components/src/components/radio-item/RadioItem.svelte", - "extractedAt": "2026-02-04T08:10:50.415Z", "props": [ { "name": "value", diff --git a/docs/generated/component-apis/scrollable.json b/docs/generated/component-apis/scrollable.json index b32f101347..4c2302a60a 100644 --- a/docs/generated/component-apis/scrollable.json +++ b/docs/generated/component-apis/scrollable.json @@ -1,7 +1,6 @@ { "componentSlug": "scrollable", "extractedFrom": "libs/web-components/src/components/scrollable/Scrollable.svelte", - "extractedAt": "2026-02-04T08:10:50.415Z", "props": [ { "name": "direction", diff --git a/docs/generated/component-apis/side-menu-group.json b/docs/generated/component-apis/side-menu-group.json index 220791b633..ff25664e78 100644 --- a/docs/generated/component-apis/side-menu-group.json +++ b/docs/generated/component-apis/side-menu-group.json @@ -1,7 +1,6 @@ { "componentSlug": "side-menu-group", "extractedFrom": "libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte", - "extractedAt": "2026-02-04T08:10:50.416Z", "props": [ { "name": "heading", diff --git a/docs/generated/component-apis/side-menu-heading.json b/docs/generated/component-apis/side-menu-heading.json index 9e066317fc..b68372cac7 100644 --- a/docs/generated/component-apis/side-menu-heading.json +++ b/docs/generated/component-apis/side-menu-heading.json @@ -1,7 +1,6 @@ { "componentSlug": "side-menu-heading", "extractedFrom": "libs/web-components/src/components/side-menu-heading/SideMenuHeading.svelte", - "extractedAt": "2026-02-04T08:10:50.416Z", "props": [ { "name": "icon", diff --git a/docs/generated/component-apis/side-menu.json b/docs/generated/component-apis/side-menu.json index 75b3559477..c1abe89ed3 100644 --- a/docs/generated/component-apis/side-menu.json +++ b/docs/generated/component-apis/side-menu.json @@ -1,7 +1,6 @@ { "componentSlug": "side-menu", "extractedFrom": "libs/web-components/src/components/side-menu/SideMenu.svelte", - "extractedAt": "2026-02-04T08:10:50.415Z", "props": [ { "name": "testId", diff --git a/docs/generated/component-apis/skeleton.json b/docs/generated/component-apis/skeleton.json index cdd33feb30..c65fc48a86 100644 --- a/docs/generated/component-apis/skeleton.json +++ b/docs/generated/component-apis/skeleton.json @@ -1,7 +1,6 @@ { "componentSlug": "skeleton", "extractedFrom": "libs/web-components/src/components/skeleton/Skeleton.svelte", - "extractedAt": "2026-02-04T08:10:50.416Z", "props": [ { "name": "maxWidth", diff --git a/docs/generated/component-apis/spacer.json b/docs/generated/component-apis/spacer.json index c465308ab6..7c3620b442 100644 --- a/docs/generated/component-apis/spacer.json +++ b/docs/generated/component-apis/spacer.json @@ -1,7 +1,6 @@ { "componentSlug": "spacer", "extractedFrom": "libs/web-components/src/components/spacer/Spacer.svelte", - "extractedAt": "2026-02-04T08:10:50.416Z", "props": [ { "name": "hspacing", diff --git a/docs/generated/component-apis/spinner.json b/docs/generated/component-apis/spinner.json index 4914a359a2..61580a2564 100644 --- a/docs/generated/component-apis/spinner.json +++ b/docs/generated/component-apis/spinner.json @@ -1,11 +1,16 @@ { "componentSlug": "spinner", "extractedFrom": "libs/web-components/src/components/spinner/Spinner.svelte", - "extractedAt": "2026-02-04T08:10:50.416Z", "props": [ { "name": "size", - "type": "SpinnerSize", + "type": "\"small\" | \"medium\" | \"large\" | \"xlarge\"", + "values": [ + "small", + "medium", + "large", + "xlarge" + ], "required": true, "default": null, "description": "Sets the size of the spinner." diff --git a/docs/generated/component-apis/tab.json b/docs/generated/component-apis/tab.json index c8deba729c..e65c70fae6 100644 --- a/docs/generated/component-apis/tab.json +++ b/docs/generated/component-apis/tab.json @@ -1,7 +1,6 @@ { "componentSlug": "tab", "extractedFrom": "libs/web-components/src/components/tab/Tab.svelte", - "extractedAt": "2026-02-04T08:10:50.417Z", "props": [ { "name": "heading", diff --git a/docs/generated/component-apis/table.json b/docs/generated/component-apis/table.json index ba5ebdfec5..8b86d28407 100644 --- a/docs/generated/component-apis/table.json +++ b/docs/generated/component-apis/table.json @@ -1,7 +1,6 @@ { "componentSlug": "table", "extractedFrom": "libs/web-components/src/components/table/Table.svelte", - "extractedAt": "2026-02-04T08:10:50.417Z", "props": [ { "name": "width", diff --git a/docs/generated/component-apis/tabs.json b/docs/generated/component-apis/tabs.json index 01ac886b92..41eecf4ab2 100644 --- a/docs/generated/component-apis/tabs.json +++ b/docs/generated/component-apis/tabs.json @@ -1,7 +1,6 @@ { "componentSlug": "tabs", "extractedFrom": "libs/web-components/src/components/tabs/Tabs.svelte", - "extractedAt": "2026-02-04T08:10:50.418Z", "props": [ { "name": "initialtab", @@ -26,15 +25,18 @@ ], "required": false, "default": "default", - "description": "Sets the visual style of tabs. 'segmented' shows pill/button style tabs." + "description": "Visual style variant. \"segmented\" shows pill-style tabs with animation." }, { "name": "orientation", "type": "\"auto\" | \"horizontal\"", - "values": ["auto", "horizontal"], + "values": [ + "auto", + "horizontal" + ], "required": false, "default": "auto", - "description": "Tab layout orientation. 'auto' stacks vertically on mobile, 'horizontal' keeps horizontal on all screen sizes." + "description": "Tab layout orientation. \"auto\" stacks vertically on mobile, \"horizontal\" keeps horizontal on all screen sizes." } ], "events": [ @@ -61,4 +63,4 @@ "description": "" } ] -} +} \ No newline at end of file diff --git a/docs/generated/component-apis/temporary-notification.json b/docs/generated/component-apis/temporary-notification.json index 6f9d528d60..0b8b15252d 100644 --- a/docs/generated/component-apis/temporary-notification.json +++ b/docs/generated/component-apis/temporary-notification.json @@ -1,7 +1,6 @@ { "componentSlug": "temporary-notification", "extractedFrom": "libs/web-components/src/components/temporary-notification/TemporaryNotification.svelte", - "extractedAt": "2026-02-04T08:10:50.418Z", "props": [ { "name": "message", @@ -12,7 +11,14 @@ }, { "name": "type", - "type": "TemporaryNotificationType", + "type": "\"basic\" | \"success\" | \"failure\" | \"indeterminate\" | \"progress\"", + "values": [ + "basic", + "success", + "failure", + "indeterminate", + "progress" + ], "required": false, "default": "basic", "description": "The notification type which determines the visual style and icon." @@ -47,7 +53,11 @@ }, { "name": "animationDirection", - "type": "TemporaryNotificationAnimationDirection", + "type": "\"up\" | \"down\"", + "values": [ + "up", + "down" + ], "required": false, "default": "down", "description": "Direction the notification animates from when appearing or disappearing." diff --git a/docs/generated/component-apis/text-area.json b/docs/generated/component-apis/text-area.json index 97e459819b..d3c636bb97 100644 --- a/docs/generated/component-apis/text-area.json +++ b/docs/generated/component-apis/text-area.json @@ -1,7 +1,6 @@ { "componentSlug": "text-area", "extractedFrom": "libs/web-components/src/components/text-area/TextArea.svelte", - "extractedAt": "2026-02-04T08:10:50.419Z", "props": [ { "name": "name", @@ -107,14 +106,22 @@ }, { "name": "version", - "type": "VersionType", + "type": "\"1\" | \"2\"", + "values": [ + "1", + "2" + ], "required": false, "default": "1", "description": "" }, { "name": "size", - "type": "SizeType", + "type": "\"default\" | \"compact\"", + "values": [ + "default", + "compact" + ], "required": false, "default": "default", "description": "" diff --git a/docs/generated/component-apis/text.json b/docs/generated/component-apis/text.json index 04382535a3..91b7c66f12 100644 --- a/docs/generated/component-apis/text.json +++ b/docs/generated/component-apis/text.json @@ -1,7 +1,6 @@ { "componentSlug": "text", "extractedFrom": "libs/web-components/src/components/text/Text.svelte", - "extractedAt": "2026-02-04T19:50:01.587Z", "props": [ { "name": "as", @@ -33,13 +32,14 @@ }, { "name": "size", - "type": "\"heading-xl\" | \"heading-l\" | \"heading-m\" | \"heading-s\" | \"heading-xs\" | \"body-l\" | \"body-m\" | \"body-s\" | \"body-xs\"", + "type": "\"heading-xl\" | \"heading-l\" | \"heading-m\" | \"heading-s\" | \"heading-xs\" | \"heading-2xs\" | \"body-l\" | \"body-m\" | \"body-s\" | \"body-xs\"", "values": [ "heading-xl", "heading-l", "heading-m", "heading-s", "heading-xs", + "heading-2xs", "body-l", "body-m", "body-s", diff --git a/docs/generated/component-apis/tooltip.json b/docs/generated/component-apis/tooltip.json index 49bd6ce118..9464d6c3d7 100644 --- a/docs/generated/component-apis/tooltip.json +++ b/docs/generated/component-apis/tooltip.json @@ -1,7 +1,6 @@ { "componentSlug": "tooltip", "extractedFrom": "libs/web-components/src/components/tooltip/Tooltip.svelte", - "extractedAt": "2026-02-04T08:10:50.419Z", "props": [ { "name": "content", diff --git a/docs/generated/component-apis/work-side-menu.json b/docs/generated/component-apis/work-side-menu.json index 15ce161dbc..1c2c51e232 100644 --- a/docs/generated/component-apis/work-side-menu.json +++ b/docs/generated/component-apis/work-side-menu.json @@ -1,7 +1,6 @@ { "componentSlug": "work-side-menu", "extractedFrom": "libs/web-components/src/components/work-side-menu/WorkSideMenu.svelte", - "extractedAt": "2026-02-04T08:10:50.420Z", "props": [ { "name": "heading", diff --git a/docs/package.json b/docs/package.json index c75ddb97ea..809fd0a8a5 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,8 +5,9 @@ "scripts": { "dev": "astro dev", "start": "astro dev", - "build": "npm run build:search-index && astro check && astro build", - "build:search-index": "tsx src/scripts/build-search-index.ts", + "build": "npm run extract-api && npm run build:search-index && astro build", + "build:search-index": "npx tsx src/scripts/build-search-index.ts", + "extract-api": "npx tsx src/scripts/extract-api.ts --all", "preview": "astro preview", "astro": "astro" }, diff --git a/docs/project.json b/docs/project.json index c1ac390398..b46419d42e 100644 --- a/docs/project.json +++ b/docs/project.json @@ -9,7 +9,7 @@ "executor": "nx:run-commands", "outputs": ["{workspaceRoot}/dist/docs"], "options": { - "command": "astro build --root docs" + "command": "npm run build --prefix docs" } }, "serve": { diff --git a/docs/src/components/SiteNav.tsx b/docs/src/components/SiteNav.tsx index 2e0cfa5eb7..3dfff27daa 100644 --- a/docs/src/components/SiteNav.tsx +++ b/docs/src/components/SiteNav.tsx @@ -13,12 +13,8 @@ * - Sub-menu view: Shows section-specific navigation (only for components) */ -import { useState, useEffect, useCallback } from 'react'; -import { - ParentMenu, - ComponentsSubMenu, - type MenuSection, -} from './nav'; +import { useState, useEffect, useCallback } from "react"; +import { ParentMenu, ComponentsSubMenu, type MenuSection, type NavCategory } from "./nav"; interface SiteNavProps { /** Current page slug (for highlighting current item) */ @@ -27,24 +23,26 @@ interface SiteNavProps { currentCategory?: string; /** Initial section to show (detected from URL if not provided) */ initialSection?: MenuSection; + /** Component nav categories (from content collection, passed by Astro layout) */ + categories?: NavCategory[]; } // Sections that have submenus (show submenu when navigated to) -const SUBMENU_SECTIONS = ['components']; +const SUBMENU_SECTIONS = ["components"]; // Sections that are single pages (stay on parent menu, just highlight) -const SINGLE_PAGE_SECTIONS = ['tokens', 'examples']; +const SINGLE_PAGE_SECTIONS = ["tokens", "examples"]; /** * Detect the current section from URL pathname */ function detectSectionFromUrl(pathname: string): MenuSection { - if (pathname.startsWith('/components')) return 'components'; - if (pathname.startsWith('/examples')) return 'examples'; - if (pathname.startsWith('/tokens')) return 'tokens'; - if (pathname.startsWith('/get-started')) return 'get-started'; - if (pathname.startsWith('/foundations')) return 'foundations'; - return 'parent'; + if (pathname.startsWith("/components")) return "components"; + if (pathname.startsWith("/examples")) return "examples"; + if (pathname.startsWith("/tokens")) return "tokens"; + if (pathname.startsWith("/get-started")) return "get-started"; + if (pathname.startsWith("/foundations")) return "foundations"; + return "parent"; } /** @@ -56,11 +54,11 @@ function getMenuLevelForSection(section: MenuSection): MenuSection { if (SUBMENU_SECTIONS.includes(section)) { return section; // Show the submenu } - return 'parent'; // Stay on parent menu + return "parent"; // Stay on parent menu } const MOBILE_BREAKPOINT = 624; -const MENU_STATE_KEY = 'goa-ds-menu-open'; +const MENU_STATE_KEY = "goa-ds-menu-open"; /** * Get initial menu state: @@ -68,7 +66,7 @@ const MENU_STATE_KEY = 'goa-ds-menu-open'; * - Desktop: check localStorage, default to open */ function getInitialMenuState(): boolean { - if (typeof window === 'undefined') return true; // SSR fallback + if (typeof window === "undefined") return true; // SSR fallback // Mobile always starts closed if (window.innerWidth < MOBILE_BREAKPOINT) { @@ -78,22 +76,29 @@ function getInitialMenuState(): boolean { // Desktop: check localStorage for saved preference const saved = localStorage.getItem(MENU_STATE_KEY); if (saved !== null) { - return saved === 'true'; + return saved === "true"; } // Default to open on desktop return true; } -export function SiteNav({ currentSlug, currentCategory, initialSection }: SiteNavProps) { +export function SiteNav({ + currentSlug, + currentCategory, + initialSection, + categories = [], +}: SiteNavProps) { // Menu state - persisted on desktop, always closed on mobile const [isOpen, setIsOpen] = useState(getInitialMenuState); - const [currentSection, setCurrentSection] = useState(initialSection || 'parent'); - const [menuLevel, setMenuLevel] = useState('parent'); + const [currentSection, setCurrentSection] = useState( + initialSection || "parent", + ); + const [menuLevel, setMenuLevel] = useState("parent"); // Initialize from URL on mount (client-side only) useEffect(() => { - if (typeof window !== 'undefined') { + if (typeof window !== "undefined") { const section = initialSection || detectSectionFromUrl(window.location.pathname); setCurrentSection(section); setMenuLevel(getMenuLevelForSection(section)); @@ -103,20 +108,18 @@ export function SiteNav({ currentSlug, currentCategory, initialSection }: SiteNa // Event bridge: Listen for 'goa-menu-open' from MobileHeader hamburger button useEffect(() => { const handleMenuOpen = () => setIsOpen(true); - window.addEventListener('goa-menu-open', handleMenuOpen); - return () => window.removeEventListener('goa-menu-open', handleMenuOpen); + window.addEventListener("goa-menu-open", handleMenuOpen); + return () => window.removeEventListener("goa-menu-open", handleMenuOpen); }, []); // Event bridge: Emit 'goa-menu-change' when isOpen changes (for mobile-bridge.ts) useEffect(() => { - window.dispatchEvent( - new CustomEvent('goa-menu-change', { detail: { isOpen } }) - ); + window.dispatchEvent(new CustomEvent("goa-menu-change", { detail: { isOpen } })); }, [isOpen]); // Persist menu state to localStorage (desktop only) useEffect(() => { - if (typeof window === 'undefined') return; + if (typeof window === "undefined") return; if (window.innerWidth >= MOBILE_BREAKPOINT) { localStorage.setItem(MENU_STATE_KEY, String(isOpen)); } @@ -128,7 +131,8 @@ export function SiteNav({ currentSlug, currentCategory, initialSection }: SiteNa const handleResize = () => { const width = window.innerWidth; - const crossedToDesktop = previousWidth < MOBILE_BREAKPOINT && width >= MOBILE_BREAKPOINT; + const crossedToDesktop = + previousWidth < MOBILE_BREAKPOINT && width >= MOBILE_BREAKPOINT; // Close menu when window shrinks (gives more room for content) // OR when crossing from mobile to desktop (prevents floating menu bug) @@ -139,28 +143,31 @@ export function SiteNav({ currentSlug, currentCategory, initialSection }: SiteNa previousWidth = width; }; - window.addEventListener('resize', handleResize); - return () => window.removeEventListener('resize', handleResize); + window.addEventListener("resize", handleResize); + return () => window.removeEventListener("resize", handleResize); }, []); const handleToggle = useCallback(() => { setIsOpen((prev) => !prev); }, []); - const handleSelectSection = useCallback((section: MenuSection) => { - // Only components has a submenu - switch to it - if (SUBMENU_SECTIONS.includes(section)) { - setMenuLevel(section); - // Auto-expand when entering submenu while collapsed (icons aren't descriptive enough) - if (!isOpen) { - setIsOpen(true); + const handleSelectSection = useCallback( + (section: MenuSection) => { + // Only components has a submenu - switch to it + if (SUBMENU_SECTIONS.includes(section)) { + setMenuLevel(section); + // Auto-expand when entering submenu while collapsed (icons aren't descriptive enough) + if (!isOpen) { + setIsOpen(true); + } } - } - // Other sections navigate directly via url prop, no state change needed - }, [isOpen]); + // Other sections navigate directly via url prop, no state change needed + }, + [isOpen], + ); const handleBack = useCallback(() => { - setMenuLevel('parent'); + setMenuLevel("parent"); }, []); const handleExpandMenu = useCallback(() => { @@ -169,7 +176,7 @@ export function SiteNav({ currentSlug, currentCategory, initialSection }: SiteNa // Render the appropriate menu based on current level switch (menuLevel) { - case 'components': + case "components": return ( ); // All other cases show the parent menu with appropriate highlighting - case 'parent': + case "parent": default: return ( @@ -39,6 +41,7 @@ const { title, description, currentSlug, category } = Astro.props; currentSlug={currentSlug} currentCategory={category} initialSection="components" + categories={navCategories} /> diff --git a/docs/src/layouts/DocumentationPageLayout.astro b/docs/src/layouts/DocumentationPageLayout.astro index e55e5d4836..35374e4151 100644 --- a/docs/src/layouts/DocumentationPageLayout.astro +++ b/docs/src/layouts/DocumentationPageLayout.astro @@ -20,6 +20,7 @@ import BaseLayout from './BaseLayout.astro'; import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; import { TableOfContents } from '../components/TableOfContents'; +import { getNavCategories } from '../lib/nav-categories'; interface Props { title: string; @@ -39,6 +40,7 @@ const { showToc = true, tocQuery = 'h2[id], h3[id]' } = Astro.props; +const navCategories = await getNavCategories(); --- @@ -49,6 +51,7 @@ const { diff --git a/docs/src/layouts/ExamplesPageLayout.astro b/docs/src/layouts/ExamplesPageLayout.astro index 1cdd9e14df..0374198286 100644 --- a/docs/src/layouts/ExamplesPageLayout.astro +++ b/docs/src/layouts/ExamplesPageLayout.astro @@ -14,6 +14,7 @@ import BaseLayout from './BaseLayout.astro'; import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; +import { getNavCategories } from '../lib/nav-categories'; interface Props { title: string; @@ -22,6 +23,7 @@ interface Props { } const { title, description, currentSlug } = Astro.props; +const navCategories = await getNavCategories(); --- @@ -34,6 +36,7 @@ const { title, description, currentSlug } = Astro.props; client:only="react" currentSlug={currentSlug} initialSection="examples" + categories={navCategories} /> diff --git a/docs/src/layouts/HomeLayout.astro b/docs/src/layouts/HomeLayout.astro index fbe8079f55..ca6999ab88 100644 --- a/docs/src/layouts/HomeLayout.astro +++ b/docs/src/layouts/HomeLayout.astro @@ -14,6 +14,7 @@ import BaseLayout from './BaseLayout.astro'; import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; +import { getNavCategories } from '../lib/nav-categories'; interface Props { title: string; @@ -21,6 +22,7 @@ interface Props { } const { title, description } = Astro.props; +const navCategories = await getNavCategories(); --- @@ -32,6 +34,7 @@ const { title, description } = Astro.props; diff --git a/docs/src/layouts/TokensLayout.astro b/docs/src/layouts/TokensLayout.astro index 35466b236f..b361503627 100644 --- a/docs/src/layouts/TokensLayout.astro +++ b/docs/src/layouts/TokensLayout.astro @@ -14,6 +14,7 @@ import BaseLayout from './BaseLayout.astro'; import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; +import { getNavCategories } from '../lib/nav-categories'; interface Props { title: string; @@ -21,6 +22,7 @@ interface Props { } const { title, description } = Astro.props; +const navCategories = await getNavCategories(); --- @@ -32,6 +34,7 @@ const { title, description } = Astro.props; diff --git a/docs/src/lib/content-queries.ts b/docs/src/lib/content-queries.ts index 6258070b98..bcfb7e7985 100644 --- a/docs/src/lib/content-queries.ts +++ b/docs/src/lib/content-queries.ts @@ -26,7 +26,6 @@ export interface SlotDefinition { export interface ComponentApi { componentSlug: string; extractedFrom: string; - extractedAt: string; props: PropDefinition[]; events: EventDefinition[]; slots: SlotDefinition[]; diff --git a/docs/src/lib/nav-categories.ts b/docs/src/lib/nav-categories.ts new file mode 100644 index 0000000000..4c65da0d27 --- /dev/null +++ b/docs/src/lib/nav-categories.ts @@ -0,0 +1,72 @@ +/** + * nav-categories.ts + * + * Builds the component navigation categories from the content collection. + * Used by layouts to pass dynamic nav data to SiteNav → ComponentsSubMenu. + */ + +import { getCollection } from "astro:content"; + +/** Shape consumed by ComponentsSubMenu */ +export interface NavCategory { + name: string; + slug: string; + icon: string; + components: { name: string; slug: string }[]; +} + +/** Display metadata for each category (not stored in content collection) */ +const CATEGORY_META: Record = { + "content-layout": { name: "Content layout", icon: "grid" }, + "feedback-and-alerts": { name: "Feedback and alerts", icon: "notifications" }, + "inputs-and-actions": { name: "Inputs and actions", icon: "create" }, + "structure-and-navigation": { + name: "Structure and navigation", + icon: "browsers", + }, + utilities: { name: "Utilities", icon: "build" }, +}; + +/** + * Query the components content collection and group into nav categories. + * Filters out hidden components, sorts alphabetically within each category. + */ +export async function getNavCategories(): Promise { + const allComponents = await getCollection("components"); + const visible = allComponents.filter((c) => !c.data.hidden); + + // Group by category + const grouped = new Map(); + for (const component of visible) { + const cat = component.data.category; + if (!grouped.has(cat)) { + grouped.set(cat, []); + } + grouped.get(cat)!.push({ + name: component.data.name, + slug: component.slug, + }); + } + + // Sort components alphabetically within each category + for (const components of grouped.values()) { + components.sort((a, b) => a.name.localeCompare(b.name)); + } + + // Build the final array in a stable category order + const categoryOrder = [ + "content-layout", + "feedback-and-alerts", + "inputs-and-actions", + "structure-and-navigation", + "utilities", + ]; + + return categoryOrder + .filter((slug) => grouped.has(slug)) + .map((slug) => ({ + ...CATEGORY_META[slug], + slug, + components: grouped.get(slug)!, + })); +} diff --git a/docs/src/scripts/extract-api.ts b/docs/src/scripts/extract-api.ts new file mode 100644 index 0000000000..2c7f7cadee --- /dev/null +++ b/docs/src/scripts/extract-api.ts @@ -0,0 +1,755 @@ +/** + * Component API Extraction Script + * + * Extracts props, events, and slots from Svelte component files and outputs + * structured JSON matching the content model spec defined in Brief 1. + * + * Usage: + * npx tsx src/scripts/extract-api.ts button # Extract single component + * npx tsx src/scripts/extract-api.ts button input # Extract multiple components + * npx tsx src/scripts/extract-api.ts --all # Extract all components + * + * Output: JSON files in docs/generated/component-apis/ + */ + +import * as fs from "fs"; +import * as path from "path"; +import { fileURLToPath } from "url"; + +// ============================================================================= +// Configuration +// ============================================================================= + +// Resolve paths relative to the workspace root (ui-components/) +// This script lives at docs/src/scripts/ — three levels below the workspace root +const WORKSPACE_ROOT = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "../../..", +); +const UI_COMPONENTS_PATH = path.join( + WORKSPACE_ROOT, + "libs/web-components/src/components", +); +const OUTPUT_PATH = path.join(WORKSPACE_ROOT, "docs/generated/component-apis"); + +// ============================================================================= +// Output Types (matching content model spec) +// ============================================================================= + +interface ExtractedProp { + name: string; + type: string; + typeLabel?: string; // TypeScript type name (e.g., "GoabButtonType") + values?: string[]; // Allowed values for union types + required: boolean; + default: string | null; + description: string; // From JSDoc comments in source (empty if not documented) + deprecated?: boolean; // True if JSDoc has @deprecated tag +} + +interface ExtractedEvent { + name: string; + type: string; + description: string; // Empty - filled by human content + frameworks: ("react" | "angular" | "web-component")[]; +} + +interface ExtractedSlot { + name: string; + description: string; // Empty - filled by human content +} + +interface ExtractedComponentAPI { + componentSlug: string; + extractedFrom: string; + props: ExtractedProp[]; + events: ExtractedEvent[]; + slots: ExtractedSlot[]; +} + +// ============================================================================= +// Internal Parsing Types +// ============================================================================= + +interface ValidatorInfo { + values: string[]; + deprecated?: string[]; + typeName?: string; +} + +interface ParsedPropRaw { + name: string; + rawName: string; + type: string; + typeLabel?: string; + values?: string[]; + required: boolean; + default: string | null; + isBooleanProp: boolean; + description: string; + deprecated: boolean; +} + +// ============================================================================= +// JSDoc Parser +// ============================================================================= + +interface JSDocInfo { + description: string; + required: boolean; + internal: boolean; + deprecated: boolean; +} + +/** + * Builds a map of prop names to their JSDoc info (description + required flag). + * Scans through content looking for JSDoc comments immediately preceding export let statements. + */ +function buildJSDocMap(content: string): Map { + const jsDocMap = new Map(); + + // Pattern matches a single JSDoc comment followed directly by export let statement. + // Uses [^*] and \*[^/] to match content within /** ... */ without crossing + // into the next comment block (prevents file-level JSDoc from leaking into props). + // Group 1: JSDoc content (between /** and */) + // Group 2: prop name + const pattern = /\/\*\*\s*((?:[^*]|\*(?!\/))*?)\s*\*\/\s*\n\s*export\s+let\s+(\w+)/g; + + let match; + while ((match = pattern.exec(content)) !== null) { + const rawComment = match[1]; + const propName = match[2]; + const { description, required, internal, deprecated } = parseJSDocContent(rawComment); + jsDocMap.set(propName, { description, required, internal, deprecated }); + } + + return jsDocMap; +} + +/** + * Parses JSDoc comment content, extracting description and @required tag. + */ +function parseJSDocContent(rawComment: string): { + description: string; + required: boolean; + internal: boolean; + deprecated: boolean; +} { + const cleaned = rawComment + // Remove leading asterisks and whitespace from each line + .split("\n") + .map((line) => line.replace(/^\s*\*\s?/, "").trim()) + .join(" ") + // Collapse multiple spaces + .replace(/\s+/g, " ") + .trim(); + + // Check for JSDoc tags + const required = /@required\b/i.test(cleaned); + const internal = /@internal\b/i.test(cleaned); + const deprecated = /@deprecated\b/i.test(cleaned); + + // Remove tags from description + const description = cleaned + .replace(/@required\s*/gi, "") + .replace(/@internal\s*/gi, "") + .trim(); + + return { description, required, internal, deprecated }; +} + +// ============================================================================= +// Svelte Parser +// ============================================================================= + +function extractTagName(content: string): string | null { + // Pattern 1: customElement="goa-tag" + const simpleMatch = content.match(/customElement\s*=\s*["']([^"']+)["']/); + if (simpleMatch) return simpleMatch[1]; + + // Pattern 2: customElement={{ tag: "goa-tag", ... }} + const objectMatch = content.match(/customElement\s*=\s*\{\{\s*tag:\s*["']([^"']+)["']/); + if (objectMatch) return objectMatch[1]; + + return null; +} + +/** + * Extracts type aliases from the Svelte file (both module and instance scripts). + * Resolves composite aliases like `type Size = HeadingSize | BodySize` by + * recursively expanding references until all values are string literals. + */ +function extractTypeAliases(content: string): Map { + const aliases = new Map(); + + // Match: type Name = "value1" | "value2" | OtherType; + const typeMatches = content.matchAll(/\btype\s+(\w+)\s*=\s*([^;]+);/g); + + for (const match of typeMatches) { + const name = match[1]; + const definition = match[2].trim(); + + const members = definition + .split("|") + .map((v) => v.trim()) + .filter((v) => v.length > 0); + + aliases.set(name, members); + } + + // Resolve composite aliases (expand references to other aliases) + // Iterate until stable — handles chained aliases + let changed = true; + while (changed) { + changed = false; + for (const [name, members] of aliases) { + const expanded: string[] = []; + for (const member of members) { + const clean = member.replace(/["']/g, ""); + if (aliases.has(clean) && clean !== name) { + expanded.push(...aliases.get(clean)!); + changed = true; + } else { + expanded.push(member); + } + } + aliases.set(name, expanded); + } + } + + return aliases; +} + +function extractValidators(content: string): Map { + const validators = new Map(); + + // Pattern: const [Name, validateName] = typeValidator("description", ["value1", "value2"], { options }); + const validatorMatches = content.matchAll( + /const\s+\[(\w+),\s*validate\w+\]\s*=\s*typeValidator\s*\([\s\S]*?\[([\s\S]*?)\][\s\S]*?\);/g, + ); + + for (const match of validatorMatches) { + const name = match[1]; + const valuesStr = match[2]; + + const values = valuesStr + .split(",") + .map((v) => v.trim().replace(/["']/g, "")) + .filter((v) => v.length > 0); + + // Check for deprecated values + const fullMatch = match[0]; + let deprecated: string[] | undefined; + const deprecatedMatch = fullMatch.match(/deprecated:\s*\[([\s\S]*?)\]/); + if (deprecatedMatch) { + deprecated = deprecatedMatch[1] + .split(",") + .map((v) => v.trim().replace(/["']/g, "")) + .filter((v) => v.length > 0); + } + + validators.set(name, { values, deprecated }); + } + + // Map type aliases to validators: type TypeName = (typeof ValidatorName)[number]; + const typeAliasMatches = content.matchAll( + /type\s+(\w+)\s*=\s*\(\s*typeof\s+(\w+)\s*\)\s*\[\s*number\s*\]/g, + ); + for (const match of typeAliasMatches) { + const typeName = match[1]; + const validatorName = match[2]; + const validatorData = validators.get(validatorName); + if (validatorData) { + validators.set(typeName, { ...validatorData, typeName }); + } + } + + return validators; +} + +function extractProps( + content: string, + validators: Map, + componentName: string, + typeAliases: Map, +): ParsedPropRaw[] { + const props: ParsedPropRaw[] = []; + + // Build JSDoc map for descriptions + const jsDocMap = buildJSDocMap(content); + + // Internal props to skip (used by public forms system, not useful for devs) + const internalProps = new Set([ + "publicformsummaryorder", + "action", + "actionarg", + "actionargs", + ]); + + // Match: export let propName: Type = defaultValue; + const propMatches = content.matchAll( + /export\s+let\s+(\w+)(?:\s*:\s*([^=;]+?))?(?:\s*=\s*([^;]+?))?;/g, + ); + + for (const match of propMatches) { + const rawName = match[1]; + let type = match[2]?.trim() || "any"; + const defaultStr = match[3]?.trim(); + + // Skip private props (starting with _) + if (rawName.startsWith("_")) continue; + + // Skip internal props + if (internalProps.has(rawName.toLowerCase())) continue; + + const name = toReactPropName(rawName); + let typeLabel: string | undefined; + let values: string[] | undefined; + + // Check if this prop has a validator for allowed values + if (validators.has(type)) { + const validatorData = validators.get(type)!; + values = validatorData.values; + // Generate typeLabel based on component name and prop type + typeLabel = generateTypeLabel(componentName, type, validatorData); + type = values.map((v) => `"${v}"`).join(" | "); + } + + // Handle special types + if (type.includes("GoAIconType") || type.includes("GoaIconType")) { + typeLabel = "GoAIconType"; + type = "GoAIconType"; + } else if (type === "Spacing" || type.includes("Spacing")) { + typeLabel = "Spacing"; + type = "Spacing"; + } + + // Parse default value + let defaultValue: string | null = parseDefaultValue(defaultStr); + + // Detect boolean props serialized as strings + let isBooleanProp = false; + if (type === "string" && (defaultValue === "true" || defaultValue === "false")) { + type = "boolean"; + isBooleanProp = true; + } + + // Resolve type aliases (e.g., Size -> "heading-xl" | "heading-l" | ...) + // Split type into union members, expand any alias references, filter undefined/null + { + const members = type + .split("|") + .map((v) => v.trim()) + .filter((v) => v.length > 0); + const expanded: string[] = []; + let didResolve = false; + + for (const member of members) { + const clean = member.replace(/["']/g, ""); + // Skip undefined/null — they just mean the prop is optional + if (clean === "undefined" || clean === "null") { + didResolve = true; + continue; + } + if (typeAliases.has(clean)) { + expanded.push(...typeAliases.get(clean)!); + didResolve = true; + } else { + expanded.push(member); + } + } + + if (didResolve && expanded.length > 0) { + const primitives = new Set(["string", "boolean", "number", "any", "object"]); + type = expanded + .map((v) => { + const c = v.replace(/["']/g, ""); + if (primitives.has(c)) return c; + return `"${c}"`; + }) + .join(" | "); + } + } + + // Handle inline union types + if (!values && type.includes("|") && !type.includes("typeof")) { + values = type + .split("|") + .map((v) => v.trim().replace(/["']/g, "")) + .filter((v) => v.length > 0 && !v.includes("(")); + } + + // Get JSDoc info from map (description + required flag) + const jsDocInfo = jsDocMap.get(rawName); + + // Skip @internal props — not for public API docs + if (jsDocInfo?.internal) continue; + + const description = jsDocInfo?.description || ""; + // Use @required from JSDoc if present, otherwise fall back to checking if no default value + const isRequired = jsDocInfo?.required || defaultStr === undefined; + + props.push({ + name, + rawName, + type: cleanType(type), + typeLabel, + values, + required: isRequired, + default: defaultValue, + isBooleanProp, + description, + deprecated: jsDocInfo?.deprecated || false, + }); + } + + return props; +} + +// Known limitation: only scans the top-level Svelte file, so components that +// delegate event dispatching to child Svelte files will have missing events. +// Affected: push-drawer (_close), file-upload-card (_cancel, _delete), +// form (_complete, _continue, _stateChange). +// This will be resolved when #3361 (JSDoc in wrappers) lands and the extractor +// can read events from the React/Angular wrappers instead. +function extractEvents(content: string): string[] { + const eventNames = new Set(); + + // Pattern 1: dispatch(element, "_eventName", ...) + const dispatchMatches = content.matchAll(/dispatch\s*\(\s*[^,]+,\s*["']([^"']+)["']/g); + for (const match of dispatchMatches) { + const eventName = match[1]; + // Skip internal events (like "help-text::announce") + if (eventName.includes("::")) continue; + eventNames.add(eventName); + } + + // Pattern 2: dispatchEvent(new CustomEvent("_eventName", ...)) + const customEventMatches = content.matchAll( + /dispatchEvent\s*\(\s*new\s+CustomEvent\s*\(\s*["']([^"']+)["']/g, + ); + for (const match of customEventMatches) { + const eventName = match[1]; + if (!eventName.includes("::")) { + eventNames.add(eventName); + } + } + + // Pattern 3: _rootEl?.dispatchEvent(new CustomEvent("_eventName", ...)) + const rootElMatches = content.matchAll( + /_rootEl\??\s*\.?\s*dispatchEvent\s*\(\s*new\s+CustomEvent\s*\(\s*["']([^"']+)["']/g, + ); + for (const match of rootElMatches) { + const eventName = match[1]; + if (!eventName.includes("::")) { + eventNames.add(eventName); + } + } + + return Array.from(eventNames); +} + +function extractSlots(content: string): string[] { + const slotNames: string[] = []; + const seenNames = new Set(); + + // Named slots: + const namedSlotMatches = content.matchAll(/ or + const hasDefaultSlot = /|>[^<]*<\/slot>)/.test(content); + if (hasDefaultSlot && !seenNames.has("default")) { + slotNames.unshift("default"); + } + + return slotNames; +} + +// ============================================================================= +// Type Label Generation +// ============================================================================= + +function generateTypeLabel( + componentName: string, + typeName: string, + _validatorData: ValidatorInfo, +): string { + // Generate TypeScript type name: Goab{Component}{Type} + const componentPart = capitalize(toCamelCase(componentName)); + // Remove trailing 's' from Types, Sizes, etc. + let typePart = typeName.replace(/s$/, ""); + + // Avoid duplication if type already includes component name + // e.g., ButtonType for button component should become GoabButtonType, not GoabButtonButtonType + const lowerComponent = componentPart.toLowerCase(); + const lowerType = typePart.toLowerCase(); + if (lowerType.startsWith(lowerComponent)) { + // Type already includes component name, just use the type part + return `Goab${typePart}`; + } + + return `Goab${componentPart}${typePart}`; +} + +// ============================================================================= +// Event Transformation +// ============================================================================= + +function transformEvents(rawEventNames: string[]): ExtractedEvent[] { + const events: ExtractedEvent[] = []; + + for (const rawName of rawEventNames) { + // Skip internal events + if (rawName.includes("::") || rawName.includes(":")) continue; + + // Raw event name (e.g., "_click") -> base name (e.g., "click") + const baseName = rawName.replace(/^_/, ""); + + // React event name: onClick, onChange, etc. + const reactName = `on${capitalize(baseName)}`; + + // Add React event + events.push({ + name: reactName, + type: "(event: Event) => void", + description: "", + frameworks: ["react"], + }); + + // Add Angular event (uses the raw name with underscore) + events.push({ + name: rawName, + type: "CustomEvent", + description: "", + frameworks: ["angular"], + }); + } + + return events; +} + +// ============================================================================= +// Utilities +// ============================================================================= + +function capitalize(str: string): string { + return str.charAt(0).toUpperCase() + str.slice(1); +} + +function toCamelCase(str: string): string { + return str + .split("-") + .map((part, index) => (index === 0 ? part : capitalize(part))) + .join(""); +} + +function toKebabCase(str: string): string { + return str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(); +} + +function toReactPropName(name: string): string { + const mappings: Record = { + leadingicon: "leadingIcon", + trailingicon: "trailingIcon", + arialabel: "ariaLabel", + arialabelledby: "ariaLabelledBy", + testid: "testId", + maxwidth: "maxWidth", + maxheight: "maxHeight", + maxlength: "maxLength", + minlength: "minLength", + autocomplete: "autoComplete", + autocapitalize: "autoCapitalize", + textalign: "textAlign", + calloutvariant: "calloutVariant", + handletrailingiconclick: "handleTrailingIconClick", + trailingiconarialabel: "trailingIconAriaLabel", + disableglobalclosepopover: "disableGlobalClosePopover", + labelsize: "labelSize", + helptext: "helpText", + errormessage: "errorMessage", + inputmode: "inputMode", + readonly: "readOnly", + tabindex: "tabIndex", + steppertext: "stepperText", + counterstep: "counterStep", + relativecontent: "relativeContent", + mindate: "minDate", + maxdate: "maxDate", + headingsize: "headingSize", + maxcount: "maxCount", + relativeto: "relativeTo", + }; + + return mappings[name.toLowerCase()] || name; +} + +function cleanType(type: string): string { + return type + .replace(/\s+/g, " ") + .replace(/\(\s*typeof\s+\w+\s*\)\s*\[\s*number\s*\]/g, "") + .trim(); +} + +function parseDefaultValue(str: string | undefined): string | null { + if (str === undefined) return null; + if (str === "null" || str === "undefined") return null; + if (str.startsWith('"') || str.startsWith("'")) { + return str.replace(/["']/g, ""); + } + if (str === "true" || str === "false") return str; + if (!isNaN(Number(str))) return str; + if (str === "{}") return "{}"; + if (str === "[]") return "[]"; + return str; +} + +// ============================================================================= +// Main Extraction +// ============================================================================= + +function extractComponentAPI(componentName: string): ExtractedComponentAPI | null { + const componentPath = path.join(UI_COMPONENTS_PATH, componentName); + if (!fs.existsSync(componentPath) || !fs.statSync(componentPath).isDirectory()) { + console.error(`Component directory not found: ${componentName}`); + return null; + } + + // Find the main Svelte file + const svelteFileName = `${capitalize(toCamelCase(componentName))}.svelte`; + let svelteFilePath = path.join(componentPath, svelteFileName); + + if (!fs.existsSync(svelteFilePath)) { + // Try to find any .svelte file + const files = fs.readdirSync(componentPath); + const svelteFile = files.find((f) => f.endsWith(".svelte")); + if (!svelteFile) { + console.error(`No Svelte file found in: ${componentName}`); + return null; + } + svelteFilePath = path.join(componentPath, svelteFile); + } + + const content = fs.readFileSync(svelteFilePath, "utf-8"); + + // Check if it's a custom element + const tagName = extractTagName(content); + if (!tagName) { + console.error(`Not a custom element: ${componentName}`); + return null; + } + + // Extract data + const typeAliases = extractTypeAliases(content); + const validators = extractValidators(content); + const rawProps = extractProps(content, validators, componentName, typeAliases); + const rawEventNames = extractEvents(content); + const slotNames = extractSlots(content); + + // Transform to output format + const props: ExtractedProp[] = rawProps.map((p) => ({ + name: p.name, + type: p.type, + typeLabel: p.typeLabel, + values: p.values, + required: p.required, + default: p.default, + description: p.description, // From JSDoc comments in source + ...(p.deprecated && { deprecated: true }), + })); + + const events = transformEvents(rawEventNames); + + const slots: ExtractedSlot[] = slotNames.map((name) => ({ + name, + description: "", // Filled by human content + })); + + // Relative path from workspace root + const relativePath = path.relative(WORKSPACE_ROOT, svelteFilePath); + + return { + componentSlug: toKebabCase(componentName), + extractedFrom: relativePath, + props, + events, + slots, + }; +} + +function saveComponentAPI(api: ExtractedComponentAPI): void { + // Ensure output directory exists + if (!fs.existsSync(OUTPUT_PATH)) { + fs.mkdirSync(OUTPUT_PATH, { recursive: true }); + } + + const filePath = path.join(OUTPUT_PATH, `${api.componentSlug}.json`); + fs.writeFileSync(filePath, JSON.stringify(api, null, 2)); + console.log(` Created: ${filePath}`); +} + +// ============================================================================= +// CLI +// ============================================================================= + +function main() { + const args = process.argv.slice(2); + + if (args.length === 0) { + console.log("Usage:"); + console.log(" npx tsx extract-api.ts button # Extract single component"); + console.log( + " npx tsx extract-api.ts button input # Extract multiple components", + ); + console.log(" npx tsx extract-api.ts --all # Extract all components"); + process.exit(1); + } + + let componentNames: string[]; + + if (args.includes("--all")) { + // Get all component directories + componentNames = fs.readdirSync(UI_COMPONENTS_PATH).filter((name) => { + const componentPath = path.join(UI_COMPONENTS_PATH, name); + return fs.statSync(componentPath).isDirectory(); + }); + } else { + componentNames = args; + } + + console.log("\n Component API Extraction"); + console.log("═".repeat(50)); + console.log(`\nExtracting ${componentNames.length} component(s)...\n`); + + let successCount = 0; + let failCount = 0; + + for (const componentName of componentNames) { + console.log(`Processing: ${componentName}`); + try { + const api = extractComponentAPI(componentName); + if (api) { + saveComponentAPI(api); + successCount++; + } else { + failCount++; + } + } catch (error) { + console.error(` Error: ${error}`); + failCount++; + } + } + + console.log("\n" + "═".repeat(50)); + console.log(`Complete: ${successCount} succeeded, ${failCount} failed`); + console.log(`Output: ${OUTPUT_PATH}\n`); +} + +main(); From f3544de28a3b14be0905287a47750caed6c2521c Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Wed, 11 Mar 2026 08:50:17 -0600 Subject: [PATCH 048/103] chore: npm updates --- package-lock.json | 4976 ++++++++------------------------------------- package.json | 40 +- 2 files changed, 890 insertions(+), 4126 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ae2afd765..f8c1fe6900 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,14 +9,14 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "@angular/animations": "21.2.0", - "@angular/common": "21.2.0", - "@angular/compiler": "21.2.0", - "@angular/core": "21.2.0", - "@angular/forms": "21.2.0", - "@angular/platform-browser": "21.2.0", - "@angular/platform-browser-dynamic": "21.2.0", - "@angular/router": "21.2.0", + "@angular/animations": "21.2.1", + "@angular/common": "21.2.1", + "@angular/compiler": "21.2.1", + "@angular/core": "21.2.1", + "@angular/forms": "21.2.1", + "@angular/platform-browser": "21.2.1", + "@angular/platform-browser-dynamic": "21.2.1", + "@angular/router": "21.2.1", "@astrojs/mdx": "4.3.13", "@astrojs/react": "4.4.2", "@swc/helpers": "0.5.19", @@ -29,7 +29,7 @@ "react-dom": "19.2.4", "react-router-dom": "6.30.3", "rxjs": "7.8.2", - "style-dictionary": "5.3.2", + "style-dictionary": "5.3.3", "svelte-routing": "2.13.0", "tslib": "2.8.1", "zone.js": "0.16.1" @@ -38,15 +38,15 @@ "@abgov/design-tokens": "1.10.0", "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@2.1.1", "@abgov/nx-release": "12.0.0", - "@angular-devkit/build-angular": "21.2.0", - "@angular-devkit/core": "21.2.0", - "@angular-devkit/schematics": "21.2.0", + "@angular-devkit/build-angular": "21.2.1", + "@angular-devkit/core": "21.2.1", + "@angular-devkit/schematics": "21.2.1", "@angular-eslint/eslint-plugin": "18.4.3", "@angular-eslint/eslint-plugin-template": "18.4.3", "@angular-eslint/template-parser": "18.4.3", - "@angular/cli": "21.2.0", - "@angular/compiler-cli": "21.2.0", - "@angular/language-service": "21.2.0", + "@angular/cli": "21.2.1", + "@angular/compiler-cli": "21.2.1", + "@angular/language-service": "21.2.1", "@astrojs/check": "0.9.6", "@babel/core": "7.29.0", "@babel/preset-react": "7.28.5", @@ -61,18 +61,18 @@ "@nx/vitest": "22.5.4", "@nx/web": "22.5.4", "@nx/workspace": "22.5.4", - "@schematics/angular": "21.2.0", + "@schematics/angular": "21.2.1", "@sveltejs/vite-plugin-svelte": "3.1.2", "@swc-node/register": "1.11.1", "@swc/cli": "0.8.0", - "@swc/core": "1.15.17", + "@swc/core": "1.15.18", "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "6.9.1", "@testing-library/react": "16.3.2", "@testing-library/svelte": "4.2.3", "@testing-library/user-event": "14.6.1", "@types/jest": "29.5.14", - "@types/node": "20.19.35", + "@types/node": "20.19.37", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@typescript-eslint/eslint-plugin": "7.18.0", @@ -102,13 +102,13 @@ "npm-check-updates": "19.6.3", "nx": "22.5.4", "playwright": "1.58.2", - "postcss": "8.5.6", + "postcss": "8.5.8", "postcss-import": "14.1.0", "postcss-preset-env": "7.8.3", "postcss-replace": "2.0.1", "postcss-url": "10.1.3", "prettier": "3.8.1", - "prettier-plugin-svelte": "3.5.0", + "prettier-plugin-svelte": "3.5.1", "rollup": "4.59.0", "semantic-release": "25.0.3", "svelte": "4.2.20", @@ -435,13 +435,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.2102.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.0.tgz", - "integrity": "sha512-kYFwTNzToG2SJMxj2f41w3QRtdqlrFuF+bpZrtIaHOP078Ktld8EPIp9KqB0Y46Vvs69ifby5Q1/wPD9wA3iaw==", + "version": "0.2102.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.1.tgz", + "integrity": "sha512-x2Qqz6oLYvEh9UBUG0AP1A4zROO/VP+k+zM9+4c2uZw1uqoBQFmutqgzncjVU7cR9R0RApgx9JRZHDFtQru68w==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.0", + "@angular-devkit/core": "21.2.1", "rxjs": "7.8.2" }, "bin": { @@ -454,17 +454,17 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.2.0.tgz", - "integrity": "sha512-owv0fJHsbTf3b2GZTpLJicwLf6fOjuEHODjvFDnREAB1mUObUi2xkf8mc99/lFIT8d+Jcz0z+xqVIdEf1VJf6g==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.2.1.tgz", + "integrity": "sha512-HZQggWPHepDIzQeYVjcC1m3HeIEKBYVKPfb2uZBcPxigHvZMeB0JD49QrgDeSOQulIGkAnJoPf/IDRqQpvWzqg==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2102.0", - "@angular-devkit/build-webpack": "0.2102.0", - "@angular-devkit/core": "21.2.0", - "@angular/build": "21.2.0", + "@angular-devkit/architect": "0.2102.1", + "@angular-devkit/build-webpack": "0.2102.1", + "@angular-devkit/core": "21.2.1", + "@angular/build": "21.2.1", "@babel/core": "7.29.0", "@babel/generator": "7.29.1", "@babel/helper-annotate-as-pure": "7.27.3", @@ -475,12 +475,12 @@ "@babel/preset-env": "7.29.0", "@babel/runtime": "7.28.6", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "21.2.0", + "@ngtools/webpack": "21.2.1", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.24", + "autoprefixer": "10.4.27", "babel-loader": "10.0.0", "browserslist": "^4.26.0", - "copy-webpack-plugin": "13.0.1", + "copy-webpack-plugin": "14.0.0", "css-loader": "7.1.3", "esbuild-wasm": "0.27.3", "http-proxy-middleware": "3.0.5", @@ -530,7 +530,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.2.0", + "@angular/ssr": "^21.2.1", "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", "jest": "^30.2.0", @@ -586,468 +586,6 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/autoprefixer": { - "version": "10.4.24", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", - "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.1", - "caniuse-lite": "^1.0.30001766", - "fraction.js": "^5.3.4", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/es-module-lexer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", @@ -1055,48 +593,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@angular-devkit/build-angular/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -1151,6 +647,35 @@ "node": ">= 0.6" } }, + "node_modules/@angular-devkit/build-angular/node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/webpack": { "version": "5.105.2", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", @@ -1201,13 +726,13 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.2102.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2102.0.tgz", - "integrity": "sha512-Za1xoxxrv8w8/B8QoYza4asDAypMjbTkeDEZi3VGiZ+QRWHNSTDsIAePQDOqs4b6Wogk898kwYYAYGyLuWEC0A==", + "version": "0.2102.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2102.1.tgz", + "integrity": "sha512-iBBMHegwjaAGnSoB5i9ynzCTCdYcLCgGhA2Wmi09DHJPSVFXw23H0nZUeNaRpo2V0hPRrMiyE3dlmaRJC42/yA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2102.0", + "@angular-devkit/architect": "0.2102.1", "rxjs": "7.8.2" }, "engines": { @@ -1221,9 +746,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.0.tgz", - "integrity": "sha512-HZdTn46Ca6qbb9Zef8R/+TWsk6mNKRm4rJyL3PxHP6HnVCwSPNZ0LNN9BjVREBs+UlRdXqBGFBZh5D1nBgu5GQ==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.1.tgz", + "integrity": "sha512-TpXGjERqVPN8EPt7LdmWAwh0oNQ/6uWFutzGZiXhJy81n1zb1O1XrqhRAmvP1cAo5O+na6IV2JkkCmxL6F8GUg==", "dev": true, "license": "MIT", "dependencies": { @@ -1249,13 +774,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.0.tgz", - "integrity": "sha512-3kn3FI5v7BQ7Zct6raek+WgvyDwOJ8wElbyC903GxMQCDBRGGcevhHvTAIHhknihEsrgplzPhTlWeMbk1JfdFg==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.1.tgz", + "integrity": "sha512-CWoamHaasAHMjHcYqxbj0tMnoXxdGotcAz2SpiuWtH28Lnf5xfbTaJn/lwdMP8Wdh4tgA+uYh2l45A5auCwmkw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.0", + "@angular-devkit/core": "21.2.1", "jsonc-parser": "3.3.1", "magic-string": "0.30.21", "ora": "9.3.0", @@ -1350,9 +875,9 @@ } }, "node_modules/@angular/animations": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.2.0.tgz", - "integrity": "sha512-SzlLoMT/r5wKqPicx5okCAiN5UD5+VE7x/F1G6gSJCcnBfbK5PqHPUmDnMW4jw9Ode06KZDT7ntstn6fG+Ld8w==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.2.1.tgz", + "integrity": "sha512-zT/S29pUTbziCLvZ2itBdNWd5i8tsXexofH7KA4n2yvYmK1EhNpE7TlHRjghmsHgtDt4VnGiMW4zXEyrl05Dwg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1361,18 +886,18 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.2.0" + "@angular/core": "21.2.1" } }, "node_modules/@angular/build": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.0.tgz", - "integrity": "sha512-K0EqiHz2y7TSyD4adWD0+C/P9khKlrsSWavXWxGRvoSJC/H3I3SK5Z6BWwftBibXR1Fis7njwvl5IGAlQrDchA==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.1.tgz", + "integrity": "sha512-cUpLNHJp9taII/FOcJHHfQYlMcZSRaf6eIxgSNS6Xfx1CeGoJNDN+J8+GFk+H1CPJt1EvbfyZ+dE5DbsgTD/QQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2102.0", + "@angular-devkit/architect": "0.2102.1", "@babel/core": "7.29.0", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", @@ -1415,7 +940,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.2.0", + "@angular/ssr": "^21.2.1", "karma": "^6.4.0", "less": "^4.2.0", "ng-packagr": "^21.0.0", @@ -1464,472 +989,6 @@ } } }, - "node_modules/@angular/build/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, "node_modules/@angular/build/node_modules/vite": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", @@ -2006,19 +1065,19 @@ } }, "node_modules/@angular/cli": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.0.tgz", - "integrity": "sha512-yaGEpckqgOemcHkoWeH92i9eNrcbr9iE/dnxL+Du6s9spTAXJ2jjtYfszhmowuQZkCK5rjecMb8ctNtHlaGCjg==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.1.tgz", + "integrity": "sha512-5SRfMTgwFj1zXOpfeZWHsxZBni0J4Xz7/CbewG47D6DmbstOrSdgt6eNzJ62R650t0G9dpri2YvToZgImtbjOQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2102.0", - "@angular-devkit/core": "21.2.0", - "@angular-devkit/schematics": "21.2.0", + "@angular-devkit/architect": "0.2102.1", + "@angular-devkit/core": "21.2.1", + "@angular-devkit/schematics": "21.2.1", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", "@modelcontextprotocol/sdk": "1.26.0", - "@schematics/angular": "21.2.0", + "@schematics/angular": "21.2.1", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.48.1", "ini": "6.0.0", @@ -2041,9 +1100,9 @@ } }, "node_modules/@angular/common": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.0.tgz", - "integrity": "sha512-6zJMPi0i/XDniEgv3/t2BjuDHiOG44lgIR5PYyxqGpgJ0kqB5hku/0TuentNEi1VnBYgthnfhjek7c+lakXmhw==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.1.tgz", + "integrity": "sha512-xhv2i1Q9s1kpGbGsfj+o36+XUC/TQLcZyRuRxn3GwaN7Rv34FabC88ycpvoE+sW/txj4JRx9yPA0dRSZjwZ+Gg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2052,14 +1111,14 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.2.0", + "@angular/core": "21.2.1", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.0.tgz", - "integrity": "sha512-0RPkma8UVNpse/VJcXT9w6SKzTMz4J/uMGj0l9enM1frg9xrx1fwi/lLmaVV9Nr9LfqPjQdxNFFlvaBB7g/2zg==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.1.tgz", + "integrity": "sha512-FxWaSaii1vfHIFA+JksqQ8NGB2frfqCrs7Ju50a44kbwR4fmanfn/VsiS/CbwBp9vcyT/Br9X/jAG4RuK/U2nw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2069,9 +1128,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.0.tgz", - "integrity": "sha512-gZd58p0/JjgdxMX3v+LjCB6e3dBIfNVr/YzXoh55TfffdBCUQY94hl1+DFQkJ72K5EX+1zbaz03dIm30kw1bGw==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.1.tgz", + "integrity": "sha512-qYCWLGtEju4cDtYLi4ZzbwKoF0lcGs+Lc31kuESvAzYvWNgk2EUOtwWo8kbgpAzAwSYodtxW6Q90iWEwfU6elw==", "dev": true, "license": "MIT", "dependencies": { @@ -2092,7 +1151,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.2.0", + "@angular/compiler": "21.2.1", "typescript": ">=5.9 <6.1" }, "peerDependenciesMeta": { @@ -2102,9 +1161,9 @@ } }, "node_modules/@angular/core": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.0.tgz", - "integrity": "sha512-VnTbmZq3g3Q+s3nCZ8VUDMLjMezOg/bqUxAJ/DrRWCrEcTP5JO3mrNPs3FHj+qlB0T+BQP7uQv6QTzPVKybwoA==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.1.tgz", + "integrity": "sha512-pFTbg03s2ZI5cHNT+eWsGjwIIKiYkeAnodFbCAHjwFi9KCEYlTykFLjr9lcpGrBddfmAH7GE08Q73vgmsdcNHw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2113,7 +1172,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.2.0", + "@angular/compiler": "21.2.1", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0 || ~0.16.0" }, @@ -2127,9 +1186,9 @@ } }, "node_modules/@angular/forms": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.0.tgz", - "integrity": "sha512-NduUtPWLauH/FLayEDkLyaKAGqKzXbcfO7468LOWCXN3crhNVQyIWRQPOUcdpoJwDAGLpN85m3DhJhXNnA9c5w==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.1.tgz", + "integrity": "sha512-6aqOPk9xoa0dfeUDeEbhaiPhmt6MQrdn59qbGAomn9RMXA925TrHbJhSIkp9tXc2Fr4aJRi8zkD/cdXEc1IYeA==", "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", @@ -2139,16 +1198,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.2.0", - "@angular/core": "21.2.0", - "@angular/platform-browser": "21.2.0", + "@angular/common": "21.2.1", + "@angular/core": "21.2.1", + "@angular/platform-browser": "21.2.1", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-21.2.0.tgz", - "integrity": "sha512-tWG/8I9kMfSk1NYlS/PvvcVg+Jx1wy4mbZFYIKfcSOoOsVuW/QyHRsHNFtHUG7ZbgzDXoHIWblEk3ESSoPlkjw==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-21.2.1.tgz", + "integrity": "sha512-L8EaNhWDKMny18RURg/Ju2Dix2e7qLL/s2yDQrawgjQRmXAMnjimz10w/EiiG7FMK/Hj5fLycS5X8VITq1f2rg==", "dev": true, "license": "MIT", "engines": { @@ -2156,9 +1215,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.0.tgz", - "integrity": "sha512-IUGukpvvT2B5Dl76qzk6rY7UIHUT9u4BhT2AwVz+5JqcX9KwQtYD17Gt7wj6bvIgCXKWG+CfN8Zd9DECOCYWjg==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.1.tgz", + "integrity": "sha512-k4SJLxIaLT26vLjLuFL+ho0BiG5PrdxEsjsXFC7w5iUhomeouzkHVTZ4t7gaLNKrdRD7QNtU4Faw0nL0yx0ZPQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2167,9 +1226,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "21.2.0", - "@angular/common": "21.2.0", - "@angular/core": "21.2.0" + "@angular/animations": "21.2.1", + "@angular/common": "21.2.1", + "@angular/core": "21.2.1" }, "peerDependenciesMeta": { "@angular/animations": { @@ -2178,9 +1237,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.2.0.tgz", - "integrity": "sha512-eTHNTnTEP25eCyu4MJdPAAc/7Ib5XtR/dqUlzZdNoAldREPNw95FF12QMunvnen66v3CvCYdND8rAlbz2LkK7g==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.2.1.tgz", + "integrity": "sha512-J4KnrXjgSuk7KjEm79/RK1yyzR867sIyT5mcG6jx2KmkjspFJd4OeOux7Oj7lSBM7+nDEsKC9F6s0x3dC0hCPQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2189,16 +1248,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.2.0", - "@angular/compiler": "21.2.0", - "@angular/core": "21.2.0", - "@angular/platform-browser": "21.2.0" + "@angular/common": "21.2.1", + "@angular/compiler": "21.2.1", + "@angular/core": "21.2.1", + "@angular/platform-browser": "21.2.1" } }, "node_modules/@angular/router": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.0.tgz", - "integrity": "sha512-siliJ+jJRUCRZ0cdkqc7zww9Didz56Z0Z2YPIuR2n5TZLiuJY+jAf6xotXKp/v6v8XoGJwLiRNipGgNDRIAlWA==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.1.tgz", + "integrity": "sha512-FUKG+8ImQYxmlDUdAs7+VeS/VrBNrbo0zGiKkzVNU/bbcCyroKXJLXFtkFI3qmROiJNyIta2IMBCHJvIjLIMig==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2207,9 +1266,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.2.0", - "@angular/core": "21.2.0", - "@angular/platform-browser": "21.2.0", + "@angular/common": "21.2.1", + "@angular/core": "21.2.1", + "@angular/platform-browser": "21.2.1", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -2476,462 +1535,22 @@ "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" } }, - "node_modules/@astrojs/react/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], + "node_modules/@astrojs/react/node_modules/vite": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@astrojs/react/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, - "node_modules/@astrojs/react/node_modules/vite": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" - }, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, "engines": { "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, @@ -5732,6 +4351,406 @@ "tslib": "^2.4.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", @@ -10271,9 +9290,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.2.0.tgz", - "integrity": "sha512-UOBgwtIvN29ELit35Gc11Kxx7ISQ8H4FJglRnoTmG9l26zA9vaLklfS4JHpU/8ORou9P+6NnZlzP80+qhmJSVg==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.2.1.tgz", + "integrity": "sha512-HGRGTDmyo3IuxxEAVK9/QK2Nd/nwWIh/zcd2x6nmCxC7tdB0fwIhEZhWnUDyLP2QnDaEPeR4NnZCGTN89SWhGg==", "dev": true, "license": "MIT", "engines": { @@ -15424,14 +14443,14 @@ } }, "node_modules/@schematics/angular": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.0.tgz", - "integrity": "sha512-GQUIeGzZwCT9/W5MAkKnkwETROPbA1eRmy3JF56jLmvr95tJnypGOG8jGYy0d+tcEVujIouh48r4J3bJQg5mrw==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.1.tgz", + "integrity": "sha512-DjrHRMoILhbZ6tc7aNZWuHA1wCm1iU/JN1TxAwNEyIBgyU3Fx8Z5baK4w0TCpOIPt0RLWVgP2L7kka9aXWCUFA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.0", - "@angular-devkit/schematics": "21.2.0", + "@angular-devkit/core": "21.2.1", + "@angular-devkit/schematics": "21.2.1", "jsonc-parser": "3.3.1" }, "engines": { @@ -16540,9 +15559,9 @@ } }, "node_modules/@swc/core": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.17.tgz", - "integrity": "sha512-Mu3eOrYlkdQPl7yqotNckitTr6FZ0yd7mlWIBEzK+EGIyybgMENJHmbS2DeA7BMleJiBElP6ke+Nz93pkKmKJw==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.18.tgz", + "integrity": "sha512-z87aF9GphWp//fnkRsqvtY+inMVPgYW3zSlXH1kJFvRT5H/wiAn+G32qW5l3oEk63KSF1x3Ov0BfHCObAmT8RA==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -16558,16 +15577,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.17", - "@swc/core-darwin-x64": "1.15.17", - "@swc/core-linux-arm-gnueabihf": "1.15.17", - "@swc/core-linux-arm64-gnu": "1.15.17", - "@swc/core-linux-arm64-musl": "1.15.17", - "@swc/core-linux-x64-gnu": "1.15.17", - "@swc/core-linux-x64-musl": "1.15.17", - "@swc/core-win32-arm64-msvc": "1.15.17", - "@swc/core-win32-ia32-msvc": "1.15.17", - "@swc/core-win32-x64-msvc": "1.15.17" + "@swc/core-darwin-arm64": "1.15.18", + "@swc/core-darwin-x64": "1.15.18", + "@swc/core-linux-arm-gnueabihf": "1.15.18", + "@swc/core-linux-arm64-gnu": "1.15.18", + "@swc/core-linux-arm64-musl": "1.15.18", + "@swc/core-linux-x64-gnu": "1.15.18", + "@swc/core-linux-x64-musl": "1.15.18", + "@swc/core-win32-arm64-msvc": "1.15.18", + "@swc/core-win32-ia32-msvc": "1.15.18", + "@swc/core-win32-x64-msvc": "1.15.18" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" @@ -16579,9 +15598,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.17.tgz", - "integrity": "sha512-eB9qdyt4E60323IS0rgV/rd79DJ+YWSyIKi+sT1dlIgR3ns4xlBiunREM3lVH0FKcUbhttiBvdVubT4QoOuZ+w==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.18.tgz", + "integrity": "sha512-+mIv7uBuSaywN3C9LNuWaX1jJJ3SKfiJuE6Lr3bd+/1Iv8oMU7oLBjYMluX1UrEPzwN2qCdY6Io0yVicABoCwQ==", "cpu": [ "arm64" ], @@ -16596,9 +15615,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.17.tgz", - "integrity": "sha512-k1TZARYs8947jJpSioqcPrusz+wEeABF4iiSdwcSyQh2rIUdIEk5FOyaqJASFPJ6dZfx7ZVOyjtDATVAegs2/Q==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.18.tgz", + "integrity": "sha512-wZle0eaQhnzxWX5V/2kEOI6Z9vl/lTFEC6V4EWcn+5pDjhemCpQv9e/TDJ0GIoiClX8EDWRvuZwh+Z3dhL1NAg==", "cpu": [ "x64" ], @@ -16613,9 +15632,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.17.tgz", - "integrity": "sha512-p6282NQZo5bzx0wphz1ETGjhcRB9CN+/XUAjQwApyoyX9iCloI5IT/RC3vjbflo42g8RPTxUTaItAO0hlLSesQ==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.18.tgz", + "integrity": "sha512-ao61HGXVqrJFHAcPtF4/DegmwEkVCo4HApnotLU8ognfmU8x589z7+tcf3hU+qBiU1WOXV5fQX6W9Nzs6hjxDw==", "cpu": [ "arm" ], @@ -16630,9 +15649,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.17.tgz", - "integrity": "sha512-TGnDS4ejy8y9jqxXqZCyA+DvFc64nXUHS9rxdyeJ9B9uyIdtKVhBrA2xfghYRS/sSPSyHZ0yu89NxBICvONH+A==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.18.tgz", + "integrity": "sha512-3xnctOBLIq3kj8PxOCgPrGjBLP/kNOddr6f5gukYt/1IZxsITQaU9TDyjeX6jG+FiCIHjCuWuffsyQDL5Ew1bg==", "cpu": [ "arm64" ], @@ -16647,9 +15666,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.17.tgz", - "integrity": "sha512-D0/6Hj4CkgSTTahtlGxv9IDsLTuvQz30mkZEMDp8TqwYhCL8AomznkibwlQU8HtY4q/dqd1OGRPH+FmNb4BBEA==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.18.tgz", + "integrity": "sha512-0a+Lix+FSSHBSBOA0XznCcHo5/1nA6oLLjcnocvzXeqtdjnPb+SvchItHI+lfeiuj1sClYPDvPMLSLyXFaiIKw==", "cpu": [ "arm64" ], @@ -16664,9 +15683,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.17.tgz", - "integrity": "sha512-1s2OFsg6DeRkWU7c+PIfIHZsFCbiZ34akXFHrg7KjpF8zIvpHZNoUUZimoWEwcB6GquXSkAO+1b5KpG5nusTeQ==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.18.tgz", + "integrity": "sha512-wG9J8vReUlpaHz4KOD/5UE1AUgirimU4UFT9oZmupUDEofxJKYb1mTA/DrMj0s78bkBiNI+7Fo2EgPuvOJfuAA==", "cpu": [ "x64" ], @@ -16681,9 +15700,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.17.tgz", - "integrity": "sha512-gtxGMGYtRWWmCcgx6xM2Yos43uiE/j8kZwkeL/LNGG9zM0tatd23NsfL9PnQJ45hY7QZ+dx2rM68e4ArgG4kJg==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.18.tgz", + "integrity": "sha512-4nwbVvCphKzicwNWRmvD5iBaZj8JYsRGa4xOxJmOyHlMDpsvvJ2OR2cODlvWyGFH6BYL1MfIAK3qph3hp0Az6g==", "cpu": [ "x64" ], @@ -16698,9 +15717,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.17.tgz", - "integrity": "sha512-gxi+/Miytez/O9vJ/QiheIivA3oWZjPp9nJu3VmAfLMWUzcZORMwgaI1ygtDTLjz7CzcwlGMJz/Ab66Y5DfNpg==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.18.tgz", + "integrity": "sha512-zk0RYO+LjiBCat2RTMHzAWaMky0cra9loH4oRrLKLLNuL+jarxKLFDA8xTZWEkCPLjUTwlRN7d28eDLLMgtUcQ==", "cpu": [ "arm64" ], @@ -16715,9 +15734,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.17.tgz", - "integrity": "sha512-KUsRqNbTp7SpNK0T9m4+i8GlngzNjwb69a3ttKA6XJ5r6Pewm+NSYji93pNkawXIivbWY2jhvceGMAyd+4hWaQ==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.18.tgz", + "integrity": "sha512-yVuTrZ0RccD5+PEkpcLOBAuPbYBXS6rslENvIXfvJGXSdX5QGi1ehC4BjAMl5FkKLiam4kJECUI0l7Hq7T1vwg==", "cpu": [ "ia32" ], @@ -16732,9 +15751,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.17", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.17.tgz", - "integrity": "sha512-zqtEGE0/rTKvEC5sOtpANLHeWEPjsTD4/rwpUxo6ymztcLI/Z+L9Wi9xQvIGmLTUih1gvNZcAwROqdfRP3oAWQ==", + "version": "1.15.18", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.18.tgz", + "integrity": "sha512-7NRmE4hmUQNCbYU3Hn9Tz57mK9Qq4c97ZS+YlamlK6qG9Fb5g/BB3gPDe0iLlJkns/sYv2VWSkm8c3NmbEGjbg==", "cpu": [ "x64" ], @@ -17474,9 +16493,9 @@ } }, "node_modules/@types/node": { - "version": "20.19.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.35.tgz", - "integrity": "sha512-Uarfe6J91b9HAUXxjvSOdiO2UPOKLm07Q1oh0JHxoZ1y8HoqxDAu3gVrsrOHeiio0kSsoVBt4wFrKOm0dKxVPQ==", + "version": "20.19.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", + "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", "dev": true, "license": "MIT", "dependencies": { @@ -20146,406 +19165,6 @@ "sharp": "^0.34.0" } }, - "node_modules/astro/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/astro/node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", @@ -20596,46 +19215,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/astro/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, "node_modules/astro/node_modules/mdn-data": { "version": "2.12.2", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", @@ -22988,20 +21567,20 @@ } }, "node_modules/copy-webpack-plugin": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", - "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz", + "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==", "dev": true, "license": "MIT", "dependencies": { "glob-parent": "^6.0.1", "normalize-path": "^3.0.0", "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2", + "serialize-javascript": "^7.0.3", "tinyglobby": "^0.2.12" }, "engines": { - "node": ">= 18.12.0" + "node": ">= 20.9.0" }, "funding": { "type": "opencollective", @@ -23011,6 +21590,16 @@ "webpack": "^5.1.0" } }, + "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.4.tgz", + "integrity": "sha512-DuGdB+Po43Q5Jxwpzt1lhyFSYKryqoNjQSA9M92tyw0lyHIOur+XCalOUe0KTJpyqzT8+fQ5A0Jf7vCx/NKmIg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/core-js-compat": { "version": "3.48.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", @@ -25884,6 +24473,46 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "node_modules/esbuild-wasm": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.27.3.tgz", @@ -32407,752 +31036,285 @@ "typescript": ">=5.5" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], + "node_modules/jest-preset-angular/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "aix" - ], "engines": { - "node": ">=18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], + "node_modules/jest-preset-angular/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, "engines": { - "node": ">=18" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], + "node_modules/jest-preset-angular/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "node_modules/jest-preset-angular/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], + "node_modules/jest-resolve": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", + "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" + }, "engines": { - "node": ">=18" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], + "node_modules/jest-resolve-dependencies/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], + "node_modules/jest-resolve-dependencies/node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], + "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], + "node_modules/jest-resolve-dependencies/node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "node_modules/jest-preset-angular/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], + "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], + "node_modules/jest-resolve-dependencies/node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], + "node_modules/jest-resolve-dependencies/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } ], + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], + "node_modules/jest-resolve-dependencies/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "node_modules/jest-preset-angular/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], + "node_modules/jest-resolve-dependencies/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], + "node_modules/jest-resolve-dependencies/node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], + "node_modules/jest-resolve-dependencies/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], + "node_modules/jest-resolve-dependencies/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-preset-angular/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], + "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], "engines": { - "node": ">=18" - } - }, - "node_modules/jest-preset-angular/node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/jest-preset-angular/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/jest-preset-angular/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/jest-preset-angular/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/jest-preset-angular/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/jest-preset-angular/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/jest-preset-angular/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-preset-angular/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, - "node_modules/jest-preset-angular/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-preset-angular/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", - "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve-dependencies/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve-dependencies/node_modules/jest-snapshot": { @@ -36636,9 +34798,9 @@ "license": "MIT" }, "node_modules/msgpackr": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.8.tgz", - "integrity": "sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA==", + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.9.tgz", + "integrity": "sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw==", "dev": true, "license": "MIT", "optional": true, @@ -36868,431 +35030,6 @@ } } }, - "node_modules/ng-packagr/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/ng-packagr/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/ng-packagr/node_modules/commander": { "version": "14.0.3", "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", @@ -37303,47 +35040,6 @@ "node": ">=20" } }, - "node_modules/ng-packagr/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, "node_modules/nlcst-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", @@ -41675,9 +39371,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "funding": [ { "type": "opencollective", @@ -43085,9 +40781,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.5.0.tgz", - "integrity": "sha512-2lLO/7EupnjO/95t+XZesXs8Bf3nYLIDfCo270h5QWbj/vjLqmrQ1LiRk9LPggxSDsnVYfehamZNf+rgQYApZg==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.5.1.tgz", + "integrity": "sha512-65+fr5+cgIKWKiqM1Doum4uX6bY8iFCdztvvp2RcF+AJoieaw9kJOFMNcJo/bkmKYsxFaM9OsVZK/gWauG/5mg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -47327,13 +45023,13 @@ } }, "node_modules/style-dictionary": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-5.3.2.tgz", - "integrity": "sha512-A/HPAdqyKWZxsiclqiq++fckbrkJ8a8+LbHJeieI2UYiZNHkNqLTa1jE3sZycxFPbPYQmQnu6u9vq5TH4aWjrQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-5.3.3.tgz", + "integrity": "sha512-NSeYkVYttoko/TPiH82F6EewyL3eDEVQPLnh8ofRgA0EG5kYEkcMhu5/Wqkfpfpyq1tlPP1t1yePnBZm11sA/Q==", "license": "Apache-2.0", "dependencies": { "@bundled-es-modules/deepmerge": "^4.3.1", - "@bundled-es-modules/glob": "^13.0.3", + "@bundled-es-modules/glob": "^13.0.6", "@bundled-es-modules/memfs": "^4.17.0", "@zip.js/zip.js": "^2.7.44", "chalk": "^5.3.0", @@ -49927,472 +47623,6 @@ } } }, - "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, "node_modules/vitefu": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", @@ -50596,472 +47826,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitest/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, "node_modules/vitest/node_modules/vite": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", diff --git a/package.json b/package.json index 34e9847d53..ef07dc4e98 100644 --- a/package.json +++ b/package.json @@ -38,15 +38,15 @@ "@abgov/design-tokens": "1.10.0", "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@2.1.1", "@abgov/nx-release": "12.0.0", - "@angular-devkit/build-angular": "21.2.0", - "@angular-devkit/core": "21.2.0", - "@angular-devkit/schematics": "21.2.0", + "@angular-devkit/build-angular": "21.2.1", + "@angular-devkit/core": "21.2.1", + "@angular-devkit/schematics": "21.2.1", "@angular-eslint/eslint-plugin": "18.4.3", "@angular-eslint/eslint-plugin-template": "18.4.3", "@angular-eslint/template-parser": "18.4.3", - "@angular/cli": "21.2.0", - "@angular/compiler-cli": "21.2.0", - "@angular/language-service": "21.2.0", + "@angular/cli": "21.2.1", + "@angular/compiler-cli": "21.2.1", + "@angular/language-service": "21.2.1", "@astrojs/check": "0.9.6", "@babel/core": "7.29.0", "@babel/preset-react": "7.28.5", @@ -61,18 +61,18 @@ "@nx/vitest": "22.5.4", "@nx/web": "22.5.4", "@nx/workspace": "22.5.4", - "@schematics/angular": "21.2.0", + "@schematics/angular": "21.2.1", "@sveltejs/vite-plugin-svelte": "3.1.2", "@swc-node/register": "1.11.1", "@swc/cli": "0.8.0", - "@swc/core": "1.15.17", + "@swc/core": "1.15.18", "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "6.9.1", "@testing-library/react": "16.3.2", "@testing-library/svelte": "4.2.3", "@testing-library/user-event": "14.6.1", "@types/jest": "29.5.14", - "@types/node": "20.19.35", + "@types/node": "20.19.37", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@typescript-eslint/eslint-plugin": "7.18.0", @@ -102,13 +102,13 @@ "npm-check-updates": "19.6.3", "nx": "22.5.4", "playwright": "1.58.2", - "postcss": "8.5.6", + "postcss": "8.5.8", "postcss-import": "14.1.0", "postcss-preset-env": "7.8.3", "postcss-replace": "2.0.1", "postcss-url": "10.1.3", "prettier": "3.8.1", - "prettier-plugin-svelte": "3.5.0", + "prettier-plugin-svelte": "3.5.1", "rollup": "4.59.0", "semantic-release": "25.0.3", "svelte": "4.2.20", @@ -124,14 +124,14 @@ "vitest-dom": "0.1.1" }, "dependencies": { - "@angular/animations": "21.2.0", - "@angular/common": "21.2.0", - "@angular/compiler": "21.2.0", - "@angular/core": "21.2.0", - "@angular/forms": "21.2.0", - "@angular/platform-browser": "21.2.0", - "@angular/platform-browser-dynamic": "21.2.0", - "@angular/router": "21.2.0", + "@angular/animations": "21.2.1", + "@angular/common": "21.2.1", + "@angular/compiler": "21.2.1", + "@angular/core": "21.2.1", + "@angular/forms": "21.2.1", + "@angular/platform-browser": "21.2.1", + "@angular/platform-browser-dynamic": "21.2.1", + "@angular/router": "21.2.1", "@astrojs/mdx": "4.3.13", "@astrojs/react": "4.4.2", "@swc/helpers": "0.5.19", @@ -144,7 +144,7 @@ "react-dom": "19.2.4", "react-router-dom": "6.30.3", "rxjs": "7.8.2", - "style-dictionary": "5.3.2", + "style-dictionary": "5.3.3", "svelte-routing": "2.13.0", "tslib": "2.8.1", "zone.js": "0.16.1" From 18568b558043519d9176ee22b8b60d18af5fe3d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2026 16:11:49 +0000 Subject: [PATCH 049/103] chore(deps): bump tar and npm Bumps [tar](https://github.com/isaacs/node-tar) and [npm](https://github.com/npm/cli). These dependencies needed to be updated together. Updates `tar` from 7.5.10 to 7.5.11 - [Release notes](https://github.com/isaacs/node-tar/releases) - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/node-tar/compare/v7.5.10...v7.5.11) Updates `npm` from 11.11.0 to 11.11.1 - [Release notes](https://github.com/npm/cli/releases) - [Changelog](https://github.com/npm/cli/blob/latest/CHANGELOG.md) - [Commits](https://github.com/npm/cli/compare/v11.11.0...v11.11.1) --- updated-dependencies: - dependency-name: tar dependency-version: 7.5.11 dependency-type: indirect - dependency-name: npm dependency-version: 11.11.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 65 +++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8c1fe6900..b6fc52bbf6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35381,9 +35381,9 @@ } }, "node_modules/npm": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-11.11.0.tgz", - "integrity": "sha512-82gRxKrh/eY5UnNorkTFcdBQAGpgjWehkfGVqAGlJjejEtJZGGJUqjo3mbBTNbc5BTnPKGVtGPBZGhElujX5cw==", + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-11.11.1.tgz", + "integrity": "sha512-asazCodkFdz1ReQzukyzS/DD77uGCIqUFeRG3gtaT8b9UR0ne1m9QOBuMgT72ij1rt7TRrOox4A1WzntMWIuEg==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -35462,7 +35462,7 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^9.4.0", + "@npmcli/arborist": "^9.4.1", "@npmcli/config": "^10.7.1", "@npmcli/fs": "^5.0.0", "@npmcli/map-workspaces": "^5.0.3", @@ -35470,7 +35470,7 @@ "@npmcli/package-json": "^7.0.5", "@npmcli/promise-spawn": "^9.0.1", "@npmcli/redact": "^4.0.0", - "@npmcli/run-script": "^10.0.3", + "@npmcli/run-script": "^10.0.4", "@sigstore/tuf": "^4.0.1", "abbrev": "^4.0.0", "archy": "~1.0.0", @@ -35487,17 +35487,17 @@ "is-cidr": "^6.0.3", "json-parse-even-better-errors": "^5.0.0", "libnpmaccess": "^10.0.3", - "libnpmdiff": "^8.1.3", - "libnpmexec": "^10.2.3", - "libnpmfund": "^7.0.17", + "libnpmdiff": "^8.1.4", + "libnpmexec": "^10.2.4", + "libnpmfund": "^7.0.18", "libnpmorg": "^8.0.1", - "libnpmpack": "^9.1.3", + "libnpmpack": "^9.1.4", "libnpmpublish": "^11.1.3", "libnpmsearch": "^9.0.1", "libnpmteam": "^8.0.2", "libnpmversion": "^8.0.3", "make-fetch-happen": "^15.0.4", - "minimatch": "^10.2.2", + "minimatch": "^10.2.4", "minipass": "^7.1.3", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", @@ -35511,7 +35511,7 @@ "npm-registry-fetch": "^19.1.1", "npm-user-validate": "^4.0.0", "p-map": "^7.0.4", - "pacote": "^21.4.0", + "pacote": "^21.5.0", "parse-conflict-json": "^5.0.1", "proc-log": "^6.1.0", "qrcode-terminal": "^0.12.0", @@ -35520,7 +35520,7 @@ "spdx-expression-parse": "^4.0.0", "ssri": "^13.0.1", "supports-color": "^10.2.2", - "tar": "^7.5.9", + "tar": "^7.5.11", "text-table": "~0.2.0", "tiny-relative-date": "^2.0.2", "treeverse": "^3.0.0", @@ -35721,11 +35721,12 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "9.4.0", + "version": "9.4.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "@gar/promise-retry": "^1.0.0", "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^5.0.0", "@npmcli/installed-package-contents": "^4.0.0", @@ -35934,7 +35935,7 @@ } }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "10.0.3", + "version": "10.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -35943,8 +35944,7 @@ "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "node-gyp": "^12.1.0", - "proc-log": "^6.0.0", - "which": "^6.0.0" + "proc-log": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -36114,7 +36114,7 @@ } }, "node_modules/npm/node_modules/brace-expansion": { - "version": "5.0.3", + "version": "5.0.4", "dev": true, "inBundle": true, "license": "MIT", @@ -36504,12 +36504,12 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "8.1.3", + "version": "8.1.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.4.0", + "@npmcli/arborist": "^9.4.1", "@npmcli/installed-package-contents": "^4.0.0", "binary-extensions": "^3.0.0", "diff": "^8.0.2", @@ -36523,13 +36523,13 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "10.2.3", + "version": "10.2.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@gar/promise-retry": "^1.0.0", - "@npmcli/arborist": "^9.4.0", + "@npmcli/arborist": "^9.4.1", "@npmcli/package-json": "^7.0.0", "@npmcli/run-script": "^10.0.0", "ci-info": "^4.0.0", @@ -36546,12 +36546,12 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "7.0.17", + "version": "7.0.18", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.4.0" + "@npmcli/arborist": "^9.4.1" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -36571,12 +36571,12 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "9.1.3", + "version": "9.1.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.4.0", + "@npmcli/arborist": "^9.4.1", "@npmcli/run-script": "^10.0.0", "npm-package-arg": "^13.0.0", "pacote": "^21.0.2" @@ -36677,7 +36677,7 @@ } }, "node_modules/npm/node_modules/minimatch": { - "version": "10.2.2", + "version": "10.2.4", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -37015,7 +37015,7 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "21.4.0", + "version": "21.5.0", "dev": true, "inBundle": true, "license": "ISC", @@ -37320,7 +37320,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "7.5.9", + "version": "7.5.11", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -37479,12 +37479,11 @@ } }, "node_modules/npm/node_modules/write-file-atomic": { - "version": "7.0.0", + "version": "7.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" }, "engines": { @@ -45559,9 +45558,9 @@ } }, "node_modules/tar": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.10.tgz", - "integrity": "sha512-8mOPs1//5q/rlkNSPcCegA6hiHJYDmSLEI8aMH/CdSQJNWztHC9WHNam5zdQlfpTwB9Xp7IBEsHfV5LKMJGVAw==", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", + "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { From 3796d9d6043f5bc4893c4008466c5a51035d77db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 09:54:24 +0000 Subject: [PATCH 050/103] chore(deps-dev): bump yauzl from 3.2.0 to 3.2.1 Bumps [yauzl](https://github.com/thejoshwolfe/yauzl) from 3.2.0 to 3.2.1. - [Commits](https://github.com/thejoshwolfe/yauzl/compare/3.2.0...3.2.1) --- updated-dependencies: - dependency-name: yauzl dependency-version: 3.2.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b6fc52bbf6..2e0d9f2f58 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49595,9 +49595,9 @@ } }, "node_modules/yauzl": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.0.tgz", - "integrity": "sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.1.tgz", + "integrity": "sha512-k1isifdbpNSFEHFJ1ZY4YDewv0IH9FR61lDetaRMD3j2ae3bIXGV+7c+LHCqtQGofSd8PIyV4X6+dHMAnSr60A==", "dev": true, "license": "MIT", "dependencies": { From e21f76867feae9b89570866c38b56615529d0e0d Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Fri, 13 Mar 2026 07:48:40 -0600 Subject: [PATCH 051/103] feat(#3059): add Get Started section with submenu, content pages, and nav improvements - Add GetStartedSubMenu with Designers/Developers groups and 15 content pages - Migrate all content from Confluence (automated accessibility, component lifecycle, designers, developers, QA testing, contribute, out of support) - Create shared DropInCallout.astro component for drop-in hours callout - Add technologies.svg diagram to technologies page - Update nav: reorder to Get Started, Examples, Components, Tokens, Foundations - Unify submenu behavior: collapse-to-parent, iconless groups, shadow DOM fixes - Update TableOfContents to support goa-text heading elements - Apply review feedback: heading hierarchy with goa-text, remove dividers, goa-table for browsers, consistent callout styling --- docs/public/images/technologies.svg | 19 + docs/src/components/DropInCallout.astro | 12 + docs/src/components/SiteNav.tsx | 44 ++- docs/src/components/TableOfContents.tsx | 8 +- docs/src/components/nav/ComponentsSubMenu.tsx | 82 ++--- docs/src/components/nav/GetStartedSubMenu.tsx | 151 ++++++++ docs/src/components/nav/ParentMenu.tsx | 46 +-- docs/src/components/nav/index.ts | 4 +- .../components/nav/useGroupShadowDomFixes.ts | 45 +++ docs/src/components/search/quick-links.ts | 20 +- .../src/layouts/DocumentationPageLayout.astro | 2 +- .../get-started/automated-accessibility.astro | 92 +++++ .../get-started/component-lifecycle.astro | 66 ++++ docs/src/pages/get-started/contribute.astro | 187 ++++++++++ docs/src/pages/get-started/designers.astro | 218 +++++------- .../designers/designing-with-ds.astro | 81 +++++ .../get-started/designers/ux-guidelines.astro | 55 +++ docs/src/pages/get-started/developers.astro | 335 +++++------------- .../get-started/developers/browsers.astro | 86 +++++ .../pages/get-started/developers/bug.astro | 65 ++++ .../pages/get-started/developers/setup.astro | 26 ++ .../get-started/developers/technologies.astro | 110 ++++++ .../pages/get-started/developers/update.astro | 26 ++ docs/src/pages/get-started/index.astro | 159 +++++---- .../pages/get-started/out-of-support.astro | 53 +++ docs/src/pages/get-started/qa-testing.astro | 77 ++++ 26 files changed, 1513 insertions(+), 556 deletions(-) create mode 100644 docs/public/images/technologies.svg create mode 100644 docs/src/components/DropInCallout.astro create mode 100644 docs/src/components/nav/GetStartedSubMenu.tsx create mode 100644 docs/src/components/nav/useGroupShadowDomFixes.ts create mode 100644 docs/src/pages/get-started/automated-accessibility.astro create mode 100644 docs/src/pages/get-started/component-lifecycle.astro create mode 100644 docs/src/pages/get-started/contribute.astro create mode 100644 docs/src/pages/get-started/designers/designing-with-ds.astro create mode 100644 docs/src/pages/get-started/designers/ux-guidelines.astro create mode 100644 docs/src/pages/get-started/developers/browsers.astro create mode 100644 docs/src/pages/get-started/developers/bug.astro create mode 100644 docs/src/pages/get-started/developers/setup.astro create mode 100644 docs/src/pages/get-started/developers/technologies.astro create mode 100644 docs/src/pages/get-started/developers/update.astro create mode 100644 docs/src/pages/get-started/out-of-support.astro create mode 100644 docs/src/pages/get-started/qa-testing.astro diff --git a/docs/public/images/technologies.svg b/docs/public/images/technologies.svg new file mode 100644 index 0000000000..df3dc4683b --- /dev/null +++ b/docs/public/images/technologies.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/src/components/DropInCallout.astro b/docs/src/components/DropInCallout.astro new file mode 100644 index 0000000000..a3f8fc55ec --- /dev/null +++ b/docs/src/components/DropInCallout.astro @@ -0,0 +1,12 @@ + + Join design system drop-in hours to: +
      +
    • Get feedback on your service
    • +
    • Propose new components or patterns
    • +
    • Suggest updates to existing resources
    • +
    • Ask questions
    • +
    • Share feedback
    • +
    + Drop-in sessions are available to Government of Alberta product teams. + Book time in drop-in hours +
    diff --git a/docs/src/components/SiteNav.tsx b/docs/src/components/SiteNav.tsx index 3dfff27daa..8f39eb0e4c 100644 --- a/docs/src/components/SiteNav.tsx +++ b/docs/src/components/SiteNav.tsx @@ -4,17 +4,23 @@ * Unified site navigation with parent/sub-menu state switching. * * Navigation behavior: - * - Components: Has submenu (many component pages) + * - Components, Get started: Has submenu (many pages) * - Tokens: Direct link, stays on parent menu, highlights "Tokens" * - Examples: Direct link, stays on parent menu, highlights "Examples" * * Menu level is managed via React state: * - Parent view: Shows all sections - * - Sub-menu view: Shows section-specific navigation (only for components) + * - Sub-menu view: Shows section-specific navigation (components, get-started) */ import { useState, useEffect, useCallback } from "react"; -import { ParentMenu, ComponentsSubMenu, type MenuSection, type NavCategory } from "./nav"; +import { + ParentMenu, + ComponentsSubMenu, + GetStartedSubMenu, + type MenuSection, + type NavCategory, +} from "./nav"; interface SiteNavProps { /** Current page slug (for highlighting current item) */ @@ -28,7 +34,7 @@ interface SiteNavProps { } // Sections that have submenus (show submenu when navigated to) -const SUBMENU_SECTIONS = ["components"]; +const SUBMENU_SECTIONS = ["components", "get-started"]; // Sections that are single pages (stay on parent menu, just highlight) const SINGLE_PAGE_SECTIONS = ["tokens", "examples"]; @@ -101,7 +107,9 @@ export function SiteNav({ if (typeof window !== "undefined") { const section = initialSection || detectSectionFromUrl(window.location.pathname); setCurrentSection(section); - setMenuLevel(getMenuLevelForSection(section)); + // Only show submenu if menu is open; collapsed submenu icons aren't useful + const menuIsOpen = getInitialMenuState(); + setMenuLevel(menuIsOpen ? getMenuLevelForSection(section) : "parent"); } }, [initialSection]); @@ -138,6 +146,7 @@ export function SiteNav({ // OR when crossing from mobile to desktop (prevents floating menu bug) if (width < previousWidth || crossedToDesktop) { setIsOpen(false); + setMenuLevel("parent"); } previousWidth = width; @@ -148,8 +157,15 @@ export function SiteNav({ }, []); const handleToggle = useCallback(() => { - setIsOpen((prev) => !prev); - }, []); + setIsOpen((prev) => { + // When closing any submenu, return to parent instead of collapsing + // (the collapsed icon view isn't useful without icons) + if (prev && SUBMENU_SECTIONS.includes(menuLevel)) { + setMenuLevel("parent"); + } + return !prev; + }); + }, [menuLevel]); const handleSelectSection = useCallback( (section: MenuSection) => { @@ -174,6 +190,9 @@ export function SiteNav({ setIsOpen(true); }, []); + // Derive the current URL path for get-started submenu highlighting + const currentUrl = typeof window !== "undefined" ? window.location.pathname : ""; + // Render the appropriate menu based on current level switch (menuLevel) { case "components": @@ -188,6 +207,17 @@ export function SiteNav({ /> ); + case "get-started": + return ( + + ); + // All other cases show the parent menu with appropriate highlighting case "parent": default: diff --git a/docs/src/components/TableOfContents.tsx b/docs/src/components/TableOfContents.tsx index 1e744fb278..c228ef9c34 100644 --- a/docs/src/components/TableOfContents.tsx +++ b/docs/src/components/TableOfContents.tsx @@ -39,12 +39,18 @@ export function TableOfContents({ cssQuery }: TOCProps) { const id = el.getAttribute("id"); const title = el.textContent?.trim(); + // For goa-text elements, read the "as" attribute for the heading level + const tagName = + el.tagName === "GOA-TEXT" + ? (el.getAttribute("as") || "h2").toUpperCase() + : el.tagName; + // Only include visible headings if (id && title && isVisible(el)) { result.push({ id, title, - tagName: el.tagName, + tagName, }); } }); diff --git a/docs/src/components/nav/ComponentsSubMenu.tsx b/docs/src/components/nav/ComponentsSubMenu.tsx index 8516685431..34452ef77a 100644 --- a/docs/src/components/nav/ComponentsSubMenu.tsx +++ b/docs/src/components/nav/ComponentsSubMenu.tsx @@ -5,20 +5,20 @@ * Uses GoabxWorkSideMenuGroup for expandable category sections. */ -import { type MouseEvent } from "react"; +import { type MouseEvent, useRef } from "react"; import { GoabxWorkSideMenu, GoabxWorkSideMenuItem, GoabxWorkSideMenuGroup, } from "@abgov/react-components/experimental"; import { MenuSecondaryContent } from "./MenuSecondaryContent"; +import { useGroupShadowDomFixes } from "./useGroupShadowDomFixes"; // Component categories - synced with content collection (visible components only) const COMPONENT_CATEGORIES = [ { name: "Content layout", slug: "content-layout", - icon: "grid", components: [ { name: "Accordion", slug: "accordion" }, { name: "Container", slug: "container" }, @@ -35,7 +35,6 @@ const COMPONENT_CATEGORIES = [ { name: "Feedback and alerts", slug: "feedback-and-alerts", - icon: "notifications", components: [ { name: "Badge", slug: "badge" }, { name: "Callout", slug: "callout" }, @@ -52,7 +51,6 @@ const COMPONENT_CATEGORIES = [ { name: "Inputs and actions", slug: "inputs-and-actions", - icon: "create", components: [ { name: "Button", slug: "button" }, { name: "Button group", slug: "button-group" }, @@ -73,7 +71,6 @@ const COMPONENT_CATEGORIES = [ { name: "Structure and navigation", slug: "structure-and-navigation", - icon: "browsers", components: [ { name: "Footer", slug: "footer" }, { name: "Form stepper", slug: "form-stepper" }, @@ -88,7 +85,6 @@ const COMPONENT_CATEGORIES = [ { name: "Utilities", slug: "utilities", - icon: "build", components: [ { name: "Block", slug: "block" }, { name: "Divider", slug: "divider" }, @@ -116,6 +112,9 @@ export function ComponentsSubMenu({ onExpandMenu, currentSlug, }: ComponentsSubMenuProps) { + const groupsRef = useRef(null); + useGroupShadowDomFixes(groupsRef); + // We're on the All Components page if there's no currentSlug const isAllComponentsPage = !currentSlug; @@ -145,51 +144,48 @@ export function ComponentsSubMenu({ - On All Components page: use url so auto-matching highlights it - On component detail pages: wrap in div to prevent auto-matching */} {isAllComponentsPage ? ( - + ) : (
    - +
    )} {/* Component categories - using GoabxWorkSideMenuGroup for expandable sections */} - {COMPONENT_CATEGORIES.map((category) => { - // Auto-expand category if it contains the current component - const containsCurrentComponent = category.components.some( - (c) => c.slug === currentSlug, - ); +
    + {COMPONENT_CATEGORIES.map((category) => { + // Auto-expand category if it contains the current component + const containsCurrentComponent = category.components.some( + (c) => c.slug === currentSlug, + ); - // Handler to expand menu when clicking on a collapsed category group - // Using capture phase to catch event before internal component handles it - const handleGroupClickCapture = () => { - if (!isOpen && onExpandMenu) { - onExpandMenu(); - } - }; + // Handler to expand menu when clicking on a collapsed category group + // Using capture phase to catch event before internal component handles it + const handleGroupClickCapture = () => { + if (!isOpen && onExpandMenu) { + onExpandMenu(); + } + }; - return ( -
    - - {category.components.map((component) => ( - - ))} - -
    - ); - })} + return ( +
    + + {category.components.map((component) => ( + + ))} + +
    + ); + })} +
    ); diff --git a/docs/src/components/nav/GetStartedSubMenu.tsx b/docs/src/components/nav/GetStartedSubMenu.tsx new file mode 100644 index 0000000000..43c6bb954a --- /dev/null +++ b/docs/src/components/nav/GetStartedSubMenu.tsx @@ -0,0 +1,151 @@ +/** + * GetStartedSubMenu.tsx + * + * Sub-menu for Get Started section showing grouped pages. + * Uses GoabxWorkSideMenuGroup for expandable Designers/Developers sections. + */ + +import { type MouseEvent, useRef } from "react"; +import { + GoabxWorkSideMenu, + GoabxWorkSideMenuItem, + GoabxWorkSideMenuGroup, +} from "@abgov/react-components/experimental"; +import { MenuSecondaryContent } from "./MenuSecondaryContent"; +import { useGroupShadowDomFixes } from "./useGroupShadowDomFixes"; + +// Top-level pages (not in a group) +const TOP_PAGES = [ + { label: "Starting with the design system", url: "/get-started" }, + { label: "Automated accessibility", url: "/get-started/automated-accessibility" }, + { label: "Component lifecycle", url: "/get-started/component-lifecycle" }, +]; + +// Grouped sections with sub-pages +const PAGE_GROUPS = [ + { + name: "Designers", + slug: "designers", + pages: [ + { label: "Overview", url: "/get-started/designers" }, + { + label: "Designing with Design System 2.0", + url: "/get-started/designers/designing-with-ds", + }, + { + label: "User Experience Guidelines", + url: "/get-started/designers/ux-guidelines", + }, + ], + }, + { + name: "Developers", + slug: "developers", + pages: [ + { label: "Overview", url: "/get-started/developers" }, + { label: "Setup", url: "/get-started/developers/setup" }, + { label: "Verify a bug", url: "/get-started/developers/bug" }, + { label: "Technologies", url: "/get-started/developers/technologies" }, + { label: "Supported browsers", url: "/get-started/developers/browsers" }, + { label: "Version update guide", url: "/get-started/developers/update" }, + ], + }, +]; + +// Bottom pages (after groups) +const BOTTOM_PAGES = [ + { label: "QA testing", url: "/get-started/qa-testing" }, + { label: "Contribute", url: "/get-started/contribute" }, + { label: "Out of support versions", url: "/get-started/out-of-support" }, +]; + +// All URLs for matching current page +const ALL_URLS = [ + ...TOP_PAGES.map((p) => p.url), + ...PAGE_GROUPS.flatMap((g) => g.pages.map((p) => p.url)), + ...BOTTOM_PAGES.map((p) => p.url), +]; + +interface GetStartedSubMenuProps { + isOpen: boolean; + onToggle: () => void; + onBack: () => void; + onExpandMenu?: () => void; + currentUrl?: string; +} + +export function GetStartedSubMenu({ + isOpen, + onToggle, + onBack, + onExpandMenu, + currentUrl, +}: GetStartedSubMenuProps) { + const groupsRef = useRef(null); + useGroupShadowDomFixes(groupsRef); + + const handleBackClick = (e: MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + onBack(); + }; + + const primaryContent = ( + <> + {/* Back to parent menu */} +
    + +
    + + {/* Top-level pages */} + {TOP_PAGES.map((page) => ( + + ))} + + {/* Grouped sections (ref used to hide icons via shadow DOM workaround) */} +
    + {PAGE_GROUPS.map((group) => { + const containsCurrentPage = group.pages.some((p) => p.url === currentUrl); + + const handleGroupClickCapture = () => { + if (!isOpen && onExpandMenu) { + onExpandMenu(); + } + }; + + return ( +
    + + {group.pages.map((page) => ( + + ))} + +
    + ); + })} +
    + + {/* Bottom pages */} + {BOTTOM_PAGES.map((page) => ( + + ))} + + ); + + return ( + } + /> + ); +} + +export default GetStartedSubMenu; diff --git a/docs/src/components/nav/ParentMenu.tsx b/docs/src/components/nav/ParentMenu.tsx index 4feffa5d3d..e1cc67a788 100644 --- a/docs/src/components/nav/ParentMenu.tsx +++ b/docs/src/components/nav/ParentMenu.tsx @@ -2,16 +2,15 @@ * ParentMenu.tsx * * Parent-level navigation showing all main sections. - * - Components: opens submenu (has many pages) + * - Components, Get started: opens submenu (has many pages) * - Tokens, Examples: direct navigation (single page each) - * - Get started, Foundations: direct navigation (when content exists) + * - Foundations: direct navigation (when content exists) */ import React from "react"; import { GoabxWorkSideMenu, GoabxWorkSideMenuItem, - GoabxWorkSideMenuGroup, } from "@abgov/react-components/experimental"; import { MenuSecondaryContent } from "./MenuSecondaryContent"; @@ -39,24 +38,15 @@ const DIRECT_NAV_SECTIONS: Record = { }; // Sections that open a submenu -const SUBMENU_SECTIONS = ["components"]; - -// Sections that render as expandable groups with sub-items -const GROUP_SECTIONS: Record> = { - "get-started": [ - { label: "Early Adopters", url: "/get-started" }, - { label: "Designers", url: "/get-started/designers" }, - { label: "Developers", url: "/get-started/developers" }, - ], -}; +const SUBMENU_SECTIONS = ["components", "get-started"]; // Main navigation sections const SECTIONS = [ { id: "get-started" as const, label: "Get started", icon: "document-text" }, - { id: "foundations" as const, label: "Foundations", icon: "list" }, { id: "examples" as const, label: "Examples", icon: "browsers" }, { id: "components" as const, label: "Components", icon: "shapes" }, { id: "tokens" as const, label: "Tokens", icon: "code-slash" }, + { id: "foundations" as const, label: "Foundations", icon: "list" }, ]; export function ParentMenu({ @@ -65,11 +55,11 @@ export function ParentMenu({ onSelectSection, currentSection, }: ParentMenuProps) { - // Handle click on Components item - prevent navigation, open submenu instead - const handleComponentsClick = (e: React.MouseEvent) => { + // Handle click on submenu item - prevent navigation, open submenu instead + const handleSubmenuClick = (sectionId: MenuSection) => (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); - onSelectSection("components"); + onSelectSection(sectionId); }; // Primary content: Main navigation sections @@ -78,23 +68,9 @@ export function ParentMenu({ {SECTIONS.map((section) => { const directUrl = DIRECT_NAV_SECTIONS[section.id]; const hasSubmenu = SUBMENU_SECTIONS.includes(section.id); - const groupItems = GROUP_SECTIONS[section.id]; const isActive = currentSection === section.id; - if (groupItems) { - // Expandable group with sub-items - return ( - - {groupItems.map((item) => ( - - ))} - - ); - } else if (directUrl) { + if (directUrl) { // Direct navigation - use url prop return ( ); } else if (hasSubmenu) { - // Opens submenu - use /components URL when on component pages for matching, + // Opens submenu - use section URL when active for matching, // otherwise use non-matching URL to prevent false positives on homepage - const submenuUrl = isActive ? "/components" : "/__never_match__"; + const submenuUrl = isActive ? `/${section.id}` : "/__never_match__"; return (
    into each group's shadow root. + * Uses requestAnimationFrame because Svelte custom elements render + * shadow DOM content asynchronously via microtasks. + */ + +import { useEffect, type RefObject } from "react"; + +export function useGroupShadowDomFixes(ref: RefObject) { + useEffect(() => { + if (!ref.current) return; + + const applyFixes = () => { + if (!ref.current) return; + const groups = ref.current.querySelectorAll("goa-work-side-menu-group"); + groups.forEach((group) => { + const shadow = group.shadowRoot; + if (!shadow) return; + + // Inject icon-hiding styles (once) + if (!shadow.querySelector("[data-hide-group-icon]")) { + const style = document.createElement("style"); + style.setAttribute("data-hide-group-icon", ""); + style.textContent = ` + summary > goa-icon:first-of-type { display: none; } + summary { padding-left: calc(var(--goa-space-xs) + var(--goa-space-3xs) + 1.25rem + var(--goa-space-m)) !important; } + details > :not(summary) { margin-left: calc(var(--goa-space-3xs) + 1.25rem) !important; } + `; + shadow.appendChild(style); + } + }); + }; + + requestAnimationFrame(applyFixes); + }); +} diff --git a/docs/src/components/search/quick-links.ts b/docs/src/components/search/quick-links.ts index fde2eace59..5c318f8bd3 100644 --- a/docs/src/components/search/quick-links.ts +++ b/docs/src/components/search/quick-links.ts @@ -17,10 +17,10 @@ export interface QuickLink { * Edit this array to customize the links. */ export const quickLinks: QuickLink[] = [ - { label: 'Getting started', href: '/get-started', icon: 'document-text' }, - { label: 'Components', href: '/components', icon: 'shapes' }, - { label: 'Examples', href: '/examples', icon: 'browsers' }, - { label: 'Design tokens', href: '/tokens', icon: 'code-slash' }, + { label: "Getting started", href: "/get-started", icon: "document-text" }, + { label: "Examples", href: "/examples", icon: "browsers" }, + { label: "Components", href: "/components", icon: "shapes" }, + { label: "Design tokens", href: "/tokens", icon: "code-slash" }, ]; /** @@ -28,10 +28,10 @@ export const quickLinks: QuickLink[] = [ * These are common terms users might be looking for. */ export const popularSearches: string[] = [ - 'Button', - 'Form', - 'Table', - 'Input', - 'Modal', - 'Badge', + "Button", + "Form", + "Table", + "Input", + "Modal", + "Badge", ]; diff --git a/docs/src/layouts/DocumentationPageLayout.astro b/docs/src/layouts/DocumentationPageLayout.astro index 35374e4151..4c2e3ab528 100644 --- a/docs/src/layouts/DocumentationPageLayout.astro +++ b/docs/src/layouts/DocumentationPageLayout.astro @@ -38,7 +38,7 @@ const { description, section, showToc = true, - tocQuery = 'h2[id], h3[id]' + tocQuery = 'h2[id], h3[id], goa-text[id][as="h2"], goa-text[id][as="h3"]' } = Astro.props; const navCategories = await getNavCategories(); --- diff --git a/docs/src/pages/get-started/automated-accessibility.astro b/docs/src/pages/get-started/automated-accessibility.astro new file mode 100644 index 0000000000..061b16c880 --- /dev/null +++ b/docs/src/pages/get-started/automated-accessibility.astro @@ -0,0 +1,92 @@ +--- +/** + * Get Started - Automated Accessibility + * + * Guidance on combining automated and manual accessibility testing. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; +--- + + + Automated accessibility + + Automated accessibility testing tools help you identify potential accessibility issues. Use them as a starting point. + + +

    + However, these tools are not a complete solution. They can produce: +

    +
      +
    • False positives – flagging issues that are not actual problems
    • +
    • False negatives – missing real accessibility barriers
    • +
    +

    + To ensure your digital product is accessible, combine automated testing with manual testing and apply + human judgment. +

    + Why automated tools alone are not enough + + False positives +

    + Automated tools may flag elements as non-compliant even when they work correctly for users. For + example, a tool may report that an input is "missing an id" even though it is correctly associated with a + label using a valid method, such as wrapping the input inside a <label> element. +

    + + False negatives +

    + Automated tools cannot detect nuanced or context-specific issues. For example, all interactive + elements may be tabbable, but the order jumps around the page. Tools often don't judge whether the + tab order is logical for completing the task. +

    + + Real user experience +

    + Accessibility ensures real people can use a product effectively. Automated tools cannot fully simulate + how users interact with your product. +

    + Steps for effective accessibility testing + +
      +
    1. + Run automated tools to get an initial assessment. +
    2. +
    3. + Manually verify flagged issues and review the element's intent and context. +
    4. +
    5. + Do additional manual testing for issues automated tools cannot detect: +
        +
      • Test with a screen reader, such as VoiceOver (macOS) or NVDA (Windows)
      • +
      • Test keyboard navigation by checking focus visibility and order
      • +
      +
    6. +
    7. + Report findings +
        +
      • Record what you tested, what failed, and how to reproduce it
      • +
      • If the issue relates to a design system component, submit it using the design system bug report form
      • +
      +
    8. +
    + Why this process matters +

    + Automated tools provide helpful insight. Relying only on automation can result in: +

    +
      +
    • Time spent fixing issues that are not real barriers
    • +
    • Missed opportunities to address genuine accessibility issues
    • +
    • A false sense of compliance without meaningful usability improvements
    • +
    +

    + Combine automated and manual testing to identify real barriers. This approach improves accessibility + and overall product quality. +

    + +
    diff --git a/docs/src/pages/get-started/component-lifecycle.astro b/docs/src/pages/get-started/component-lifecycle.astro new file mode 100644 index 0000000000..2f43127d7d --- /dev/null +++ b/docs/src/pages/get-started/component-lifecycle.astro @@ -0,0 +1,66 @@ +--- +/** + * Get Started - Component Lifecycle + * + * Defines the stages each Design System component moves through. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; +--- + + + Component lifecycle + + The component lifecycle defines the stages each Design System component moves through, from + Experimental to Production to Legacy. + + +

    + To request a new component or propose an enhancement, follow the + design contribution process. +

    + Experimental +

    + Experimental components are new or significantly updated. They are available for testing and feedback + before public release. +

    + + Characteristics +
      +
    • Feedback is gathered from selected teams
    • +
    • May be unstable or include breaking changes
    • +
    • Limited documentation
    • +
    + Production +

    + Production components are stable and ready for broader adoption. +

    + + Characteristics +
      +
    • Fully documented, including design guidelines, properties, and examples
    • +
    • Meet accessibility and design system standards
    • +
    • Optimized for mobile use
    • +
    • Actively maintained with updates and bug fixes
    • +
    • Publicly available documentation
    • +
    + Legacy +

    + Legacy components are older components maintained primarily to support older implementations. If + possible, transition to production is recommended. +

    + + Characteristics +
      +
    • No active maintenance or updates
    • +
    • Critical issues may remain unresolved
    • +
    • Recommended alternative clearly identified
    • +
    • Marked as "Legacy" in official documentation
    • +
    + +
    diff --git a/docs/src/pages/get-started/contribute.astro b/docs/src/pages/get-started/contribute.astro new file mode 100644 index 0000000000..ae9c95c63e --- /dev/null +++ b/docs/src/pages/get-started/contribute.astro @@ -0,0 +1,187 @@ +--- +/** + * Get Started - Contribute + * + * How to contribute to the Design System (design and code). + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; +--- + + + Contribute + + The Design System is a shared resource used and improved by service teams. All roles are encouraged + to contribute. + + +

    + Start by using existing Design System components and patterns. If a component or pattern does not + meet your needs, follow the contribution process below. +

    + Design contribution process +

    + If a required component or example does not exist in production, + contact the Design System team. We will review the request together and determine next steps. +

    + + 1. Contact the team +

    + Book a design system drop-in hours session. +

    +

    Be prepared to:

    +
      +
    • Describe the component or pattern and its purpose
    • +
    • Explain your user needs and service goals
    • +
    • Share iterations explored with and without the Design System
    • +
    + + + There are open contribution files in Figma for every component and pattern in the design system, + including unpublished ideas and experiments. + + + 2. Contribution criteria +

    A proposed component or pattern must meet the following criteria.

    + + Proposal criteria +

    Useful

    +

    + Evidence shows it supports multiple teams or services. Provide screenshots or links to demonstrate usage. +

    + +

    Unique

    +

    + It does not duplicate an existing component or pattern. If replacing an existing component, provide + evidence that the new approach improves usability or accessibility. +

    + + Publication standards +

    To be published, the solution must be:

    + +

    Usable

    +

    + Improves clarity, usability, and accessibility for users. Is informed by research and addresses a + validated user need. +

    + +

    Universal

    +

    + Inclusive and accessible. Meets or exceeds accessibility standards. + WCAG 2.2 AA is the minimum requirement. +

    + + 3. Backlog and collaboration +

    + If approved, the item is added to the + Design System's backlog. +

    +

    + When development begins, the Design System team will collaborate with you to confirm detailed requirements. +

    + Code contribution process +

    + The Design System supports multiple development frameworks through Web Components. Contributing full + components can be complex. Smaller contributions are encouraged. +

    + + Recommended contribution types +
      +
    • Bug fixes
    • +
    • Documentation updates
    • +
    • Enhancements to existing components
    • +
    +

    + Start by contacting the team in the #design-system-support Slack channel. +

    +

    + Select an issue tagged ready-for-contribution from the + backlog. + Confirm which issue you will work on. +

    + + + Since the repository is public, use a personal GitHub account instead of your Enterprise Managed User (EMU) account. + + + Set up your contribution environment +
      +
    1. Clone the ui-components repository.
    2. +
    3. Open the repository in your IDE.
    4. +
    5. Create a branch named: contributions/story-number
    6. +
    7. + Run the following commands: +
      npm i
      +npm run build
      +
    8. +
    9. + The playgrounds for local testing are located in: +
      /apps/dev/angular
      +/apps/dev/react
      +
    10. +
    + + Run playground environments +

    Angular

    +
    npm run dev:watch
    +npm run serve:dev:angular
    + +

    React

    +
    npm run dev:watch
    +npm run serve:dev:react
    + + Repository structure + +

    React wrappers

    +

    /libs/react-components/src/lib

    +

    Each folder represents a single component with its associated unit tests and wrapper code.

    + +

    Angular wrappers

    +

    /libs/angular-components/src/lib/components

    +

    Each folder represents a single component with its associated unit tests and wrapper code.

    + +

    Web Components

    +

    /libs/web-components/src/components

    +
      +
    • Unit tests as *.spec.ts
    • +
    • Component code as *.ts
    • +
    + + Testing requirements +
      +
    • Write all unit tests in Svelte.
    • +
    • If updating React or Angular wrappers, write unit tests in those respective frameworks.
    • +
    • + Add browser testing using Jest for React wrappers and Svelte components when appropriate. + These can be found in: libs/react-components/specs +
    • +
    • Manually test components in both React and Angular.
    • +
    • + Create test files that others can use to manually test the PR. These can be created in: +
      /apps/prs/angular
      +/apps/prs/react
      +
    • +
    • Follow the conventions already used in those files to create your test files.
    • +
    +

    A Design System developer will also manually test the pull request.

    + + Submit your contribution +

    Use the following commit message format:

    + +

    Bug fix

    +
    fix(#storyNumber): short description (7 words max)
    + +

    Feature request

    +
    feat(#storyNumber): short description (7 words max)
    + +
      +
    • Create a pull request from your branch to the dev branch.
    • +
    • Notify the design system team of the PR.
    • +
    + +
    diff --git a/docs/src/pages/get-started/designers.astro b/docs/src/pages/get-started/designers.astro index 6a70b04261..0c47d99114 100644 --- a/docs/src/pages/get-started/designers.astro +++ b/docs/src/pages/get-started/designers.astro @@ -1,149 +1,93 @@ --- /** - * Get Started - Designers (Early Adopters) + * Get Started - Designers Overview * - * Designer onboarding for the early adopters program. - * Figma setup, BETA libraries, illustration requests, project updates. - * Content from Confluence (Brief 65). + * Overview of design system resources for designers. + * Content from Confluence (Brief 87). */ +import DropInCallout from '../../components/DropInCallout.astro'; import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; --- - Get started as a designer - - Onboarding for the early adopters program. - - - -
      -
    • Get access to the experimental Figma libraries.
    • -
    • Use experimental libraries to design or evaluate screens in your service context.
    • -
    • Provide feedback on what's working, what's not working and what's missing.
    • -
    -
    - - - -

    Available resources

    - - Figma assets - - - Production - Component library - Styles, tokens, icons, and guidelines - Patterns library - - - Beta - Component library BETA - Styles library BETA - Illustration library BETA - - - - - Component names are the same in both libraries, which makes - library swapping - possible. Be aware this can make it harder to tell which library a component came from once - it's on the canvas. - - -

    Illustrations

    - - The illustration library is a collection of custom GoA illustrations to be used at various - points throughout a service. We will continue to update it regularly, so start by checking what's already - available. - - - Can't find an existing illustration that fits your scenario? Need a new - composition combining existing illustration elements? -

    - Request an illustration -
    - - If you're unsure, ask in - #design-system-early-adopters - or bring it to drop-in hours — we'll help you decide the best path. - - - - -

    Designing with the BETA libraries in Figma

    - -

    Starting a new design

    - - We recommend starting from DS 2.0 templates. - - -

    Starting from an existing design

    - -
      -
    • Library swap — If your goal is to convert the whole file to DS 2.0, consider trying the library swap approach.
    • -
    • Manual rebuild — The slowest approach, but gives you the most control. Consider using starter templates as a base for rebuilding your pages.
    • -
    -
    - - - Library swap results can vary. We recommend creating a copy of the file before attempting - a library swap. - - - - -

    Updating an existing project

    - -

    Developer-first

    - - A developer creates a new branch, completes the upgrade steps, and runs the upgraded - application. This helps the team quickly see which areas need design updates to align with - DS 2.0. - - - - When reviewing the upgraded branch, watch for: - - -
      -
    • Spacing and layout rhythm
    • -
    • Typography scale/weight usage
    • -
    • Screens with dense content or constrained layouts (these will often have the highest risk of "breaking" during the update)
    • -
    -
    - -

    Design-first

    - -
      -
    1. Identify custom elements created to support your users' needs.
    2. -
    3. Create an inventory and prioritize items by importance and effort.
    4. -
    5. Redesign the highest priority elements using the visual design values from the Styles library BETA.
    6. -
    -
    - - This can allow design work to proceed ahead of development rather than being blocked by the - version update. - - - - In most cases we recommend the Developer-First approach. - - - - -

    File location and sharing

    - - Early adopter Figma files will be collected within the Early adopter project - in the Design system workspace to: - - -
      -
    • Facilitate learning from fellow early adopters and the design system team
    • -
    • Avoid confusion / chance encounters of experimental assets by practitioners who are not part of the early adopter program
    • -
    + Overview + + As a designer, you use the design system through Figma. +

    In Figma, you can access:

    + + + +

    + The design system library in Figma aligns with coded components used by developers. Start with + design system components for common parts of your service. This helps developers use the matching + coded components and reduces custom work. +

    +

    + Start with the design system. Validate your design through user testing. If usability issues arise, + or the problem cannot be solved within the system, consider creating a custom solution. +

    + Design with development in mind +

    + When selecting components, prioritize those with a "goa-" prefix, such as + goa-input. These components exist in both design and development. Using them reduces + the need for custom development. +

    +

    Choose shared components whenever possible to maintain consistency and efficiency.

    + + Design tokens +

    Design system components in Figma and code are built using design tokens.

    +

    + Use tokens to communicate design decisions clearly. Developers can reference the same tokens in code. +

    +

    Instead of sharing hex values or pixel adjustments, reference semantic tokens.

    +

    For example:

    +
      +
    • Colour: --goa-color-info-default
    • +
    • Spacing: --goa-spacing-m
    • +
    +

    Using tokens reduces back-and-forth and keeps design and development aligned.

    + + Components +

    All design system components are available in Figma and in code.

    +

    + These components are designed to meet + WCAG 2.2 accessibility standards. +

    +

    Avoid detaching components. Instead:

    +
      +
    • Use variants
    • +
    • Show or hide layers within the component
    • +
    +

    + Use #figma for Figma-related issues, including library updates, missing components, + broken instances, or component behaviour in Figma. +

    +

    + Use #design-system-support for design system guidance, component usage questions, + standards, and implementation support. +

    +

    Keep your components up to date. Figma will notify you when library updates are available.

    + + Figma file templates and helper components +

    Each digital service project folder includes a starter Figma template.

    +

    Use this template to:

    +
      +
    • Organize your design file
    • +
    • Support developer handoff
    • +
    • Help team members navigate files
    • +
    +

    + Helper components are also available. Use them to clearly communicate intent when sharing designs + with developers and other team members. +

    +
    diff --git a/docs/src/pages/get-started/designers/designing-with-ds.astro b/docs/src/pages/get-started/designers/designing-with-ds.astro new file mode 100644 index 0000000000..a875429941 --- /dev/null +++ b/docs/src/pages/get-started/designers/designing-with-ds.astro @@ -0,0 +1,81 @@ +--- +/** + * Get Started - Designers - Designing with Design System 2.0 + * + * How to start new designs and update existing projects to DS 2.0. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; +--- + + + Designing with Design System 2.0 + + What's new in DS 2.0 and how to start using it in your designs. + +

    + The Digital Design and Delivery (DDD) Design System has evolved to better support how service teams + design and build digital government services. Design System 2.0 includes an updated design + language, new tokens, refreshed components, and ready-to-use templates. +

    + Starting a new design +

    + Use DS 2.0 templates as your starting point. Templates package layout, navigation, spacing, and + example content that you can adapt to your service. Some templates are built for specific service types + (for example, public-facing forms and workspace applications), and others are more general-purpose + starting points you can use across many kinds of pages and flows. +

    + + Starting from an existing design + + Library swap +

    + Use a library swap if + your goal is to convert most of the file to DS 2.0 in one pass. +

    +
      +
    • Make a copy of your file before you start.
    • +
    • Expect mixed results. Some screens may need cleanup after the swap.
    • +
    + + Manual rebuild +

    Use a manual rebuild if you need more control.

    +
      +
    • Rebuild your highest value screens first.
    • +
    • Consider using DS 2.0 templates as a base to speed things up.
    • +
    + Update an existing project to the new design library + + Approach 1: Developer-first +

    Use this approach in most cases.

    +
      +
    1. A developer creates a new branch and completes the upgrade steps.
    2. +
    3. The team runs the upgraded application to see what changed.
    4. +
    5. Designers review the upgraded screens and identify what needs design updates.
    6. +
    +

    When reviewing the upgraded branch, watch for:

    +
      +
    • Spacing and layout rhythm
    • +
    • Typography scale and weight usage
    • +
    • Dense or constrained screens (these often have the highest risk during an update)
    • +
    + + Approach 2: Design-first +

    Use this approach when you want design work to move ahead of development work.

    +
      +
    1. Identify custom elements that support your users' needs.
    2. +
    3. Create an inventory and prioritize items by importance and effort.
    4. +
    5. Redesign the highest priority items using the visual design values in the Styles library.
    6. +
    + + + In most cases, start with the developer-first approach. It helps you quickly see what changed in your + real product, so you can focus design effort where it matters most. + + +
    diff --git a/docs/src/pages/get-started/designers/ux-guidelines.astro b/docs/src/pages/get-started/designers/ux-guidelines.astro new file mode 100644 index 0000000000..b44c9c82e5 --- /dev/null +++ b/docs/src/pages/get-started/designers/ux-guidelines.astro @@ -0,0 +1,55 @@ +--- +/** + * Get Started - Designers - User Experience Guidelines + * + * UX guidelines for Government of Alberta digital products. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; +--- + + + User experience guidelines + + Digital products built for the Government of Alberta should comply with these guidelines to ensure a + quality user experience for Albertans. + + +
      +
    • User-centered: Designed with a clear understanding of users, their goals, tasks, environments, and context of use, using user-centered design methods.
    • +
    • Usable: Interfaces will be easy to use, enabling users to find the information they need and complete tasks successfully.
    • +
    • Accessible: Digital products will be inclusive, ensuring usability for everyone, regardless of physical or cognitive ability.
    • +
    • Trustworthy: Experiences will feel familiar and recognizable as a Government of Alberta product, ensuring users' security and privacy.
    • +
    • Modern: Digital experiences will meet present-day user expectations and preferences for aesthetics and interaction.
    • +
    + +

    + For more details on the process of assessing compliance to each guideline, refer to our + User Experience Guidelines and Design System Checklist. +

    + Usability testing +

    + Usability testing is our preferred method to understand user needs as they relate to each guideline. +

    +

    Suitable usability testing includes:

    +
      +
    • Diverse user group: Real users from different demographic, behavioural backgrounds, and geographical regions within Alberta that will experience the problem or benefit of the product.
    • +
    • Inclusive testing: Users with various physical and/or cognitive abilities, literacy levels, and tech savviness.
    • +
    • Device variety: A diverse range of devices that reflect users' preferred choice when interacting with government services.
    • +
    • Tasks: Activities that cover tasks and service process from end-to-end.
    • +
    +

    + Frequent usability testing should be conducted to maintain product usability, effectiveness and + alignment to the user needs as they evolve over time. +

    +

    + For guidance on the process of usability testing, refer to our + Understanding Usability documentation. +

    + +
    diff --git a/docs/src/pages/get-started/developers.astro b/docs/src/pages/get-started/developers.astro index 507a5e47e7..7c7cc56977 100644 --- a/docs/src/pages/get-started/developers.astro +++ b/docs/src/pages/get-started/developers.astro @@ -1,256 +1,103 @@ --- /** - * Get Started - Developers (Early Adopters) + * Get Started - Developers Overview * - * Developer onboarding for the early adopters program. - * Package setup, template repo, branches, compatibility, custom components. - * Content from Confluence (Brief 65). + * Overview of design system resources for developers. + * Content from Confluence (Brief 87). */ +import DropInCallout from '../../components/DropInCallout.astro'; import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; --- - Get started as a developer + Overview - Onboarding for the early adopters program. - - - -

    Early adopters use the same design system packages you're already familiar with, but opt into - experimental DS v2 by:

    -
      -
    • Importing Goabx components - -
    • -
    • Using the experimental prefix (goabgoabx) - -
    • -
    • Installing and applying tokens v2 (designtokens2) -
        -
      • Import @abgov/design-tokens/dist/tokens.css in the global CSS of your app, below where you import @abgov/web-components/index.css
      • -
      -
    • -
    -
    - - - Angular 21 has not been formally tested by the design system team. A couple of teams have - used it successfully, but we can't guarantee full compatibility. - - - - View setup walkthrough video - - - - -

    Using design system v2

    - -

    A) Try it in your existing app

    - - See what changes in your context before committing to a full upgrade. - - -
      -
    1. Create a branch in your repo
    2. -
    3. Apply the initial DS v2 setup changes (imports, prefix, tokens v2)
    4. -
    5. Run the app and review the changes
    6. -
    7. Start with one page and share back with your team — don't try to fix the entire app on day one
    8. -
    -
    - - Why this approach works well: - - -
      -
    • Quick feedback on impact and risk
    • -
    • Easy to abandon (don't merge the branch)
    • -
    -
    - -

    B) Try the workspace template repo

    - - Understand the workspace pattern and DS v2 structure before applying it to your product. - - - -
      -
    1. - Open the template repo for your framework: - -
    2. -
    3. Click Use this template
    4. -
    5. Choose Create a new repository
    6. -
    7. Select an owner + repo name
    8. -
    9. Choose Public or Private
    10. -
    11. Click Create repository from template
    12. -
    13. Clone the repo locally
    14. -
    15. - Install and run, go into the directory you created and run the following commands (in order): -
        -
      1. npm i
      2. -
      3. npm run build
      4. -
      5. npm run start (Angular) or npm run dev (React)
      6. -
      -
    16. -
    17. Go to the listed port number of your localhost
    18. -
    -
    - - - -

    Choose how you receive updates

    - - Consider your tolerance for changes. - - -

    Next branch

    - - Best balance of stability and the latest changes. You get changes once they have been reviewed - and tested. - - -

    Dev branch

    - - Fastest access to new fixes and improvements. Expect more churn and occasional breaking - changes. - - -

    Production branch

    - - Least change over time. Not ideal for early adopters, since fixes and improvements arrive later. - - - - If you're unsure, start on "Next." Move to Dev if you need fixes sooner, or to - Production if you need more stability. - - - - -

    Compatibility and mixing rules

    - - DS v2 experimental isn't "fully backward compatible" in practice because tokens v2 can - visually impact DS 1.0 components. - - -
      -
    • You'll get the best results when tokens and components are upgraded together.
    • -
    • Mixing experimental and production components in one app may be possible, but is not recommended.
    • -
    -
    - - - -

    Plan your upgrade scope

    - -
      -
    • If possible, start with a small/simple application while you're learning the new system.
    • -
    • For most teams with a monorepo setup, you will need to update the import statements and add the design tokens to the specific project you're upgrading.
    • -
    -
    - - - Monorepo setups can vary, which may affect the exact update steps. If you have - any questions, book a drop-in hours session. - - - - - -

    Updating your custom components

    - - Most DDD services have custom UI alongside design system components. Set aside time to - review and adjust custom elements to align with DS v2 styles. - - - -
      -
    • Start by identifying where you have custom UI (a quick inventory is enough to begin).
    • -
    • - Replace hard-coded values in your custom UI with the corresponding Tokens v2 - values, such as: -
        -
      • Spacing (padding, margin, gaps)
      • -
      • Typography (font, size, weight, line height)
      • -
      • Color (text, background, borders)
      • -
      • Elevation / shadow (surfaces)
      • -
      -
    • -
    -
    - -

    When tokens v2 values don't cover what you need

    - -
      -
    • Identify gaps where Tokens v2 don't cover what you need.
    • -
    • Where needed, create custom styles to bridge those gaps, while keeping them consistent with the DS v2 look and feel.
    • -
    -
    - - - -

    Getting help and reporting issues

    - - Use the #design-system-early-adopters Slack channel first so the cohort benefits - and the design system team can clarify details before a GitHub issue is created. - - - Avoid DMs to individual design system team members, and avoid the standard - #design-system-support channel. Use the early adopters channel so all - participants can benefit. - - - Drop-in hours are the best option for deeper troubleshooting, debugging, or - talking through bugs and features. - - - Book drop-in hours - (Tuesdays + Fridays, 1–3 PM MT) - - - - -

    Rollback and branching strategy

    - -
      -
    • The simplest rollback is to reverse the setup steps.
    • -
    • If you're working in a branch, rollback can be as simple as not merging the branch.
    • -
    • Rollback becomes harder once you've made many manual updates to custom components.
    • -
    -
    - - - -

    End of program expectations

    - -
      -
    • - Moving to production at the end of the early adopter program (end of March 2026) includes - switching goabxgoab. -
    • -
    • - Once the early adopter program ends: -
        -
      • The experimental library will no longer be updated
      • -
      • Design system team effort will shift to the production libraries and packages
      • -
      • Web components continue to be updated
      • -
      -
    • -
    -
    + As a developer, you use the Design System through tokens, components, examples, and templates. + + +

    + The DDD Design System is built using Web Components. Web Components are framework-agnostic. + You can use them with Angular, React, or other front-end frameworks. +

    +

    The Design System includes:

    + +

    + Designers use equivalent resources in Figma. When they design with Design System components, you + can build with the matching coded components. This reduces custom development and rework. +

    +

    + All Design System components are designed and built to meet + WCAG 2.2 accessibility standards. +

    + Tokens +

    + Access the tokens as an + NPM package. +

    +

    + Import the SCSS or CSS file into your project. Replace hard-coded values with Design System token variables. +

    +

    + Designers reference the same tokens in their tools. This keeps design and development aligned during handoff. +

    + + Components +

    Components are reusable user interface elements built for use across services.

    +

    You can:

    +
      +
    • Use components individually
    • +
    • Combine them into patterns
    • +
    • Apply them in different contexts
    • +
    +

    Components are available:

    + +

    + Refer to the Design System technologies documentation + for implementation details. +

    + + Examples +

    + Examples are multiple components assembled in realistic service contexts. They help you understand + how to apply Design System guidance in a working interface. +

    +

    You can use examples to:

    +
      +
    • Understand how components work together
    • +
    • Use them as a starting point for building parts of your interface
    • +
    • Use proven approaches to meet user needs
    • +
    +

    + Examples help you build with more consistency and less rework. Use them to guide implementation, + then adjust them to meet the needs of your product. +

    + + Templates +

    + Templates are opinionated starting points for common service types. They package layout, navigation, + spacing, and example content so you can start with a proven structure instead of building from scratch. +

    +

    You can use templates to:

    +
      +
    • Start a new product with a proven structure
    • +
    • Learn how components work together in a real layout
    • +
    • Adapt a proven starting point to fit your service needs
    • +
    +

    + Templates help teams move faster, reduce rework, and stay aligned with Design System guidance. +

    +
    diff --git a/docs/src/pages/get-started/developers/browsers.astro b/docs/src/pages/get-started/developers/browsers.astro new file mode 100644 index 0000000000..4c495d9c3f --- /dev/null +++ b/docs/src/pages/get-started/developers/browsers.astro @@ -0,0 +1,86 @@ +--- +/** + * Get Started - Developers - Supported browsers + * + * Browser and OS support matrix for Design System components. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; +--- + + + Supported browsers + + Design System components are tested across supported browsers and devices. + + +

    + We support the latest version of each browser listed on this page. Support applies to the browser and + operating system combinations shown in the table below. On mobile, support is limited to the browser + and operating system combinations listed for Android and iOS. +

    + + Browser and operating system support + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    BrowserWindowsMac OSAndroidiOS
    Google ChromeYesYesYesYes
    Microsoft EdgeYesYes
    Mozilla FirefoxYesYesYes
    Apple SafariN/AYesN/AYes
    +
    + + Representative mobile OS used in testing +
      +
    • Android OS: 10+
    • +
    • iOS: 15+
    • +
    + Testing guidance +

    + Use supported browsers and operating system versions when developing and testing services. If you + encounter a browser-specific issue, follow the + Verify a bug process. +

    + +
    diff --git a/docs/src/pages/get-started/developers/bug.astro b/docs/src/pages/get-started/developers/bug.astro new file mode 100644 index 0000000000..ffabd0fc5e --- /dev/null +++ b/docs/src/pages/get-started/developers/bug.astro @@ -0,0 +1,65 @@ +--- +/** + * Get Started - Developers - Verify a bug + * + * Process for verifying and reporting Design System component issues. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; +--- + + + Verify a bug + + Follow this process when you encounter an issue with a Design System component. + + +

    + These steps help confirm whether the issue is caused by the Design System, your product setup, or + custom code. This process applies to Angular and React implementations. +

    + + 1. Check versions +

    Confirm you are using the latest version of:

    +
      +
    • Web Components
    • +
    • Angular or React
    • +
    +

    + If you are not using the latest version, upgrade and retest. If the issue remains, continue to the next step. +

    + + 2. Test with product templates +

    Use the official Angular or React product templates to isolate the issue.

    + +

    This helps determine whether the issue exists outside your project configuration.

    + + 3. Recreate the issue +

    Create a minimal test environment.

    +
      +
    • Use only the code required for the example to function
    • +
    • Include only the component experiencing the issue
    • +
    • Remove unrelated dependencies or custom logic
    • +
    +

    Confirm whether the issue can be replicated.

    + + 4. Share and report +

    If you can reproduce the issue:

    +
      +
    • Share the template application link in the #design-system-support Slack channel
    • +
    • Provide a link to your repository so the team can review and replicate the issue
    • +
    +

    + Following these steps will help to ensure efficient investigation and quicker resolution of + design system component issues. +

    + +
    diff --git a/docs/src/pages/get-started/developers/setup.astro b/docs/src/pages/get-started/developers/setup.astro new file mode 100644 index 0000000000..5fec479623 --- /dev/null +++ b/docs/src/pages/get-started/developers/setup.astro @@ -0,0 +1,26 @@ +--- +/** + * Get Started - Developers - Setup + * + * Developer setup guide. Content pending from Dustin. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; +--- + + + Setup + + How to set up the Design System in your project. + + + + Content for this page is being finalized. Check back soon. + + + diff --git a/docs/src/pages/get-started/developers/technologies.astro b/docs/src/pages/get-started/developers/technologies.astro new file mode 100644 index 0000000000..bff58c1150 --- /dev/null +++ b/docs/src/pages/get-started/developers/technologies.astro @@ -0,0 +1,110 @@ +--- +/** + * Get Started - Developers - Technologies + * + * Overview of Design System technologies: Web Components, Svelte, Angular, React. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; +--- + + + Technologies + + An overview of the technologies used in the Design System. + + + How the technologies fit together +

    + The Design System is built on Web Components. Most component functionality lives in the core Web + Components layer. Angular and React wrappers sit on top of that layer to make the components easier + to use in those frameworks. +

    +

    + We use Svelte to author the components that are compiled to custom elements. You can use the Design + System through the core Web Components or through Angular and React wrappers. +

    + Diagram showing the technology layers: Svelte compiles to Web Components, which are wrapped by Angular and React + Web Components +

    + Web Components + are a set of standard web technologies that allow you to create reusable custom elements. Each component + includes its own structure, styling, and behaviour. This keeps it independent from the rest of your code. +

    +

    + In the Design System, Web Components are the core library. They are framework-agnostic, so teams + can use them in different front-end environments. +

    + + Benefits of using Web Components +
      +
    • Reuse: Build once and use across pages, applications, and frameworks
    • +
    • Browser support: Work in modern browsers without additional libraries
    • +
    • Maintenance: Modular and self-contained structure simplifies updates
    • +
    • Encapsulation: Structure, style, and behaviour remain isolated from other page elements
    • +
    • Reliability: Code is not spread across HTML and JS files, thereby avoiding inconsistencies
    • +
    • Flexibility: Use inline, import, or compile components as needed
    • +
    • Composability: Combine components or integrate them with other components
    • +
    + + + Do not use Web Components directly unless there is a specific reason to do so. Using wrappers provides + type checking and developer helpers that are not available when working with the core Web Components alone. + + Svelte +

    + Svelte is the framework used to generate the + Design System Web Components. Svelte combines JavaScript (logic), HTML (structure), and CSS (style) + within a single file. It compiles these into efficient, reusable components. +

    + Why Svelte +

    We use Svelte to:

    +
      +
    • Build reusable Web Components
    • +
    • Keep component logic, structure, and styling together
    • +
    • Support integration with multiple front-end frameworks
    • +
    + Angular + + + Supported versions: 18, 19, 20, 21 + + +

    + Angular is a TypeScript-based framework for building + web applications. The Design System supports Angular through Angular wrappers around the core Web Components. +

    + + How Web Components and Angular work together +

    Angular wrappers are created around the Web Components. These wrappers:

    +
      +
    • Manage component properties and events
    • +
    • Support form binding (Reactive and Template-driven)
    • +
    • Allow integration within Angular applications
    • +
    +

    The Angular application interacts with the wrapper, which renders the underlying Web Component.

    + React + + + Supported versions: 17, 18, 19 + + +

    + React is an open-source JavaScript library used to + build user interfaces from reusable components. +

    + + How Web Components and React work together +

    React wrappers are created around the Web Components. These wrappers:

    +
      +
    • Manage properties and events
    • +
    • Enable integration within React applications
    • +
    +

    The React application interacts with the wrapper, which renders the underlying Web Component.

    + +
    diff --git a/docs/src/pages/get-started/developers/update.astro b/docs/src/pages/get-started/developers/update.astro new file mode 100644 index 0000000000..133a9ef2a2 --- /dev/null +++ b/docs/src/pages/get-started/developers/update.astro @@ -0,0 +1,26 @@ +--- +/** + * Get Started - Developers - Version update guide + * + * Version update guide. Content pending from Dustin. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; +--- + + + Version update guide + + How to update your project to a new Design System version. + + + + Content for this page is being finalized. Check back soon. + + + diff --git a/docs/src/pages/get-started/index.astro b/docs/src/pages/get-started/index.astro index cf595e0647..1b542be742 100644 --- a/docs/src/pages/get-started/index.astro +++ b/docs/src/pages/get-started/index.astro @@ -1,102 +1,107 @@ --- /** - * Get Started - Landing Page (Early Adopters Program) + * Get Started - Landing Page * - * Helps early adopter teams start using the experimental (pre-production) - * version of the design system. Content from Confluence (Brief 65). + * Overview of the design system and how to use it in your service. + * Content from Confluence (Brief 87). */ +import DropInCallout from '../../components/DropInCallout.astro'; import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; --- - Early adopters program: Get started - - This page helps early adopter teams start using the experimental (pre-production) version of - the design system. + Start with the design system + + Start with the design system to build on the research and experience of other service teams. + This helps you avoid repeating work that has already been done. - - DS 2.0 pre-production components and templates available for early adopters to use and test - before the production release. Properties and visual design may change as the library - receives feedback and matures. -

    - Early adopters should expect more change (and occasional rough edges) than production assets. -
    + + The design system gives you a strong foundation for common service needs. It allows your team + to focus on the specific challenges of your product. + Build on it. Do not start from scratch. + - + Design system by role -

    Choose your path

    + - - A: Upgrade an existing service - Best if your team wants to use DS 2.0 experimental components and templates to update an - existing product to the new look and feel. This gives you a head start on migration and - produces the most actionable feedback. - + Why start with the design system? - - B: Build a new service - Best if your team is starting a new product or major feature and wants to build with DS 2.0 - from the beginning. This is the cleanest path (no updating custom elements). - + Streamline collaboration +

    + Designers and developers work from shared components and guidance. This reduces rework and misalignment. +

    - - C: Test in a sample project - Best if your team wants to get a high level understanding of how DS 2.0 works and test the - setup process. - + Improve accessibility +

    Accessibility is built into both the design and coded components.

    - + Reduce testing effort +

    Components are tested across devices, browsers, and service contexts.

    -

    Before you start

    + Maintain consistency +

    + Components align with the broader system to create a cohesive user experience across government services. +

    - - Be on the latest version of the current next branch of the design system before - attempting the experimental update. - - Minimum versions - - - + Spend more time on high-value work +

    Using existing components saves time. You can focus on work that improves service quality, including:

    +
      +
    • Usability testing
    • +
    • User research
    • +
    • Content design
    • +
    • Accessibility reviews
    • +
    • Design quality checks
    • +
    • Low-fidelity prototyping and testing
    • +
    +

    This leads to better outcomes for users.

    + How to use the design system in your service +

    Follow these steps when designing and building your service.

    - + Use system components first +

    Start with existing components and patterns. These meet most user needs.

    -

    Getting help and reporting issues

    - - Use the #design-system-early-adopters Slack channel first so the whole - cohort can learn from questions and answers, and so the design system team can ask - clarifying questions before a GitHub issue is created. - - - When reporting an issue, include any relevant screenshots, links, version details, or - reproduction steps. - - - Avoid DMs to individual design system team members, use the Slack channel so all - participants can benefit from the questions and answers. + Identify gaps through user testing +

    Test your service with users. Identify needs that are not covered by current components.

    + + Before you design something new +

    + Check what's already available and what's in progress. The team can point you to existing components, + solutions other teams have built, and planned work that may meet your need. +

    + + Design and test new solutions when you need them +

    + If you still have a gap, design a new solution and test it with users. Move forward only when + testing shows clear user value. +

    + + Share what you learn +

    + Share your findings with the design system team. Your solution may become part of the design system. +

    + + + Do not create custom components without a clear user need. + Unnecessary customization: +
      +
    • Increases maintenance effort
    • +
    • Slows delivery
    • +
    • Reduces consistency
    • +
    + Always confirm the need through research and testing.
    - - - - - Designers: Get started - Developers: Get started - Workspace template repo - Deployed workspace demo - Early adopter Slack channel - - Book Drop-in hours - (Tuesday and Friday 1-3 PM MST) - - + + View the design system governance process + +
    diff --git a/docs/src/pages/get-started/out-of-support.astro b/docs/src/pages/get-started/out-of-support.astro new file mode 100644 index 0000000000..43b2cc9445 --- /dev/null +++ b/docs/src/pages/get-started/out-of-support.astro @@ -0,0 +1,53 @@ +--- +/** + * Get Started - Out of Support Versions + * + * Information about unsupported Design System versions. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; +--- + + + Out-of-support versions + + With the launch of the new Design System, support for Angular v4 and lower, and React v6 and lower + is significantly reduced. + + + What this means + + Fewer fixes or patches +

    Bug fixes and security updates are no longer prioritized for these versions.

    + + No new features +

    All new features and enhancements are released only in the current major version.

    + + Use at your own risk +

    Existing projects may continue to run. However:

    +
      +
    • Compatibility with new browsers or operating systems is not guaranteed
    • +
    • Compatibility with future framework updates is not guaranteed
    • +
    • Issues discovered in these versions will not be resolved
    • +
    + + + Projects using Angular v4 and lower, and React v6 and lower will continue to function. + New issues or defects identified in these versions may not be fixed. + + What to do next +

    + Upgrade to the latest supported version. Refer to the + version update guide. +

    +

    + If you need support planning your upgrade, + book time in drop-in hours. +

    + +
    diff --git a/docs/src/pages/get-started/qa-testing.astro b/docs/src/pages/get-started/qa-testing.astro new file mode 100644 index 0000000000..146cb12778 --- /dev/null +++ b/docs/src/pages/get-started/qa-testing.astro @@ -0,0 +1,77 @@ +--- +/** + * Get Started - QA Testing + * + * Testing process for Design System components. + * Content from Confluence (Brief 87). + */ +import DropInCallout from '../../components/DropInCallout.astro'; +import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; +--- + + + QA testing + + This page outlines the testing process for the Design System. The process ensures components + function correctly and integrate within products. + + + Testing objectives +

    QA testing ensures that:

    +
      +
    • Coded components match the design specifications
    • +
    • Components work in both React and Angular implementations
    • +
    • Components are responsive across screen sizes
    • +
    • Components meet accessibility requirements
    • +
    • Mobile behaviour is validated
    • +
    • Documentation on the Design System website is accurate
    • +
    + Test cases + + Component testing +
      +
    • Confirm the rendered component matches design and styling guidelines
    • +
    • Confirm configured properties display correctly
    • +
    • Confirm the expected event triggers when interacting with the component
    • +
    + + Responsiveness testing +
      +
    • Test components on mobile, tablet, and desktop screen sizes
    • +
    • Use browser developer tools to simulate devices
    • +
    + + Accessibility testing +
      +
    • Run Lighthouse audits to review accessibility scores
    • +
    • Confirm appropriate ARIA (Accessible Rich Internet Applications) roles and labels
    • +
    • Test keyboard navigation
    • +
    • Test with NVDA screen reader
    • +
    + + Cross-browser testing +
      +
    • Test on the latest versions of Chrome, Firefox, Safari, and Edge
    • +
    • Use Chrome device mode to simulate mobile environments
    • +
    • Confirm consistent appearance and behaviour across browsers
    • +
    + + Bug testing +

    When a bug is fixed:

    +
      +
    1. Reproduce the issue using the main branch.
    2. +
    3. Verify the fix in the pull request branch.
    4. +
    5. Retest the component across all relevant areas.
    6. +
    +

    Confirm the issue no longer occurs.

    + Reporting +
      +
    • Document updated test results, findings, and screenshots in the pull request comments
    • +
    • Log newly discovered issues in GitHub
    • +
    + +
    From 62376c6700ceaf515471d7d02a0282cc18e77755 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Fri, 13 Mar 2026 16:28:39 -0600 Subject: [PATCH 052/103] chore: add v2 docs publish github action --- .github/workflows/release-ci.yml | 55 +++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-ci.yml b/.github/workflows/release-ci.yml index 50815d5013..60e229a1bf 100644 --- a/.github/workflows/release-ci.yml +++ b/.github/workflows/release-ci.yml @@ -55,8 +55,61 @@ jobs: - name: Update Web components documentation run: cp libs/web-components/README.md dist/libs/web-components - - name: Release + - name: Release libs env: GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: npx nx affected --target release --parallel=false --base=${{ steps.last_successful_commit.outputs.base }} + + - name: Oc login + uses: redhat-actions/oc-login@v1 + with: + # URL to your OpenShift cluster. + # Refer to Step 2. + openshift_server_url: ${{ secrets.ARO_SERVER }} + openshift_token: ${{ secrets.ARO_TOKEN }} + + # Optional - this sets your Kubernetes context's current namespace after logging in. + namespace: ui-components-build + + - name: Start Build + # for now just run on the "doc" branch + if: github.ref == 'refs/heads/docs' + + run: oc start-build ui-components --from-dir dist/docs --follow --wait + + publishDocs: + runs-on: ubuntu-latest + + # for now just run on the "doc" branch + if: github.ref == 'refs/heads/docs' + + needs: build + + environment: + name: Prod + + steps: + - name: Oc login + uses: redhat-actions/oc-login@v1 + with: + # URL to your OpenShift cluster. + # Refer to Step 2. + openshift_server_url: ${{ secrets.ARO_SERVER }} + openshift_token: ${{ secrets.ARO_TOKEN }} + + # Disables SSL cert checking. Use this if you don't have the certificate authority data. + insecure_skip_tls_verify: true + # This method is more secure, if the certificate from Step 4 is available. + # certificate_authority_data: ${{ secrets.CA_DATA }} + + # Optional - this sets your Kubernetes context's current namespace after logging in. + namespace: ui-components-build + + - name: Tag Prod + run: oc tag design-system-docs:latest design-system-docs:prod + + - name: Publish docs + run: | + oc project ui-components-prod + oc rollout latest dc/design-system-docs From f32a262bddac8161f9bccfef07b5caa5cc342506 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Mon, 16 Mar 2026 13:54:20 -0600 Subject: [PATCH 053/103] chore: fix formatting in release-ci --- .github/workflows/release-ci.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/release-ci.yml b/.github/workflows/release-ci.yml index 60e229a1bf..4ccc6c63d8 100644 --- a/.github/workflows/release-ci.yml +++ b/.github/workflows/release-ci.yml @@ -61,22 +61,22 @@ jobs: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: npx nx affected --target release --parallel=false --base=${{ steps.last_successful_commit.outputs.base }} - - name: Oc login - uses: redhat-actions/oc-login@v1 - with: - # URL to your OpenShift cluster. - # Refer to Step 2. - openshift_server_url: ${{ secrets.ARO_SERVER }} - openshift_token: ${{ secrets.ARO_TOKEN }} - - # Optional - this sets your Kubernetes context's current namespace after logging in. - namespace: ui-components-build - - - name: Start Build - # for now just run on the "doc" branch - if: github.ref == 'refs/heads/docs' - - run: oc start-build ui-components --from-dir dist/docs --follow --wait + - name: Oc login + uses: redhat-actions/oc-login@v1 + with: + # URL to your OpenShift cluster. + # Refer to Step 2. + openshift_server_url: ${{ secrets.ARO_SERVER }} + openshift_token: ${{ secrets.ARO_TOKEN }} + + # Optional - this sets your Kubernetes context's current namespace after logging in. + namespace: ui-components-build + + - name: Start Build + # for now just run on the "doc" branch + if: github.ref == 'refs/heads/docs' + + run: oc start-build ui-components --from-dir dist/docs --follow --wait publishDocs: runs-on: ubuntu-latest From 93bd89a89750aedc7fc5501d2dabaf30e62e8cc9 Mon Sep 17 00:00:00 2001 From: Vanessa Tran Date: Fri, 13 Mar 2026 17:39:26 -0600 Subject: [PATCH 054/103] feat(#3402): dispatch _navigate on WorkSideMenuItem click for SPA navigation --- apps/prs/angular/src/app/app.component.html | 179 ++++++++-------- apps/prs/angular/src/app/app.component.ts | 9 +- apps/prs/angular/src/app/app.module.ts | 10 +- apps/prs/react/src/app/app.tsx | 194 +++++++++--------- docs/src/components/PropsTable.astro | 69 +++++-- docs/src/components/nav/ComponentsSubMenu.tsx | 1 + docs/src/components/nav/ParentMenu.tsx | 1 + .../src/content/components/work-side-menu.mdx | 3 + docs/src/content/config.ts | 6 + .../src/data/configurations/work-side-menu.ts | 27 ++- docs/src/pages/components/[slug].astro | 29 +++ .../work-side-menu-item.spec.ts | 2 - .../work-side-menu/work-side-menu.spec.ts | 19 ++ .../work-side-menu/work-side-menu.ts | 6 + .../specs/work-side-menu.browser.spec.tsx | 71 +++++-- .../work-side-menu/work-side-menu.spec.tsx | 15 +- .../work-side-menu/work-side-menu.tsx | 16 ++ .../work-side-menu/WorkSideMenuItem.spec.ts | 35 +++- .../work-side-menu/WorkSideMenuItem.svelte | 17 +- 19 files changed, 476 insertions(+), 233 deletions(-) diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index 6c2b2b82d6..402b7f5f2d 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -36,92 +36,99 @@
    -
    - - All Components - - 2152 - 2331 - 2393 - 2404 - 2408 - 2459 - 2473 - 2502 - 2529 - 2547 - 2655 - 2720 - 2721 - 2750 - 2768 - 2782 - 2789 - 2821 - 2837 - 2839 - 2849 - 2852 - 2873 - 2878 - 2892 - 2922 - 2943 - 2948 - 2977 - 2991 - 3072 - 3118 - 3156 - 3201 - 3215 - 3248 - 3273 - 3275 Can't unset month - 3281 - 3337 - Autocomplete styling - 3279 - 3384 Table v2 sample - 3450 Dropdown expanding inside Container - - - 1328 - 1383 - 1547 - 1813 - 1908 - 2054 - 2267 - 2328 - 2440 - 2469 - 2361 - 2492 - 2609 - 2611 - 2611-tabs-disabled - 2682 - 2722 - 2730 - 2829 - 3102 - 3229 MenuButton vs size and icon-only - 3137 - 3211 Angular v21 - 3241 - 3306 - 3370 - 3398 Work side menu group open prop - v2 header icons - 3344 Table Multi-Sort - 3396 Text heading-2xs size - 3407 Skip Focus on Tab - 3407 Tabs Orientation - 3399 V2 Checkbox Spacing - 3478 Popover API Rewrite - - -
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/apps/prs/angular/src/app/app.component.ts b/apps/prs/angular/src/app/app.component.ts index 4f9c653c7d..58686c2c51 100644 --- a/apps/prs/angular/src/app/app.component.ts +++ b/apps/prs/angular/src/app/app.component.ts @@ -1,4 +1,5 @@ import { Component } from "@angular/core"; +import { Router } from "@angular/router"; @Component({ selector: "abgov-root", @@ -6,4 +7,10 @@ import { Component } from "@angular/core"; styles: ``, standalone: false, }) -export class AppComponent {} +export class AppComponent { + constructor(private router: Router) {} + + handleNavigate(path: string): void { + this.router.navigateByUrl(path); + } +} diff --git a/apps/prs/angular/src/app/app.module.ts b/apps/prs/angular/src/app/app.module.ts index bfa44a8458..835c75b6d1 100644 --- a/apps/prs/angular/src/app/app.module.ts +++ b/apps/prs/angular/src/app/app.module.ts @@ -14,8 +14,9 @@ import { GoabAppFooter, GoabMicrositeHeader, GoabAppHeaderMenu, - GoabSideMenu, - GoabSideMenuGroup, + GoabxWorkSideMenu, + GoabxWorkSideMenuItem, + GoabxWorkSideMenuGroup, } from "@abgov/angular-components"; @NgModule({ @@ -25,8 +26,9 @@ import { GoabAppFooter, GoabMicrositeHeader, GoabAppHeaderMenu, - GoabSideMenu, - GoabSideMenuGroup, + GoabxWorkSideMenu, + GoabxWorkSideMenuItem, + GoabxWorkSideMenuGroup, BrowserModule, RouterModule.forRoot(appRoutes), AngularComponentsModule, diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index 9a06068dfd..7f9761aa07 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -1,16 +1,21 @@ -import { Link, Outlet } from "react-router-dom"; +import { Outlet, useNavigate } from "react-router-dom"; import { GoabAppFooter, GoabAppHeader, GoabAppHeaderMenu, GoabMicrositeHeader, GoabOneColumnLayout, - GoabSideMenu, - GoabSideMenuGroup, } from "@abgov/react-components"; +import { + GoabxWorkSideMenu, + GoabxWorkSideMenuItem, + GoabxWorkSideMenuGroup, +} from "@abgov/react-components/experimental"; import "@abgov/style"; export function App() { + const navigate = useNavigate(); + return (
    @@ -47,99 +52,96 @@ export function App() {
    -
    - - - 2152 Icon Custom Alignment - 2331 Block and Tab Dynamic Data - 2393 Popover Not Appearing - 2404 Input Angular Icon Button - 2408 Form Stepper Incomplete Rendering - 2459 File Upload Card TestId - 2473 DatePicker Ordinal Suffixes - 2502 Native Dropdown Height - 2529 Input Width Generation - 2547 Popover Hidden Near Notification - 2655 Dropdown/DatePicker in Modal - 2720 Tabs Change via Link - 2721 Text Tag Margin - 2750 Year Select Sorting - 2768 Enable/Disable Components - 2782 Disabled Inputs Hidden - 2789 Width Rem Measurements - 2821 Table Header Sorting Toggle - 2837 InputNumber Leading/Trailing Content - 2839 Button State After Click - 2849 Filterable Dropdown Keyboard - 2852 Filterable Dropdown Space Key - 2873 Drawer Scrolling Focus - 2878 DatePicker Input onChange - 2892 Input Width Calculations - 2922 Form Stepper Vertical - 2943 Drawer Text Components - 2948 Modal Heading Spacing - 2977 OnChangeDetails Event Missing - 3118 Text Component ID - 3201 Input Component Events - 3215 Drawer Initial Height - 3232 GoabText Tag Size - 3248 Dropdown Dynamic Children Sync - 3273 Nested Side Menu Groups - 3275 Can't unset month - 3322 App Header Menu Hover - 3281 GoabText p tag margin issues - 3337 Input autocomplete styling - 3279 Work Side Menu Key Nav - 3384 v2 Table Border - 3450 Dropdown expanding inside Container - - - 1383 Button Filled Icons - 1547 Tooltip Multiline - 1813 DatePicker Width Properties - 1908 Linear Progress - 2054 MaxWidth Support - 2267 Checkbox List - 2328 Container Height Property - 2361 Radio/Checkbox Clickable Area - 2440 MenuButton Icon - 2469 Push Drawer - 2492 TextArea onBlur - 2609 Data Table Base Component - 2611 Segmented Tab - 2611 Disabled Tab - 2682 DatePicker Issues - 2722 Input Text-Align - 2730 Temporary Notification Controller - 2829 Modal ARIA Live Region - 2877 Badge Types and Custom Icon - 3102 MenuButton Width - 3137 Work Side Menu Group - 3241 V2 Experimental Wrappers - v2 header icons - 3229 V2 Menu Button vs size and icon-only - 3344 Table Multi-Sort - 3306 Custom slug value for tabs - 3370 Clear calendar day selection - 3396 Text heading-2xs size - 3399 V2 Checkbox Spacing - 3407 Skip Focus on Tab - 3407 Tabs Orientation - 3398 Group open prop - 3478 Popover API Rewrite - - - A - - -
    + navigate(path)} + primaryContent={ + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } + />
    diff --git a/docs/src/components/PropsTable.astro b/docs/src/components/PropsTable.astro index 0352e83891..35cae7fd64 100644 --- a/docs/src/components/PropsTable.astro +++ b/docs/src/components/PropsTable.astro @@ -5,25 +5,27 @@ * Uses goa-data-grid for keyboard navigation and GoabContainer for styling. * Matches the current ui-components-docs pattern. */ -import type { PropDefinition, EventDefinition, SlotDefinition } from '../lib/content-queries'; +import type { PropDefinition, EventDefinition, SlotDefinition } from "../lib/content-queries"; interface Props { props?: PropDefinition[]; events?: EventDefinition[]; slots?: SlotDefinition[]; + headingPrefix?: string; } -const { props = [], events = [], slots = [] } = Astro.props; +const { props = [], events = [], slots = [], headingPrefix = "" } = Astro.props; +const prefix = headingPrefix ? `${headingPrefix} ` : ""; // Filter slots: hide "default" slots with no description (adds noise, no value) // Keep named slots even without descriptions (the name itself is useful info) const meaningfulSlots = slots.filter(slot => - slot.name !== 'default' || (slot.description && slot.description.trim() !== '') + slot.name !== "default" || (slot.description && slot.description.trim() !== "") ); // Helper to detect and parse deprecated props function parseDeprecated(description: string | undefined): { isDeprecated: boolean; cleanDescription: string } { - if (!description) return { isDeprecated: false, cleanDescription: '' }; + if (!description) return { isDeprecated: false, cleanDescription: "" }; const deprecatedMatch = description.match(/^@deprecated\s*(.*)/i); if (deprecatedMatch) { @@ -37,19 +39,19 @@ function parseDeprecated(description: string | undefined): { isDeprecated: boole } // Combine margin props (mt, mr, mb, ml) into a single row -const marginPropNames = ['mt', 'mr', 'mb', 'ml']; +const marginPropNames = ["mt", "mr", "mb", "ml"]; const marginProps = props.filter(p => marginPropNames.includes(p.name)); const hasAllMarginProps = marginPropNames.every(name => marginProps.some(p => p.name === name)); // Standard spacing values used by margin props -const spacingValues = ['none', '3xs', '2xs', 'xs', 's', 'm', 'l', 'xl', '2xl', '3xl', '4xl']; +const spacingValues = ["none", "3xs", "2xs", "xs", "s", "m", "l", "xl", "2xl", "3xl", "4xl"]; // Create combined margin prop if all four exist const combinedMarginProp = hasAllMarginProps ? { - name: 'mt, mr, mb, ml', - type: 'Spacing', + name: "mt, mr, mb, ml", + type: "Spacing", values: spacingValues, - description: 'Apply margin to the top, right, bottom, and/or left of the component.', + description: "Apply margin to the top, right, bottom, and/or left of the component.", required: false, default: null } : null; @@ -67,7 +69,7 @@ const finalProps = combinedMarginProp {finalProps.length > 0 && (
    -

    Props

    +

    {prefix}Props

    {finalProps.map((prop, index) => { @@ -84,7 +86,7 @@ const finalProps = combinedMarginProp {prop.type && (
    - {prop.values ? prop.values.join(' | ') : prop.type} + {prop.values ? prop.values.join(" | ") : prop.type}
    )} @@ -95,7 +97,7 @@ const finalProps = combinedMarginProp
    )} {/* Cell 4: Default value (if exists) */} - {prop.default !== null && prop.default !== '' && ( + {prop.default !== null && prop.default !== "" && (
    Defaults to {String(prop.default)}.
    @@ -110,11 +112,15 @@ const finalProps = combinedMarginProp {events.length > 0 && (
    -

    Events

    +

    {prefix}Events

    {events.map((event) => ( -
    +
    {event.name}
    @@ -135,16 +141,16 @@ const finalProps = combinedMarginProp {meaningfulSlots.length > 0 && (
    -

    Slots

    +

    {prefix}Slots

    {meaningfulSlots.map((slot) => (
    - {slot.name === 'default' ? '(default)' : slot.name} + {slot.name === "default" ? "(default)" : slot.name}
    - {slot.description || 'Named slot for content'} + {slot.description || "Named slot for content"}
    ))} @@ -239,3 +245,32 @@ const finalProps = combinedMarginProp border-radius: var(--goa-border-radius-s); } + + diff --git a/docs/src/components/nav/ComponentsSubMenu.tsx b/docs/src/components/nav/ComponentsSubMenu.tsx index 34452ef77a..a24b745ccf 100644 --- a/docs/src/components/nav/ComponentsSubMenu.tsx +++ b/docs/src/components/nav/ComponentsSubMenu.tsx @@ -196,6 +196,7 @@ export function ComponentsSubMenu({ url="/" open={isOpen} onToggle={onToggle} + onNavigate={(path: string) => { if (path && !path.startsWith("/__")) window.location.href = path; }} primaryContent={primaryContent} secondaryContent={} /> diff --git a/docs/src/components/nav/ParentMenu.tsx b/docs/src/components/nav/ParentMenu.tsx index e1cc67a788..a12b9cc0a3 100644 --- a/docs/src/components/nav/ParentMenu.tsx +++ b/docs/src/components/nav/ParentMenu.tsx @@ -121,6 +121,7 @@ export function ParentMenu({ url="/" open={isOpen} onToggle={onToggle} + onNavigate={(path: string) => { if (path && !path.startsWith("/__")) window.location.href = path; }} primaryContent={primaryContent} secondaryContent={} /> diff --git a/docs/src/content/components/work-side-menu.mdx b/docs/src/content/components/work-side-menu.mdx index 12e379dbaf..045983d4ed 100644 --- a/docs/src/content/components/work-side-menu.mdx +++ b/docs/src/content/components/work-side-menu.mdx @@ -8,4 +8,7 @@ relatedComponents: webComponentTag: goa-work-side-menu reactClassName: GoabWorkSideMenu angularSelector: goab-work-side-menu +childComponents: + - slug: work-side-menu-item + name: Work Side Menu Item --- diff --git a/docs/src/content/config.ts b/docs/src/content/config.ts index 865ded1b4e..5d83287a09 100644 --- a/docs/src/content/config.ts +++ b/docs/src/content/config.ts @@ -36,6 +36,12 @@ const components = defineCollection({ reactClassName: z.string().optional(), angularSelector: z.string().optional(), + // Child components (shown on same page under separate headings) + childComponents: z.array(z.object({ + slug: z.string(), + name: z.string(), + })).optional(), + // Visibility hidden: z.boolean().optional(), // Hide from navigation and public views }), diff --git a/docs/src/data/configurations/work-side-menu.ts b/docs/src/data/configurations/work-side-menu.ts index cfd4fadd7b..7aea5b20f4 100644 --- a/docs/src/data/configurations/work-side-menu.ts +++ b/docs/src/data/configurations/work-side-menu.ts @@ -20,6 +20,7 @@ export const workSideMenuConfigurations: ComponentConfigurations = { react: ` navigate(path)} primaryContent={ <> @@ -29,7 +30,7 @@ export const workSideMenuConfigurations: ComponentConfigurations = { } />`, - angular: ` + angular: `
    @@ -37,12 +38,21 @@ export const workSideMenuConfigurations: ComponentConfigurations = {
    `, - webComponents: ` + webComponents: ` + -`, + + +`, }, }, { @@ -55,6 +65,7 @@ export const workSideMenuConfigurations: ComponentConfigurations = { heading="My Application" url="/" open={true} + onNavigate={(path: string) => navigate(path)} primaryContent={ <> @@ -74,6 +85,7 @@ export const workSideMenuConfigurations: ComponentConfigurations = { url="/" [primaryContent]="primaryTemplate" [open]="true" + (onNavigate)="handleNavigate($event)" > @@ -87,6 +99,7 @@ export const workSideMenuConfigurations: ComponentConfigurations = {
    `, webComponents: ` +
    @@ -98,6 +111,14 @@ export const workSideMenuConfigurations: ComponentConfigurations = {
    + + `, }, }, diff --git a/docs/src/pages/components/[slug].astro b/docs/src/pages/components/[slug].astro index ec5782a27b..d7acecd8b1 100644 --- a/docs/src/pages/components/[slug].astro +++ b/docs/src/pages/components/[slug].astro @@ -32,6 +32,15 @@ const { Content } = await render(component); // 2. Get the extracted API const api = await getComponentApi(slug); +// 2b. Get child component APIs (if any) +const childComponents = component.data.childComponents ?? []; +const childApis = await Promise.all( + childComponents.map(async (child: { slug: string; name: string }) => ({ + name: child.name, + api: await getComponentApi(child.slug), + })) +); + // 3. Query related guidance const allGuidance = await getGuidanceForComponent(slug); const { usage: usageGuidance, accessibility: accessibilityGuidance } = @@ -101,6 +110,12 @@ const githubIssuesUrl = `https://github.com/GovAlta/ui-components/issues?q=is%3A API documentation is automatically extracted from the component source code. )} + {childApis.map(({ name, api: childApi }) => childApi && ( +
    +

    {name}

    + +
    + ))} @@ -181,6 +196,20 @@ const githubIssuesUrl = `https://github.com/GovAlta/ui-components/issues?q=is%3A max-width: 688px; } + /* Child component API sections */ + .child-component-api { + margin-top: var(--goa-space-2xl); + padding-top: var(--goa-space-xl); + border-top: 1px solid var(--goa-color-greyscale-200); + } + + .child-component-api h2 { + font-size: 1.5rem; + font-weight: 600; + margin-bottom: var(--goa-space-l); + color: var(--goa-color-text-default, #333); + } + /* No configurations fallback */ .no-configurations { margin-bottom: var(--goa-space-l); diff --git a/libs/angular-components/src/experimental/work-side-menu-item/work-side-menu-item.spec.ts b/libs/angular-components/src/experimental/work-side-menu-item/work-side-menu-item.spec.ts index 84292ec945..8be689d33f 100644 --- a/libs/angular-components/src/experimental/work-side-menu-item/work-side-menu-item.spec.ts +++ b/libs/angular-components/src/experimental/work-side-menu-item/work-side-menu-item.spec.ts @@ -33,7 +33,6 @@ class TestWorkSideMenuItemComponent { describe("GoabxWorkSideMenuItem", () => { let fixture: ComponentFixture; - let component: TestWorkSideMenuItemComponent; beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ @@ -41,7 +40,6 @@ describe("GoabxWorkSideMenuItem", () => { }).compileComponents(); fixture = TestBed.createComponent(TestWorkSideMenuItemComponent); - component = fixture.componentInstance; fixture.detectChanges(); tick(); // Wait for setTimeout in ngOnInit diff --git a/libs/angular-components/src/experimental/work-side-menu/work-side-menu.spec.ts b/libs/angular-components/src/experimental/work-side-menu/work-side-menu.spec.ts index 0812d38ece..6f82d883b4 100644 --- a/libs/angular-components/src/experimental/work-side-menu/work-side-menu.spec.ts +++ b/libs/angular-components/src/experimental/work-side-menu/work-side-menu.spec.ts @@ -17,6 +17,7 @@ import { By } from "@angular/platform-browser"; [primaryContent]="primaryTemplate" [secondaryContent]="secondaryTemplate" [accountContent]="accountTemplate" + (onNavigate)="handleNavigate($event)" > @@ -37,6 +38,11 @@ class TestWorkSideMenuComponent { userName = "Test User"; userSecondaryText = "test@example.com"; testId = "test-id"; + navigatedUrl = ""; + + handleNavigate(path: string) { + this.navigatedUrl = path; + } } describe("GoabxBWorkSideMenu", () => { let fixture: ComponentFixture; @@ -64,4 +70,17 @@ describe("GoabxBWorkSideMenu", () => { expect(menuElement.getAttribute("user-secondary-text")).toBe("test@example.com"); expect(menuElement.getAttribute("testId")).toBe("test-id"); }); + + it("should emit onNavigate when _navigate event is dispatched", fakeAsync(() => { + const menuElement = fixture.debugElement.query( + By.css("goa-work-side-menu"), + ).nativeElement; + + menuElement.dispatchEvent( + new CustomEvent("_navigate", { detail: { url: "/dashboard" }, bubbles: true }), + ); + fixture.detectChanges(); + + expect(component.navigatedUrl).toBe("/dashboard"); + })); }); diff --git a/libs/angular-components/src/experimental/work-side-menu/work-side-menu.ts b/libs/angular-components/src/experimental/work-side-menu/work-side-menu.ts index 1ae7ddf599..a47b99fb01 100644 --- a/libs/angular-components/src/experimental/work-side-menu/work-side-menu.ts +++ b/libs/angular-components/src/experimental/work-side-menu/work-side-menu.ts @@ -24,6 +24,7 @@ import { NgTemplateOutlet } from "@angular/common"; [attr.user-secondary-text]="userSecondaryText" [attr.testid]="testId" (_toggle)="_onToggle()" + (_navigate)="_onNavigate($event)" >
    @@ -50,6 +51,7 @@ export class GoabxWorkSideMenu implements OnInit { @Input() secondaryContent!: TemplateRef; @Input() accountContent!: TemplateRef; @Output() onToggle = new EventEmitter(); + @Output() onNavigate = new EventEmitter(); isReady = false; @@ -67,4 +69,8 @@ export class GoabxWorkSideMenu implements OnInit { _onToggle() { this.onToggle.emit(); } + + _onNavigate(e: Event) { + this.onNavigate.emit((e as CustomEvent).detail.url); + } } diff --git a/libs/react-components/specs/work-side-menu.browser.spec.tsx b/libs/react-components/specs/work-side-menu.browser.spec.tsx index c0ea22165d..0d7db5939e 100644 --- a/libs/react-components/specs/work-side-menu.browser.spec.tsx +++ b/libs/react-components/specs/work-side-menu.browser.spec.tsx @@ -109,34 +109,67 @@ describe("WorkSideMenu", () => { expect(menu.element().classList.contains("closed")).toBeFalsy(); }); - it("selecting a menu item navigates to a new location", async () => { - const handler = vi.fn(); - window.addEventListener("_update", handler); + it("should call onNavigate and prevent default navigation when menu item is clicked", async () => { + await page.viewport(1024, 768); + const onNavigate = vi.fn(); const Component = () => { + const [currentPage, setCurrentPage] = useState("/dashboard"); + return ( - - } - secondaryContent={} - accountContent={} - open={true} - /> +
    + { + setCurrentPage(path); + onNavigate(path); + }} + primaryContent={ + <> + + + + } + /> +
    {currentPage}
    +
    ); }; + const result = render(); - const item1 = result.getByTestId("menu-item-1"); - await item1.click(); await vi.waitFor(() => { - expect(window.location.hash).toBe("#item1"); + const searchItem = result.getByTestId("nav-search"); + expect(searchItem).toBeTruthy(); }); + + const searchItem = result.getByTestId("nav-search"); + const link = searchItem.element().querySelector("a"); + expect(link).toBeTruthy(); + + await searchItem.click(); + + await vi.waitFor(() => { + expect(onNavigate).toHaveBeenCalledWith("/search"); + const currentPageEl = result.getByTestId("current-page"); + expect(currentPageEl.element().textContent).toBe("/search"); + }); + + // Verify no full page navigation occurred + expect(window.location.pathname).not.toBe("/search"); }); }); diff --git a/libs/react-components/src/experimental/work-side-menu/work-side-menu.spec.tsx b/libs/react-components/src/experimental/work-side-menu/work-side-menu.spec.tsx index 1a2a603432..10082429eb 100644 --- a/libs/react-components/src/experimental/work-side-menu/work-side-menu.spec.tsx +++ b/libs/react-components/src/experimental/work-side-menu/work-side-menu.spec.tsx @@ -1,4 +1,5 @@ import { render } from "@testing-library/react"; +import { vi } from "vitest"; import WorkSideMenu from "./work-side-menu"; @@ -21,4 +22,16 @@ describe("WorkSideMenu", () => { expect(menu?.getAttribute("user-secondary-text")).toBe("test.user@example.com"); expect(menu?.getAttribute("testid")).toBe("bar"); }); -}); \ No newline at end of file + + it("should call onNavigate when _navigate event is dispatched", () => { + const onNavigate = vi.fn(); + const { baseElement } = render( + , + ); + const menu = baseElement.querySelector("goa-work-side-menu"); + menu?.dispatchEvent( + new CustomEvent("_navigate", { detail: { url: "/dashboard" }, bubbles: true }), + ); + expect(onNavigate).toHaveBeenCalledWith("/dashboard"); + }); +}); diff --git a/libs/react-components/src/experimental/work-side-menu/work-side-menu.tsx b/libs/react-components/src/experimental/work-side-menu/work-side-menu.tsx index f3b249c115..33959e1979 100644 --- a/libs/react-components/src/experimental/work-side-menu/work-side-menu.tsx +++ b/libs/react-components/src/experimental/work-side-menu/work-side-menu.tsx @@ -33,6 +33,7 @@ export interface GoabWorkSideMenuProps { accountContent?: ReactNode; open?: boolean; onToggle?: () => void; + onNavigate?: (path: string) => void; } export function GoabxWorkSideMenu({ @@ -46,6 +47,7 @@ export function GoabxWorkSideMenu({ accountContent, open, onToggle, + onNavigate, }: GoabWorkSideMenuProps): JSX.Element { const el = useRef(null); @@ -58,6 +60,20 @@ export function GoabxWorkSideMenu({ el.current?.removeEventListener("_toggle", onToggle); }; }, [el, onToggle]); + + useEffect(() => { + if (!el?.current || !onNavigate) { + return; + } + const handler = (e: Event) => { + onNavigate((e as CustomEvent).detail.url); + }; + el.current?.addEventListener("_navigate", handler); + return () => { + el.current?.removeEventListener("_navigate", handler); + }; + }, [el, onNavigate]); + return ( { @@ -19,4 +19,35 @@ describe("WorkSideMenuItem", () => { expect(link).toBeTruthy(); expect(badge).toBeTruthy(); }); + + describe("click events", () => { + it("should dispatch _navigate event with url on click", async () => { + const onNavigate = vi.fn(); + const { container } = render(GoAWorkSideMenuItem, { + label: "Dashboard", + url: "/dashboard", + }); + const root = container.querySelector(".root") as HTMLElement; + const link = container.querySelector(".menu-item") as HTMLElement; + + root.addEventListener("_navigate", onNavigate); + await fireEvent.click(link); + + expect(onNavigate).toHaveBeenCalledTimes(1); + expect(onNavigate.mock.calls[0][0].detail).toEqual({ url: "/dashboard" }); + }); + + it("should preventDefault on click", async () => { + const { container } = render(GoAWorkSideMenuItem, { + label: "Nav", + url: "/page", + }); + const link = container.querySelector(".menu-item") as HTMLAnchorElement; + + const clickEvent = new MouseEvent("click", { bubbles: true, cancelable: true }); + const prevented = !link.dispatchEvent(clickEvent); + + expect(prevented).toBe(true); + }); + }); }); diff --git a/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.svelte b/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.svelte index 3712799480..d3feb1ffc7 100644 --- a/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.svelte +++ b/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.svelte @@ -61,8 +61,21 @@ // Functions // ********* - function handleClick() { - dispatch(_rootEl, "_update", {}, { bubbles: true }); + // Intercepts anchor clicks to enable SPA navigation via the _navigate event. + // Modifier keys (Ctrl/Cmd/Shift/Alt) are allowed through so the browser can + // open links in new tabs as expected. + function handleClick(e: Event) { + const mouseEvent = e as MouseEvent; + if ( + mouseEvent.ctrlKey || + mouseEvent.metaKey || + mouseEvent.shiftKey || + mouseEvent.altKey + ) { + return; + } + e.preventDefault(); + dispatch(_rootEl, "_navigate", { url }, { bubbles: true }); } function handleUpdateItem(e: CustomEvent) { From 11a63285594119e8f0dd2ddb5b91447ad253f155 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Tue, 10 Mar 2026 11:44:51 -0600 Subject: [PATCH 055/103] feat(#3549): add App Header V2 documentation and experimental wrappers --- docs/src/components/ExampleDisplay.astro | 1 + docs/src/components/ExamplePreview.tsx | 87 ++++++--- docs/src/content/components/app-header.mdx | 4 +- docs/src/content/config.ts | 93 +++++----- .../examples/basic-page-layout/angular.html | 5 +- .../examples/basic-page-layout/index.mdx | 4 +- .../examples/basic-page-layout/react.tsx | 9 +- .../basic-page-layout/web-components.html | 3 +- .../header-with-menu-click-event/angular.html | 21 --- .../header-with-menu-click-event/angular.ts | 18 -- .../header-with-menu-click-event/index.mdx | 36 ---- .../header-with-menu-click-event/react.tsx | 44 ----- .../web-components.html | 31 ---- .../header-with-navigation/angular.html | 17 +- .../examples/header-with-navigation/index.mdx | 25 ++- .../examples/header-with-navigation/react.tsx | 42 +++-- .../web-components.html | 19 +- docs/src/data/configurations/app-header.ts | 169 +++++++++++------- .../app-header-menu/app-header-menu.spec.ts | 113 ++++++++++++ .../app-header-menu/app-header-menu.ts | 49 +++++ .../app-header/app-header.spec.ts | 163 +++++++++++++++++ .../src/experimental/app-header/app-header.ts | 60 +++++++ .../src/experimental/index.ts | 2 + .../app-header-menu/app-header-menu.spec.tsx | 72 ++++++++ .../app-header-menu/app-header-menu.tsx | 38 ++++ .../app-header/app-header.spec.tsx | 92 ++++++++++ .../experimental/app-header/app-header.tsx | 77 ++++++++ .../src/experimental/index.ts | 3 +- .../src/lib/app-header/app-header.tsx | 11 -- .../app-header-menu/AppHeaderMenu.svelte | 65 +++++-- 30 files changed, 1007 insertions(+), 366 deletions(-) delete mode 100644 docs/src/content/examples/header-with-menu-click-event/angular.html delete mode 100644 docs/src/content/examples/header-with-menu-click-event/angular.ts delete mode 100644 docs/src/content/examples/header-with-menu-click-event/index.mdx delete mode 100644 docs/src/content/examples/header-with-menu-click-event/react.tsx delete mode 100644 docs/src/content/examples/header-with-menu-click-event/web-components.html create mode 100644 libs/angular-components/src/experimental/app-header-menu/app-header-menu.spec.ts create mode 100644 libs/angular-components/src/experimental/app-header-menu/app-header-menu.ts create mode 100644 libs/angular-components/src/experimental/app-header/app-header.spec.ts create mode 100644 libs/angular-components/src/experimental/app-header/app-header.ts create mode 100644 libs/react-components/src/experimental/app-header-menu/app-header-menu.spec.tsx create mode 100644 libs/react-components/src/experimental/app-header-menu/app-header-menu.tsx create mode 100644 libs/react-components/src/experimental/app-header/app-header.spec.tsx create mode 100644 libs/react-components/src/experimental/app-header/app-header.tsx diff --git a/docs/src/components/ExampleDisplay.astro b/docs/src/components/ExampleDisplay.astro index 07af06fe54..1151956cae 100644 --- a/docs/src/components/ExampleDisplay.astro +++ b/docs/src/components/ExampleDisplay.astro @@ -30,6 +30,7 @@ const code = await getExampleCode(example.slug); code={code} figmaUrl={data.figmaUrl} fullWidth={data.fullWidth} + previewStyle={data.previewStyle} titleSize={titleSize} /> diff --git a/docs/src/components/ExamplePreview.tsx b/docs/src/components/ExamplePreview.tsx index 0fa23ae6bc..a50a2e4f62 100644 --- a/docs/src/components/ExamplePreview.tsx +++ b/docs/src/components/ExamplePreview.tsx @@ -9,18 +9,18 @@ * Reusable anywhere - component pages, example pages, embedded in docs. */ -import { useState, useEffect, useRef } from 'react'; -import { CodeSnippet } from './CodeSnippet'; -import type { ExampleCode } from '../lib/example-code'; -import DOMPurify from 'dompurify'; +import { useState, useEffect, useRef } from "react"; +import { CodeSnippet } from "./CodeSnippet"; +import type { ExampleCode } from "../lib/example-code"; +import DOMPurify from "dompurify"; // Allow GoA web component custom elements through DOMPurify. // By default, DOMPurify strips all custom elements (tags containing hyphens). // Our previews render web components, so we must whitelist them. const DOMPURIFY_CONFIG = { CUSTOM_ELEMENT_HANDLING: { - tagNameCheck: /^goa-/, // allow all elements - attributeNameCheck: () => true, // allow their attributes (type, name, label, etc.) + tagNameCheck: /^goa-/, // allow all elements + attributeNameCheck: () => true, // allow their attributes (type, name, label, etc.) }, }; @@ -37,8 +37,10 @@ interface ExamplePreviewProps { codeMaxHeight?: number; /** Remove side padding for full-width components like callouts */ fullWidth?: boolean; + /** Inline CSS override for preview container (e.g. "padding: 0; max-height: 600px") */ + previewStyle?: string; /** Title size - 'large' for standalone example pages, 'small' for embedded examples */ - titleSize?: 'large' | 'small'; + titleSize?: "large" | "small"; } export function ExamplePreview({ @@ -48,7 +50,8 @@ export function ExamplePreview({ figmaUrl, codeMaxHeight = 200, fullWidth = false, - titleSize = 'small', + previewStyle, + titleSize = "small", }: ExamplePreviewProps) { const [copied, setCopied] = useState(false); const previewRef = useRef(null); @@ -77,23 +80,26 @@ export function ExamplePreview({ const __preview__ = previewRef.current; const scopedScript = scriptContent // Replace document.getElementById with container-scoped querySelector - .replace(/document\.getElementById\s*\(\s*["']([^"']+)["']\s*\)/g, - (_, id) => `__preview__.querySelector("#${id}")` + .replace( + /document\.getElementById\s*\(\s*["']([^"']+)["']\s*\)/g, + (_, id) => `__preview__.querySelector("#${id}")`, ) // Replace document.querySelector with scoped version - .replace(/document\.querySelector\s*\(\s*["']([^"']+)["']\s*\)/g, - (_, selector) => `__preview__.querySelector("${selector}")` + .replace( + /document\.querySelector\s*\(\s*["']([^"']+)["']\s*\)/g, + (_, selector) => `__preview__.querySelector("${selector}")`, ) // Replace document.querySelectorAll with scoped version - .replace(/document\.querySelectorAll\s*\(\s*["']([^"']+)["']\s*\)/g, - (_, selector) => `__preview__.querySelectorAll("${selector}")` + .replace( + /document\.querySelectorAll\s*\(\s*["']([^"']+)["']\s*\)/g, + (_, selector) => `__preview__.querySelectorAll("${selector}")`, ); // Execute the script with preview container in scope - const fn = new Function('__preview__', scopedScript); + const fn = new Function("__preview__", scopedScript); fn(__preview__); } catch (err) { - console.error('Error executing example script:', err); + console.error("Error executing example script:", err); } } } @@ -107,7 +113,7 @@ export function ExamplePreview({ setCopied(true); setTimeout(() => setCopied(false), 2000); } catch (err) { - console.error('Failed to copy link:', err); + console.error("Failed to copy link:", err); } }; @@ -115,14 +121,18 @@ export function ExamplePreview({
    {/* Header */}
    - {titleSize === 'large' ? ( -

    {title}

    + {titleSize === "large" ? ( +

    + {title} +

    ) : ( -

    {title}

    +

    + {title} +

    )}
    -
    +
    {:else} - {#if _open} -
    +
    {/if} @@ -482,6 +508,7 @@ border: none !important; border-bottom: var(--goa-app-header-border-nav-item-default) !important; border-radius: 0; + box-shadow: none !important; /* Layout */ height: var(--goa-app-header-height-nav-item); @@ -502,7 +529,9 @@ button.v2-nav:hover { background: var(--goa-app-header-nav-bar-bg) !important; - border-bottom-color: var(--goa-app-header-nav-hover-indicator-color) !important; + border-bottom-color: var( + --goa-app-header-nav-hover-indicator-color + ) !important; } button.v2-nav:active { @@ -511,12 +540,16 @@ button.v2-nav.open { background: var(--goa-app-header-nav-bar-bg) !important; - border-bottom-color: var(--goa-app-header-nav-hover-indicator-color) !important; + border-bottom-color: var( + --goa-app-header-nav-hover-indicator-color + ) !important; } button.v2-nav.current { font-weight: var(--goa-font-weight-semi-bold) !important; - border-bottom-color: var(--goa-app-header-nav-active-indicator-color) !important; + border-bottom-color: var( + --goa-app-header-nav-active-indicator-color + ) !important; } button.v2-nav:focus-visible { @@ -589,13 +622,17 @@ } .desktop.v2-nav-menu :global(::slotted(a.current)) { - background: var(--goa-app-header-color-bg-nav-item-in-menu-current) !important; + background: var( + --goa-app-header-color-bg-nav-item-in-menu-current + ) !important; color: var(--goa-color-text-light) !important; font-weight: var(--goa-font-weight-medium) !important; } .desktop.v2-nav-menu :global(::slotted(a.current:hover)) { - background: var(--goa-app-header-color-bg-nav-item-in-menu-current) !important; + background: var( + --goa-app-header-color-bg-nav-item-in-menu-current + ) !important; color: var(--goa-color-text-light) !important; } From f41849368b34d741a85b2af4641aed1bb62d7cd5 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Mon, 16 Mar 2026 16:29:19 -0600 Subject: [PATCH 056/103] chore: revert the docs deploy Will be later added once fully working --- .github/workflows/release-ci.yml | 53 -------------------------------- 1 file changed, 53 deletions(-) diff --git a/.github/workflows/release-ci.yml b/.github/workflows/release-ci.yml index 4ccc6c63d8..17a7eff480 100644 --- a/.github/workflows/release-ci.yml +++ b/.github/workflows/release-ci.yml @@ -60,56 +60,3 @@ jobs: GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: npx nx affected --target release --parallel=false --base=${{ steps.last_successful_commit.outputs.base }} - - - name: Oc login - uses: redhat-actions/oc-login@v1 - with: - # URL to your OpenShift cluster. - # Refer to Step 2. - openshift_server_url: ${{ secrets.ARO_SERVER }} - openshift_token: ${{ secrets.ARO_TOKEN }} - - # Optional - this sets your Kubernetes context's current namespace after logging in. - namespace: ui-components-build - - - name: Start Build - # for now just run on the "doc" branch - if: github.ref == 'refs/heads/docs' - - run: oc start-build ui-components --from-dir dist/docs --follow --wait - - publishDocs: - runs-on: ubuntu-latest - - # for now just run on the "doc" branch - if: github.ref == 'refs/heads/docs' - - needs: build - - environment: - name: Prod - - steps: - - name: Oc login - uses: redhat-actions/oc-login@v1 - with: - # URL to your OpenShift cluster. - # Refer to Step 2. - openshift_server_url: ${{ secrets.ARO_SERVER }} - openshift_token: ${{ secrets.ARO_TOKEN }} - - # Disables SSL cert checking. Use this if you don't have the certificate authority data. - insecure_skip_tls_verify: true - # This method is more secure, if the certificate from Step 4 is available. - # certificate_authority_data: ${{ secrets.CA_DATA }} - - # Optional - this sets your Kubernetes context's current namespace after logging in. - namespace: ui-components-build - - - name: Tag Prod - run: oc tag design-system-docs:latest design-system-docs:prod - - - name: Publish docs - run: | - oc project ui-components-prod - oc rollout latest dc/design-system-docs From 45421238ae0866072c92e1805cc84b4cc7d33da4 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Tue, 17 Mar 2026 10:38:57 -0600 Subject: [PATCH 057/103] fix(#3581): use dynamic content collection for nav instead of hardcoded list ComponentsSubMenu now uses the categories prop passed from Astro layouts via getNavCategories() instead of a hardcoded COMPONENT_CATEGORIES array. New components with correct MDX frontmatter automatically appear in the side menu without manual updates. Also fixes the /search page which was missing the categories prop. Closes #3581 --- docs/src/components/nav/ComponentsSubMenu.tsx | 92 ++----------------- docs/src/components/nav/index.ts | 1 + docs/src/pages/search.astro | 3 + 3 files changed, 11 insertions(+), 85 deletions(-) diff --git a/docs/src/components/nav/ComponentsSubMenu.tsx b/docs/src/components/nav/ComponentsSubMenu.tsx index a24b745ccf..822247c253 100644 --- a/docs/src/components/nav/ComponentsSubMenu.tsx +++ b/docs/src/components/nav/ComponentsSubMenu.tsx @@ -13,89 +13,7 @@ import { } from "@abgov/react-components/experimental"; import { MenuSecondaryContent } from "./MenuSecondaryContent"; import { useGroupShadowDomFixes } from "./useGroupShadowDomFixes"; - -// Component categories - synced with content collection (visible components only) -const COMPONENT_CATEGORIES = [ - { - name: "Content layout", - slug: "content-layout", - components: [ - { name: "Accordion", slug: "accordion" }, - { name: "Container", slug: "container" }, - { name: "Data Grid", slug: "data-grid" }, - { name: "Details", slug: "details" }, - { name: "Drawer", slug: "drawer" }, - { name: "Hero banner", slug: "hero-banner" }, - { name: "Page Block", slug: "page-block" }, - { name: "Popover", slug: "popover" }, - { name: "Table", slug: "table" }, - { name: "Text", slug: "text" }, - ], - }, - { - name: "Feedback and alerts", - slug: "feedback-and-alerts", - components: [ - { name: "Badge", slug: "badge" }, - { name: "Callout", slug: "callout" }, - { name: "Circular progress indicator", slug: "circular-progress" }, - { name: "Filter chip", slug: "filter-chip" }, - { name: "Linear progress indicator", slug: "linear-progress" }, - { name: "Modal", slug: "modal" }, - { name: "Notification banner", slug: "notification" }, - { name: "Skeleton loader", slug: "skeleton" }, - { name: "Temporary notification", slug: "temporary-notification" }, - { name: "Tooltip", slug: "tooltip" }, - ], - }, - { - name: "Inputs and actions", - slug: "inputs-and-actions", - components: [ - { name: "Button", slug: "button" }, - { name: "Button group", slug: "button-group" }, - { name: "Checkbox", slug: "checkbox" }, - { name: "Checkbox list", slug: "checkbox-list" }, - { name: "Date picker", slug: "date-picker" }, - { name: "Dropdown", slug: "dropdown" }, - { name: "File uploader", slug: "file-upload-input" }, - { name: "Form", slug: "form" }, - { name: "Icon button", slug: "icon-button" }, - { name: "Input", slug: "input" }, - { name: "Link Button", slug: "link-button" }, - { name: "Menu button", slug: "menu-button" }, - { name: "Radio", slug: "radio-group" }, - { name: "Text area", slug: "text-area" }, - ], - }, - { - name: "Structure and navigation", - slug: "structure-and-navigation", - components: [ - { name: "Footer", slug: "footer" }, - { name: "Form stepper", slug: "form-stepper" }, - { name: "Header", slug: "app-header" }, - { name: "Microsite header", slug: "microsite-header" }, - { name: "Pagination", slug: "pagination" }, - { name: "Side menu", slug: "side-menu" }, - { name: "Tabs", slug: "tabs" }, - { name: "Work Side Menu", slug: "work-side-menu" }, - ], - }, - { - name: "Utilities", - slug: "utilities", - components: [ - { name: "Block", slug: "block" }, - { name: "Divider", slug: "divider" }, - { name: "Form item", slug: "form-item" }, - { name: "Grid", slug: "grid" }, - { name: "Icons", slug: "icon" }, - { name: "Link", slug: "link" }, - { name: "Spacer", slug: "spacer" }, - ], - }, -]; +import type { NavCategory } from "../../lib/nav-categories"; interface ComponentsSubMenuProps { isOpen: boolean; @@ -103,6 +21,7 @@ interface ComponentsSubMenuProps { onBack: () => void; onExpandMenu?: () => void; currentSlug?: string; + categories?: NavCategory[]; } export function ComponentsSubMenu({ @@ -111,6 +30,7 @@ export function ComponentsSubMenu({ onBack, onExpandMenu, currentSlug, + categories = [], }: ComponentsSubMenuProps) { const groupsRef = useRef(null); useGroupShadowDomFixes(groupsRef); @@ -153,7 +73,7 @@ export function ComponentsSubMenu({ {/* Component categories - using GoabxWorkSideMenuGroup for expandable sections */}
    - {COMPONENT_CATEGORIES.map((category) => { + {categories.map((category) => { // Auto-expand category if it contains the current component const containsCurrentComponent = category.components.some( (c) => c.slug === currentSlug, @@ -196,7 +116,9 @@ export function ComponentsSubMenu({ url="/" open={isOpen} onToggle={onToggle} - onNavigate={(path: string) => { if (path && !path.startsWith("/__")) window.location.href = path; }} + onNavigate={(path: string) => { + if (path && !path.startsWith("/__")) window.location.href = path; + }} primaryContent={primaryContent} secondaryContent={} /> diff --git a/docs/src/components/nav/index.ts b/docs/src/components/nav/index.ts index 71395e4ee3..4050751401 100644 --- a/docs/src/components/nav/index.ts +++ b/docs/src/components/nav/index.ts @@ -12,3 +12,4 @@ export { ParentMenu, type MenuSection } from "./ParentMenu"; export { ComponentsSubMenu } from "./ComponentsSubMenu"; export { GetStartedSubMenu } from "./GetStartedSubMenu"; +export type { NavCategory } from "../../lib/nav-categories"; diff --git a/docs/src/pages/search.astro b/docs/src/pages/search.astro index 5bfc9a3d23..8e52c4b6c2 100644 --- a/docs/src/pages/search.astro +++ b/docs/src/pages/search.astro @@ -11,10 +11,12 @@ import BaseLayout from '../layouts/BaseLayout.astro'; import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; import { SearchPage } from '../components/search'; +import { getNavCategories } from '../lib/nav-categories'; // Get query from URL parameters const url = new URL(Astro.request.url); const initialQuery = url.searchParams.get('q') || ''; +const navCategories = await getNavCategories(); --- @@ -25,6 +27,7 @@ const initialQuery = url.searchParams.get('q') || ''; From d86d3fd8e31ab19576f0cf6dabb066b2528e715b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 03:36:30 +0000 Subject: [PATCH 058/103] chore(deps): bump @angular/core from 21.2.1 to 21.2.4 Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) from 21.2.1 to 21.2.4. - [Release notes](https://github.com/angular/angular/releases) - [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md) - [Commits](https://github.com/angular/angular/commits/v21.2.4/packages/core) --- updated-dependencies: - dependency-name: "@angular/core" dependency-version: 21.2.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2e0d9f2f58..f123849a56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@angular/animations": "21.2.1", "@angular/common": "21.2.1", "@angular/compiler": "21.2.1", - "@angular/core": "21.2.1", + "@angular/core": "21.2.4", "@angular/forms": "21.2.1", "@angular/platform-browser": "21.2.1", "@angular/platform-browser-dynamic": "21.2.1", @@ -1161,9 +1161,9 @@ } }, "node_modules/@angular/core": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.1.tgz", - "integrity": "sha512-pFTbg03s2ZI5cHNT+eWsGjwIIKiYkeAnodFbCAHjwFi9KCEYlTykFLjr9lcpGrBddfmAH7GE08Q73vgmsdcNHw==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.4.tgz", + "integrity": "sha512-2+gd67ZuXHpGOqeb2o7XZPueEWEP81eJza2tSHkT5QMV8lnYllDEmaNnkPxnIjSLGP1O3PmiXxo4z8ibHkLZwg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1172,7 +1172,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.2.1", + "@angular/compiler": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0 || ~0.16.0" }, diff --git a/package.json b/package.json index ef07dc4e98..b218cac9fc 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "@angular/animations": "21.2.1", "@angular/common": "21.2.1", "@angular/compiler": "21.2.1", - "@angular/core": "21.2.1", + "@angular/core": "21.2.4", "@angular/forms": "21.2.1", "@angular/platform-browser": "21.2.1", "@angular/platform-browser-dynamic": "21.2.1", From 6c155c668df4597e960d12a39a6600ef19be7a17 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2026 15:42:03 +0000 Subject: [PATCH 059/103] chore(deps): bump devalue from 5.6.3 to 5.6.4 Bumps [devalue](https://github.com/sveltejs/devalue) from 5.6.3 to 5.6.4. - [Release notes](https://github.com/sveltejs/devalue/releases) - [Changelog](https://github.com/sveltejs/devalue/blob/main/CHANGELOG.md) - [Commits](https://github.com/sveltejs/devalue/compare/v5.6.3...v5.6.4) --- updated-dependencies: - dependency-name: devalue dependency-version: 5.6.4 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f123849a56..3d9eb098d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23610,9 +23610,9 @@ } }, "node_modules/devalue": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz", - "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.4.tgz", + "integrity": "sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==", "license": "MIT" }, "node_modules/devlop": { From e59b7b0eb2a4f12bfe5840561e77b3c646089b04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 02:07:22 +0000 Subject: [PATCH 060/103] chore(deps-dev): bump hono from 4.12.5 to 4.12.7 Bumps [hono](https://github.com/honojs/hono) from 4.12.5 to 4.12.7. - [Release notes](https://github.com/honojs/hono/releases) - [Commits](https://github.com/honojs/hono/compare/v4.12.5...v4.12.7) --- updated-dependencies: - dependency-name: hono dependency-version: 4.12.7 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d9eb098d6..effcfea041 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27636,9 +27636,9 @@ } }, "node_modules/hono": { - "version": "4.12.5", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.5.tgz", - "integrity": "sha512-3qq+FUBtlTHhtYxbxheZgY8NIFnkkC/MR8u5TTsr7YZ3wixryQ3cCwn3iZbg8p8B88iDBBAYSfZDS75t8MN7Vg==", + "version": "4.12.7", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.7.tgz", + "integrity": "sha512-jq9l1DM0zVIvsm3lv9Nw9nlJnMNPOcAtsbsgiUhWcFzPE99Gvo6yRTlszSLLYacMeQ6quHD6hMfId8crVHvexw==", "dev": true, "license": "MIT", "engines": { From 511b5c6a78cb9853149ee7cfd504b2e0592704e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Mar 2026 22:04:55 +0000 Subject: [PATCH 061/103] chore(deps): bump @angular/compiler from 21.2.1 to 21.2.4 Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) from 21.2.1 to 21.2.4. - [Release notes](https://github.com/angular/angular/releases) - [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md) - [Commits](https://github.com/angular/angular/commits/v21.2.4/packages/compiler) --- updated-dependencies: - dependency-name: "@angular/compiler" dependency-version: 21.2.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index effcfea041..0ab4fa52e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@angular/animations": "21.2.1", "@angular/common": "21.2.1", - "@angular/compiler": "21.2.1", + "@angular/compiler": "21.2.4", "@angular/core": "21.2.4", "@angular/forms": "21.2.1", "@angular/platform-browser": "21.2.1", @@ -1116,9 +1116,9 @@ } }, "node_modules/@angular/compiler": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.1.tgz", - "integrity": "sha512-FxWaSaii1vfHIFA+JksqQ8NGB2frfqCrs7Ju50a44kbwR4fmanfn/VsiS/CbwBp9vcyT/Br9X/jAG4RuK/U2nw==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.4.tgz", + "integrity": "sha512-9+ulVK3idIo/Tu4X2ic7/V0+Uj7pqrOAbOuIirYe6Ymm3AjexuFRiGBbfcH0VJhQ5cf8TvIJ1fuh+MI4JiRIxA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" diff --git a/package.json b/package.json index b218cac9fc..a05ec28e48 100644 --- a/package.json +++ b/package.json @@ -126,7 +126,7 @@ "dependencies": { "@angular/animations": "21.2.1", "@angular/common": "21.2.1", - "@angular/compiler": "21.2.1", + "@angular/compiler": "21.2.4", "@angular/core": "21.2.4", "@angular/forms": "21.2.1", "@angular/platform-browser": "21.2.1", From b47e23f80be483fb1a1560aac80538c3420047a6 Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Tue, 17 Mar 2026 16:35:58 -0600 Subject: [PATCH 062/103] chore: npm audit --- package-lock.json | 150 ++++++++++++++++++++++++---------------------- 1 file changed, 79 insertions(+), 71 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ab4fa52e8..16096e7e6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -188,9 +188,9 @@ } }, "node_modules/@actions/http-client/node_modules/undici": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", - "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.1.tgz", + "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==", "dev": true, "license": "MIT", "engines": { @@ -1406,29 +1406,29 @@ "license": "MIT" }, "node_modules/@astrojs/language-server": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.16.3.tgz", - "integrity": "sha512-yO5K7RYCMXUfeDlnU6UnmtnoXzpuQc0yhlaCNZ67k1C/MiwwwvMZz+LGa+H35c49w5QBfvtr4w4Zcf5PcH8uYA==", + "version": "2.16.5", + "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.16.5.tgz", + "integrity": "sha512-MEQvrbuiFDEo+LCO4vvYuTr3eZ4IluZ/n4BbUv77AWAJNEj/n0j7VqTvdL1rGloNTIKZTUd46p5RwYKsxQGY8w==", "dev": true, "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.13.0", - "@astrojs/yaml2ts": "^0.2.2", + "@astrojs/compiler": "^2.13.1", + "@astrojs/yaml2ts": "^0.2.3", "@jridgewell/sourcemap-codec": "^1.5.5", - "@volar/kit": "~2.4.27", - "@volar/language-core": "~2.4.27", - "@volar/language-server": "~2.4.27", - "@volar/language-service": "~2.4.27", + "@volar/kit": "~2.4.28", + "@volar/language-core": "~2.4.28", + "@volar/language-server": "~2.4.28", + "@volar/language-service": "~2.4.28", "muggle-string": "^0.4.1", "tinyglobby": "^0.2.15", - "volar-service-css": "0.0.68", - "volar-service-emmet": "0.0.68", - "volar-service-html": "0.0.68", - "volar-service-prettier": "0.0.68", - "volar-service-typescript": "0.0.68", - "volar-service-typescript-twoslash-queries": "0.0.68", - "volar-service-yaml": "0.0.68", - "vscode-html-languageservice": "^5.6.1", + "volar-service-css": "0.0.70", + "volar-service-emmet": "0.0.70", + "volar-service-html": "0.0.70", + "volar-service-prettier": "0.0.70", + "volar-service-typescript": "0.0.70", + "volar-service-typescript-twoslash-queries": "0.0.70", + "volar-service-yaml": "0.0.70", + "vscode-html-languageservice": "^5.6.2", "vscode-uri": "^3.1.0" }, "bin": { @@ -1628,13 +1628,13 @@ } }, "node_modules/@astrojs/yaml2ts": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.2.tgz", - "integrity": "sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.3.tgz", + "integrity": "sha512-PJzRmgQzUxI2uwpdX2lXSHtP4G8ocp24/t+bZyf5Fy0SZLSF9f9KXZoMlFM/XCGue+B0nH/2IZ7FpBYQATBsCg==", "dev": true, "license": "MIT", "dependencies": { - "yaml": "^2.5.0" + "yaml": "^2.8.2" } }, "node_modules/@babel/code-frame": { @@ -8021,9 +8021,9 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.57.6", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.6.tgz", - "integrity": "sha512-0rFv/D8Grzw1Mjs2+8NGUR+o4h9LVm5zKRtMeWnpdB5IMJF4TeHCL1zR5LMCIudkOvyvjbhMG5Wjs0B5nqsrRQ==", + "version": "7.57.7", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.7.tgz", + "integrity": "sha512-kmnmVs32MFWbV5X6BInC1/TfCs7y1ugwxv1xHsAIj/DyUfoe7vtO0alRUgbQa57+yRGHBBjlNcEk33SCAt5/dA==", "dev": true, "license": "MIT", "dependencies": { @@ -8036,7 +8036,7 @@ "@rushstack/ts-command-line": "5.3.3", "diff": "~8.0.2", "lodash": "~4.17.23", - "minimatch": "10.2.1", + "minimatch": "10.2.3", "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", @@ -8071,6 +8071,22 @@ "node": ">=10" } }, + "node_modules/@microsoft/api-extractor/node_modules/minimatch": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", + "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@microsoft/api-extractor/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -25649,13 +25665,13 @@ } }, "node_modules/express-rate-limit": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", - "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", + "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", "dev": true, "license": "MIT", "dependencies": { - "ip-address": "10.0.1" + "ip-address": "10.1.0" }, "engines": { "node": ">= 16" @@ -26217,9 +26233,9 @@ } }, "node_modules/flatted": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.4.tgz", - "integrity": "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -28283,9 +28299,9 @@ } }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, "license": "MIT", "engines": { @@ -47901,9 +47917,9 @@ } }, "node_modules/volar-service-css": { - "version": "0.0.68", - "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.68.tgz", - "integrity": "sha512-lJSMh6f3QzZ1tdLOZOzovLX0xzAadPhx8EKwraDLPxBndLCYfoTvnNuiFFV8FARrpAlW5C0WkH+TstPaCxr00Q==", + "version": "0.0.70", + "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.70.tgz", + "integrity": "sha512-K1qyOvBpE3rzdAv3e4/6Rv5yizrYPy5R/ne3IWCAzLBuMO4qBMV3kSqWzj6KUVe6S0AnN6wxF7cRkiaKfYMYJw==", "dev": true, "license": "MIT", "dependencies": { @@ -47921,9 +47937,9 @@ } }, "node_modules/volar-service-emmet": { - "version": "0.0.68", - "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.68.tgz", - "integrity": "sha512-nHvixrRQ83EzkQ4G/jFxu9Y4eSsXS/X2cltEPDM+K9qZmIv+Ey1w0tg1+6caSe8TU5Hgw4oSTwNMf/6cQb3LzQ==", + "version": "0.0.70", + "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.70.tgz", + "integrity": "sha512-xi5bC4m/VyE3zy/n2CXspKeDZs3qA41tHLTw275/7dNWM/RqE2z3BnDICQybHIVp/6G1iOQj5c1qXMgQC08TNg==", "dev": true, "license": "MIT", "dependencies": { @@ -47942,9 +47958,9 @@ } }, "node_modules/volar-service-html": { - "version": "0.0.68", - "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.68.tgz", - "integrity": "sha512-fru9gsLJxy33xAltXOh4TEdi312HP80hpuKhpYQD4O5hDnkNPEBdcQkpB+gcX0oK0VxRv1UOzcGQEUzWCVHLfA==", + "version": "0.0.70", + "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.70.tgz", + "integrity": "sha512-eR6vCgMdmYAo4n+gcT7DSyBQbwB8S3HZZvSagTf0sxNaD4WppMCFfpqWnkrlGStPKMZvMiejRRVmqsX9dYcTvQ==", "dev": true, "license": "MIT", "dependencies": { @@ -47962,9 +47978,9 @@ } }, "node_modules/volar-service-prettier": { - "version": "0.0.68", - "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.68.tgz", - "integrity": "sha512-grUmWHkHlebMOd6V8vXs2eNQUw/bJGJMjekh/EPf/p2ZNTK0Uyz7hoBRngcvGfJHMsSXZH8w/dZTForIW/4ihw==", + "version": "0.0.70", + "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.70.tgz", + "integrity": "sha512-Z6BCFSpGVCd8BPAsZ785Kce1BGlWd5ODqmqZGVuB14MJvrR4+CYz6cDy4F+igmE1gMifqfvMhdgT8Aud4M5ngg==", "dev": true, "license": "MIT", "dependencies": { @@ -47984,9 +48000,9 @@ } }, "node_modules/volar-service-typescript": { - "version": "0.0.68", - "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.68.tgz", - "integrity": "sha512-z7B/7CnJ0+TWWFp/gh2r5/QwMObHNDiQiv4C9pTBNI2Wxuwymd4bjEORzrJ/hJ5Yd5+OzeYK+nFCKevoGEEeKw==", + "version": "0.0.70", + "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.70.tgz", + "integrity": "sha512-l46Bx4cokkUedTd74ojO5H/zqHZJ8SUuyZ0IB8JN4jfRqUM3bQFBHoOwlZCyZmOeO0A3RQNkMnFclxO4c++gsg==", "dev": true, "license": "MIT", "dependencies": { @@ -48007,9 +48023,9 @@ } }, "node_modules/volar-service-typescript-twoslash-queries": { - "version": "0.0.68", - "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.68.tgz", - "integrity": "sha512-NugzXcM0iwuZFLCJg47vI93su5YhTIweQuLmZxvz5ZPTaman16JCvmDZexx2rd5T/75SNuvvZmrTOTNYUsfe5w==", + "version": "0.0.70", + "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.70.tgz", + "integrity": "sha512-IdD13Z9N2Bu8EM6CM0fDV1E69olEYGHDU25X51YXmq8Y0CmJ2LNj6gOiBJgpS5JGUqFzECVhMNBW7R0sPdRTMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -48025,14 +48041,14 @@ } }, "node_modules/volar-service-yaml": { - "version": "0.0.68", - "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.68.tgz", - "integrity": "sha512-84XgE02LV0OvTcwfqhcSwVg4of3MLNUWPMArO6Aj8YXqyEVnPu8xTEMY2btKSq37mVAPuaEVASI4e3ptObmqcA==", + "version": "0.0.70", + "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.70.tgz", + "integrity": "sha512-0c8bXDBeoATF9F6iPIlOuYTuZAC4c+yi0siQo920u7eiBJk8oQmUmg9cDUbR4+Gl++bvGP4plj3fErbJuPqdcQ==", "dev": true, "license": "MIT", "dependencies": { "vscode-uri": "^3.0.8", - "yaml-language-server": "~1.19.2" + "yaml-language-server": "~1.20.0" }, "peerDependencies": { "@volar/language-service": "~2.4.0" @@ -49432,16 +49448,15 @@ } }, "node_modules/yaml-language-server": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.19.2.tgz", - "integrity": "sha512-9F3myNmJzUN/679jycdMxqtydPSDRAarSj3wPiF7pchEPnO9Dg07Oc+gIYLqXR4L+g+FSEVXXv2+mr54StLFOg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.20.0.tgz", + "integrity": "sha512-qhjK/bzSRZ6HtTvgeFvjNPJGWdZ0+x5NREV/9XZWFjIGezew2b4r5JPy66IfOhd5OA7KeFwk1JfmEbnTvev0cA==", "dev": true, "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", - "lodash": "4.17.21", "prettier": "^3.5.0", "request-light": "^0.5.7", "vscode-json-languageservice": "4.1.8", @@ -49455,13 +49470,6 @@ "yaml-language-server": "bin/yaml-language-server" } }, - "node_modules/yaml-language-server/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, "node_modules/yaml-language-server/node_modules/request-light": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz", From 99b850fc0b405a789ad567ebbfd980337da9bf5d Mon Sep 17 00:00:00 2001 From: Chris Olsen Date: Tue, 17 Mar 2026 16:37:31 -0600 Subject: [PATCH 063/103] chore: minor deps update --- package-lock.json | 822 ++++++++++++++++++++++++++++++++-------------- package.json | 46 +-- 2 files changed, 594 insertions(+), 274 deletions(-) diff --git a/package-lock.json b/package-lock.json index 16096e7e6e..6a659b27ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,20 +9,20 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "@angular/animations": "21.2.1", - "@angular/common": "21.2.1", + "@angular/animations": "21.2.4", + "@angular/common": "21.2.4", "@angular/compiler": "21.2.4", "@angular/core": "21.2.4", - "@angular/forms": "21.2.1", - "@angular/platform-browser": "21.2.1", - "@angular/platform-browser-dynamic": "21.2.1", - "@angular/router": "21.2.1", - "@astrojs/mdx": "4.3.13", + "@angular/forms": "21.2.4", + "@angular/platform-browser": "21.2.4", + "@angular/platform-browser-dynamic": "21.2.4", + "@angular/router": "21.2.4", + "@astrojs/mdx": "4.3.14", "@astrojs/react": "4.4.2", "@swc/helpers": "0.5.19", - "astro": "5.18.0", + "astro": "5.18.1", "date-fns": "3.6.0", - "dompurify": "3.3.2", + "dompurify": "3.3.3", "flexsearch": "0.8.212", "highlight.js": "11.11.1", "react": "19.2.4", @@ -38,16 +38,16 @@ "@abgov/design-tokens": "1.10.0", "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@2.1.1", "@abgov/nx-release": "12.0.0", - "@angular-devkit/build-angular": "21.2.1", - "@angular-devkit/core": "21.2.1", - "@angular-devkit/schematics": "21.2.1", + "@angular-devkit/build-angular": "21.2.2", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", "@angular-eslint/eslint-plugin": "18.4.3", "@angular-eslint/eslint-plugin-template": "18.4.3", "@angular-eslint/template-parser": "18.4.3", - "@angular/cli": "21.2.1", - "@angular/compiler-cli": "21.2.1", - "@angular/language-service": "21.2.1", - "@astrojs/check": "0.9.6", + "@angular/cli": "21.2.2", + "@angular/compiler-cli": "21.2.4", + "@angular/language-service": "21.2.4", + "@astrojs/check": "0.9.7", "@babel/core": "7.29.0", "@babel/preset-react": "7.28.5", "@faker-js/faker": "8.4.1", @@ -61,7 +61,7 @@ "@nx/vitest": "22.5.4", "@nx/web": "22.5.4", "@nx/workspace": "22.5.4", - "@schematics/angular": "21.2.1", + "@schematics/angular": "21.2.2", "@sveltejs/vite-plugin-svelte": "3.1.2", "@swc-node/register": "1.11.1", "@swc/cli": "0.8.0", @@ -80,10 +80,10 @@ "@typescript-eslint/utils": "7.18.0", "@vitejs/plugin-react": "4.7.0", "@vitejs/plugin-react-swc": "3.11.0", - "@vitest/browser": "4.0.18", - "@vitest/browser-playwright": "4.0.18", - "@vitest/coverage-v8": "4.0.18", - "@vitest/ui": "4.0.18", + "@vitest/browser": "4.1.0", + "@vitest/browser-playwright": "4.1.0", + "@vitest/coverage-v8": "4.1.0", + "@vitest/ui": "4.1.0", "autoprefixer": "10.4.27", "eslint": "8.57.1", "eslint-config-prettier": "10.1.8", @@ -93,7 +93,7 @@ "eslint-plugin-react-hooks": "5.2.0", "glob": "12.0.0", "jest": "29.7.0", - "jest-environment-jsdom": "30.2.0", + "jest-environment-jsdom": "30.3.0", "jest-preset-angular": "16.1.1", "jiti": "2.6.1", "jsdom": "26.1.0", @@ -119,7 +119,7 @@ "typescript": "5.9.3", "vite": "5.4.21", "vite-plugin-dts": "4.5.4", - "vitest": "4.0.18", + "vitest": "4.1.0", "vitest-browser-react": "1.0.1", "vitest-dom": "0.1.1" } @@ -435,13 +435,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.2102.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.1.tgz", - "integrity": "sha512-x2Qqz6oLYvEh9UBUG0AP1A4zROO/VP+k+zM9+4c2uZw1uqoBQFmutqgzncjVU7cR9R0RApgx9JRZHDFtQru68w==", + "version": "0.2102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.2.tgz", + "integrity": "sha512-CDvFtXwyBtMRkTQnm+LfBNLL0yLV8ZGskrM1T6VkcGwXGFDott1FxUdj96ViodYsYL5fbJr0MNA6TlLcanV3kQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.1", + "@angular-devkit/core": "21.2.2", "rxjs": "7.8.2" }, "bin": { @@ -454,17 +454,17 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.2.1.tgz", - "integrity": "sha512-HZQggWPHepDIzQeYVjcC1m3HeIEKBYVKPfb2uZBcPxigHvZMeB0JD49QrgDeSOQulIGkAnJoPf/IDRqQpvWzqg==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.2.2.tgz", + "integrity": "sha512-+KaqvraSGvhnSL3fUazHR8297k6lv/pzhV1p2x2mb6r5FyzD/HjYIP2fiIB2DII36YOVli2mgECoY3CmWj6n8Q==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2102.1", - "@angular-devkit/build-webpack": "0.2102.1", - "@angular-devkit/core": "21.2.1", - "@angular/build": "21.2.1", + "@angular-devkit/architect": "0.2102.2", + "@angular-devkit/build-webpack": "0.2102.2", + "@angular-devkit/core": "21.2.2", + "@angular/build": "21.2.2", "@babel/core": "7.29.0", "@babel/generator": "7.29.1", "@babel/helper-annotate-as-pure": "7.27.3", @@ -475,7 +475,7 @@ "@babel/preset-env": "7.29.0", "@babel/runtime": "7.28.6", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "21.2.1", + "@ngtools/webpack": "21.2.2", "ansi-colors": "4.1.3", "autoprefixer": "10.4.27", "babel-loader": "10.0.0", @@ -530,7 +530,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.2.1", + "@angular/ssr": "^21.2.2", "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", "jest": "^30.2.0", @@ -726,13 +726,13 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.2102.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2102.1.tgz", - "integrity": "sha512-iBBMHegwjaAGnSoB5i9ynzCTCdYcLCgGhA2Wmi09DHJPSVFXw23H0nZUeNaRpo2V0hPRrMiyE3dlmaRJC42/yA==", + "version": "0.2102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2102.2.tgz", + "integrity": "sha512-5wQmVnpozBCeAMx1SKHSv2GGH3pVZ1WMwX4k0tnsgsHTt8ia24Zxa7P7pAsqkCbpHpa+7/nEjNuW9Teg/isumg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2102.1", + "@angular-devkit/architect": "0.2102.2", "rxjs": "7.8.2" }, "engines": { @@ -746,9 +746,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.1.tgz", - "integrity": "sha512-TpXGjERqVPN8EPt7LdmWAwh0oNQ/6uWFutzGZiXhJy81n1zb1O1XrqhRAmvP1cAo5O+na6IV2JkkCmxL6F8GUg==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.2.tgz", + "integrity": "sha512-xUeKGe4BDQpkz0E6fnAPIJXE0y0nqtap0KhJIBhvN7xi3NenIzTmoi6T9Yv5OOBUdLZbOm4SOel8MhdXiIBpAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -774,13 +774,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.1.tgz", - "integrity": "sha512-CWoamHaasAHMjHcYqxbj0tMnoXxdGotcAz2SpiuWtH28Lnf5xfbTaJn/lwdMP8Wdh4tgA+uYh2l45A5auCwmkw==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.2.tgz", + "integrity": "sha512-CCeyQxGUq+oyGnHd7PfcYIVbj9pRnqjQq0rAojoAqs1BJdtInx9weLBCLy+AjM3NHePeZrnwm+wEVr8apED8kg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.1", + "@angular-devkit/core": "21.2.2", "jsonc-parser": "3.3.1", "magic-string": "0.30.21", "ora": "9.3.0", @@ -875,9 +875,9 @@ } }, "node_modules/@angular/animations": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.2.1.tgz", - "integrity": "sha512-zT/S29pUTbziCLvZ2itBdNWd5i8tsXexofH7KA4n2yvYmK1EhNpE7TlHRjghmsHgtDt4VnGiMW4zXEyrl05Dwg==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.2.4.tgz", + "integrity": "sha512-hO1P7ks9n7lW3D31bzHohSuoAaj05xJUlK8rZgX8IkH5DLx4qhvfNh0t4bbLuBJLP2r1TaLsQ8KFcemCkFRO2w==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -886,18 +886,18 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.2.1" + "@angular/core": "21.2.4" } }, "node_modules/@angular/build": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.1.tgz", - "integrity": "sha512-cUpLNHJp9taII/FOcJHHfQYlMcZSRaf6eIxgSNS6Xfx1CeGoJNDN+J8+GFk+H1CPJt1EvbfyZ+dE5DbsgTD/QQ==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.2.tgz", + "integrity": "sha512-Vq2eIneNxzhHm1MwEmRqEJDwHU9ODfSRDaMWwtysGMhpoMQmLdfTqkQDmkC2qVUr8mV8Z1i5I+oe5ZJaMr/PlQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2102.1", + "@angular-devkit/architect": "0.2102.2", "@babel/core": "7.29.0", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", @@ -940,7 +940,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.2.1", + "@angular/ssr": "^21.2.2", "karma": "^6.4.0", "less": "^4.2.0", "ng-packagr": "^21.0.0", @@ -1065,19 +1065,19 @@ } }, "node_modules/@angular/cli": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.1.tgz", - "integrity": "sha512-5SRfMTgwFj1zXOpfeZWHsxZBni0J4Xz7/CbewG47D6DmbstOrSdgt6eNzJ62R650t0G9dpri2YvToZgImtbjOQ==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.2.tgz", + "integrity": "sha512-eZo8/qX+ZIpIWc0CN+cCX13Lbgi/031wAp8DRVhDDO6SMVtcr/ObOQ2S16+pQdOMXxiG3vby6IhzJuz9WACzMQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2102.1", - "@angular-devkit/core": "21.2.1", - "@angular-devkit/schematics": "21.2.1", + "@angular-devkit/architect": "0.2102.2", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", "@modelcontextprotocol/sdk": "1.26.0", - "@schematics/angular": "21.2.1", + "@schematics/angular": "21.2.2", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.48.1", "ini": "6.0.0", @@ -1100,9 +1100,9 @@ } }, "node_modules/@angular/common": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.1.tgz", - "integrity": "sha512-xhv2i1Q9s1kpGbGsfj+o36+XUC/TQLcZyRuRxn3GwaN7Rv34FabC88ycpvoE+sW/txj4JRx9yPA0dRSZjwZ+Gg==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.4.tgz", + "integrity": "sha512-NrP6qOuUpo3fqq14UJ1b2bIRtWsfvxh1qLqOyFV4gfBrHhXd0XffU1LUlUw1qp4w1uBSgPJ0/N5bSPUWrAguVg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1111,7 +1111,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.2.1", + "@angular/core": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1128,9 +1128,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.1.tgz", - "integrity": "sha512-qYCWLGtEju4cDtYLi4ZzbwKoF0lcGs+Lc31kuESvAzYvWNgk2EUOtwWo8kbgpAzAwSYodtxW6Q90iWEwfU6elw==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.4.tgz", + "integrity": "sha512-vGjd7DZo/Ox50pQCm5EycmBu91JclimPtZoyNXu/2hSxz3oAkzwiHCwlHwk2g58eheSSp+lYtYRLmHAqSVZLjg==", "dev": true, "license": "MIT", "dependencies": { @@ -1151,7 +1151,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.2.1", + "@angular/compiler": "21.2.4", "typescript": ">=5.9 <6.1" }, "peerDependenciesMeta": { @@ -1186,9 +1186,9 @@ } }, "node_modules/@angular/forms": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.1.tgz", - "integrity": "sha512-6aqOPk9xoa0dfeUDeEbhaiPhmt6MQrdn59qbGAomn9RMXA925TrHbJhSIkp9tXc2Fr4aJRi8zkD/cdXEc1IYeA==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.4.tgz", + "integrity": "sha512-1fOhctA9ADEBYjI3nPQUR5dHsK2+UWAjup37Ksldk/k0w8UpD5YsN7JVNvsDMZRFMucKYcGykPblU7pABtsqnQ==", "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", @@ -1198,16 +1198,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.2.1", - "@angular/core": "21.2.1", - "@angular/platform-browser": "21.2.1", + "@angular/common": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-21.2.1.tgz", - "integrity": "sha512-L8EaNhWDKMny18RURg/Ju2Dix2e7qLL/s2yDQrawgjQRmXAMnjimz10w/EiiG7FMK/Hj5fLycS5X8VITq1f2rg==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-21.2.4.tgz", + "integrity": "sha512-seWlXWhayTwuL62Cfz+Ky/Wv67oYLX+cXplYoIinDVJPgQaU9jXpakLfKq8RwdRXVmgTE0HQ5dyoTozuWgJ8Nw==", "dev": true, "license": "MIT", "engines": { @@ -1215,9 +1215,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.1.tgz", - "integrity": "sha512-k4SJLxIaLT26vLjLuFL+ho0BiG5PrdxEsjsXFC7w5iUhomeouzkHVTZ4t7gaLNKrdRD7QNtU4Faw0nL0yx0ZPQ==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.4.tgz", + "integrity": "sha512-1A9e/cQVu+3BkRCktLcO3RZGuw8NOTHw1frUUrpAz+iMyvIT4sDRFbL+U1g8qmOCZqRNC1Pi1HZfZ1kl6kvrcQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1226,9 +1226,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "21.2.1", - "@angular/common": "21.2.1", - "@angular/core": "21.2.1" + "@angular/animations": "21.2.4", + "@angular/common": "21.2.4", + "@angular/core": "21.2.4" }, "peerDependenciesMeta": { "@angular/animations": { @@ -1237,9 +1237,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.2.1.tgz", - "integrity": "sha512-J4KnrXjgSuk7KjEm79/RK1yyzR867sIyT5mcG6jx2KmkjspFJd4OeOux7Oj7lSBM7+nDEsKC9F6s0x3dC0hCPQ==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.2.4.tgz", + "integrity": "sha512-LRJLnGh4rdgD0+S5xuDd4YRm5bV8WP2e6F1Pe5rIr6N4V9ofgpB0/uOjYy9se99FJZjoyPnpxaKsp8+XA753Zg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1248,16 +1248,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.2.1", - "@angular/compiler": "21.2.1", - "@angular/core": "21.2.1", - "@angular/platform-browser": "21.2.1" + "@angular/common": "21.2.4", + "@angular/compiler": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4" } }, "node_modules/@angular/router": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.1.tgz", - "integrity": "sha512-FUKG+8ImQYxmlDUdAs7+VeS/VrBNrbo0zGiKkzVNU/bbcCyroKXJLXFtkFI3qmROiJNyIta2IMBCHJvIjLIMig==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.4.tgz", + "integrity": "sha512-OjWze4XT8i2MThcBXMv7ru1k6/5L6QYZbcXuseqimFCHm2avEJ+mXPovY066fMBZJhqbXdjB82OhHAWkIHjglQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1266,9 +1266,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.2.1", - "@angular/core": "21.2.1", - "@angular/platform-browser": "21.2.1", + "@angular/common": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1294,14 +1294,14 @@ "license": "ISC" }, "node_modules/@astrojs/check": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.6.tgz", - "integrity": "sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA==", + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.7.tgz", + "integrity": "sha512-dA7U5/OFg8/xaMUb2vUOOJuuJXnMpHy6F0BM8ZhL7WT5OkTBwJ0GoW38n4fC4CXt+lT9mLWL0y8Pa74tFByBpQ==", "dev": true, "license": "MIT", "dependencies": { "@astrojs/language-server": "^2.16.1", - "chokidar": "^4.0.1", + "chokidar": "^4.0.3", "kleur": "^4.1.5", "yargs": "^17.7.2" }, @@ -1400,9 +1400,9 @@ "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", - "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.6.tgz", + "integrity": "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q==", "license": "MIT" }, "node_modules/@astrojs/language-server": { @@ -1448,12 +1448,12 @@ } }, "node_modules/@astrojs/markdown-remark": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.10.tgz", - "integrity": "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==", + "version": "6.3.11", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.11.tgz", + "integrity": "sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.7.5", + "@astrojs/internal-helpers": "0.7.6", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", @@ -1467,8 +1467,8 @@ "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", - "shiki": "^3.19.0", - "smol-toml": "^1.5.2", + "shiki": "^3.21.0", + "smol-toml": "^1.6.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", @@ -1477,12 +1477,12 @@ } }, "node_modules/@astrojs/mdx": { - "version": "4.3.13", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.13.tgz", - "integrity": "sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q==", + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.14.tgz", + "integrity": "sha512-FBrqJQORVm+rkRa2TS5CjU9PBA6hkhrwLVBSS9A77gN2+iehvjq1w6yya/d0YKC7osiVorKkr3Qd9wNbl0ZkGA==", "license": "MIT", "dependencies": { - "@astrojs/markdown-remark": "6.3.10", + "@astrojs/markdown-remark": "6.3.11", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.15.0", "es-module-lexer": "^1.7.0", @@ -3696,6 +3696,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@blazediff/core": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@blazediff/core/-/core-1.9.1.tgz", + "integrity": "sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==", + "dev": true, + "license": "MIT" + }, "node_modules/@borewit/text-codec": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", @@ -7014,19 +7021,19 @@ } }, "node_modules/@jest/environment-jsdom-abstract": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.2.0.tgz", - "integrity": "sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.3.0.tgz", + "integrity": "sha512-0hNFs5N6We3DMCwobzI0ydhkY10sT1tZSC0AAiy+0g2Dt/qEWgrcV5BrMxPczhe41cxW4qm6X+jqZaUdpZIajA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", "@types/jsdom": "^21.1.7", "@types/node": "*", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "jest-mock": "30.3.0", + "jest-util": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -7041,6 +7048,158 @@ } } }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/environment": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", + "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/fake-timers": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", + "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@sinonjs/fake-timers": "^15.0.0", + "@types/node": "*", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/types": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", + "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinonjs/fake-timers": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz", + "integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-message-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", + "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.3.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-mock": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", + "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", + "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/pretty-format": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/@jest/expect": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", @@ -9306,9 +9465,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.2.1.tgz", - "integrity": "sha512-HGRGTDmyo3IuxxEAVK9/QK2Nd/nwWIh/zcd2x6nmCxC7tdB0fwIhEZhWnUDyLP2QnDaEPeR4NnZCGTN89SWhGg==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.2.2.tgz", + "integrity": "sha512-EnDlYg0KWqtvJ2FBIFR03nBHRhs8JFtb4yrdnL5zt7OP6mlRpCcFJ+kXwm6v9OVTEIsKKRdPRe0qpSYOAOdo6w==", "dev": true, "license": "MIT", "engines": { @@ -14459,14 +14618,14 @@ } }, "node_modules/@schematics/angular": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.1.tgz", - "integrity": "sha512-DjrHRMoILhbZ6tc7aNZWuHA1wCm1iU/JN1TxAwNEyIBgyU3Fx8Z5baK4w0TCpOIPt0RLWVgP2L7kka9aXWCUFA==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.2.tgz", + "integrity": "sha512-Ywa6HDtX7TRBQZTVMMnxX3Mk7yVnG8KtSFaXWrkx779+q8tqYdBwNwAqbNd4Zatr1GccKaz9xcptHJta5+DTxw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.1", - "@angular-devkit/schematics": "21.2.1", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", "jsonc-parser": "3.3.1" }, "engines": { @@ -17495,37 +17654,37 @@ } }, "node_modules/@vitest/browser": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.0.18.tgz", - "integrity": "sha512-gVQqh7paBz3gC+ZdcCmNSWJMk70IUjDeVqi+5m5vYpEHsIwRgw3Y545jljtajhkekIpIp5Gg8oK7bctgY0E2Ng==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.1.0.tgz", + "integrity": "sha512-tG/iOrgbiHQks0ew7CdelUyNEHkv8NLrt+CqdTivIuoSnXvO7scWMn4Kqo78/UGY1NJ6Hv+vp8BvRnED/bjFdQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/mocker": "4.0.18", - "@vitest/utils": "4.0.18", + "@blazediff/core": "1.9.1", + "@vitest/mocker": "4.1.0", + "@vitest/utils": "4.1.0", "magic-string": "^0.30.21", - "pixelmatch": "7.1.0", "pngjs": "^7.0.0", "sirv": "^3.0.2", "tinyrainbow": "^3.0.3", - "ws": "^8.18.3" + "ws": "^8.19.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "4.0.18" + "vitest": "4.1.0" } }, "node_modules/@vitest/browser-playwright": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.0.18.tgz", - "integrity": "sha512-gfajTHVCiwpxRj1qh0Sh/5bbGLG4F/ZH/V9xvFVoFddpITfMta9YGow0W6ZpTTORv2vdJuz9TnrNSmjKvpOf4g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.1.0.tgz", + "integrity": "sha512-2RU7pZELY9/aVMLmABNy1HeZ4FX23FXGY1jRuHLHgWa2zaAE49aNW2GLzebW+BmbTZIKKyFF1QXvk7DEWViUCQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/browser": "4.0.18", - "@vitest/mocker": "4.0.18", + "@vitest/browser": "4.1.0", + "@vitest/mocker": "4.1.0", "tinyrainbow": "^3.0.3" }, "funding": { @@ -17533,7 +17692,7 @@ }, "peerDependencies": { "playwright": "*", - "vitest": "4.0.18" + "vitest": "4.1.0" }, "peerDependenciesMeta": { "playwright": { @@ -17564,29 +17723,29 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.18.tgz", - "integrity": "sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.0.tgz", + "integrity": "sha512-nDWulKeik2bL2Va/Wl4x7DLuTKAXa906iRFooIRPR+huHkcvp9QDkPQ2RJdmjOFrqOqvNfoSQLF68deE3xC3CQ==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.0.18", - "ast-v8-to-istanbul": "^0.3.10", + "@vitest/utils": "4.1.0", + "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.1", + "magicast": "^0.5.2", "obug": "^2.1.1", - "std-env": "^3.10.0", + "std-env": "^4.0.0-rc.1", "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "4.0.18", - "vitest": "4.0.18" + "@vitest/browser": "4.1.0", + "vitest": "4.1.0" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -17605,17 +17764,17 @@ } }, "node_modules/@vitest/expect": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", - "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.0.tgz", + "integrity": "sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==", "dev": true, "license": "MIT", "dependencies": { - "@standard-schema/spec": "^1.0.0", + "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "chai": "^6.2.1", + "@vitest/spy": "4.1.0", + "@vitest/utils": "4.1.0", + "chai": "^6.2.2", "tinyrainbow": "^3.0.3" }, "funding": { @@ -17623,13 +17782,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", - "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.0.tgz", + "integrity": "sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.0.18", + "@vitest/spy": "4.1.0", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -17638,7 +17797,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -17650,9 +17809,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.0.tgz", + "integrity": "sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==", "dev": true, "license": "MIT", "dependencies": { @@ -17663,13 +17822,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", - "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.0.tgz", + "integrity": "sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.18", + "@vitest/utils": "4.1.0", "pathe": "^2.0.3" }, "funding": { @@ -17677,13 +17836,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", - "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.0.tgz", + "integrity": "sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", + "@vitest/pretty-format": "4.1.0", + "@vitest/utils": "4.1.0", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -17692,9 +17852,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", - "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.0.tgz", + "integrity": "sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==", "dev": true, "license": "MIT", "funding": { @@ -17702,15 +17862,15 @@ } }, "node_modules/@vitest/ui": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.18.tgz", - "integrity": "sha512-CGJ25bc8fRi8Lod/3GHSvXRKi7nBo3kxh0ApW4yCjmrWmRmlT53B5E08XRSZRliygG0aVNxLrBEqPYdz/KcCtQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.1.0.tgz", + "integrity": "sha512-sTSDtVM1GOevRGsCNhp1mBUHKo9Qlc55+HCreFT4fe99AHxl1QQNXSL3uj4Pkjh5yEuWZIx8E2tVC94nnBZECQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.18", + "@vitest/utils": "4.1.0", "fflate": "^0.8.2", - "flatted": "^3.3.3", + "flatted": "3.4.0", "pathe": "^2.0.3", "sirv": "^3.0.2", "tinyglobby": "^0.2.15", @@ -17720,23 +17880,38 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "4.0.18" + "vitest": "4.1.0" } }, + "node_modules/@vitest/ui/node_modules/flatted": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.0.tgz", + "integrity": "sha512-kC6Bb+ooptOIvWj5B63EQWkF0FEnNjV2ZNkLMLZRDDduIiWeFF4iKnslwhiWxjAdbg4NzTNo6h0qLuvFrcx+Sw==", + "dev": true, + "license": "ISC" + }, "node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.0.tgz", + "integrity": "sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", + "@vitest/pretty-format": "4.1.0", + "convert-source-map": "^2.0.0", "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, + "node_modules/@vitest/utils/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, "node_modules/@volar/kit": { "version": "2.4.28", "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.28.tgz", @@ -19068,9 +19243,9 @@ "license": "MIT" }, "node_modules/ast-v8-to-istanbul": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.12.tgz", - "integrity": "sha512-BRRC8VRZY2R4Z4lFIL35MwNXmwVqBityvOIwETtsCSwvjl0IdgFsy9NhdaA6j74nUdtJJlIypeRhpDam19Wq3g==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.0.tgz", + "integrity": "sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -19096,14 +19271,14 @@ } }, "node_modules/astro": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.18.0.tgz", - "integrity": "sha512-CHiohwJIS4L0G6/IzE1Fx3dgWqXBCXus/od0eGUfxrZJD2um2pE7ehclMmgL/fXqbU7NfE1Ze2pq34h2QaA6iQ==", + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.18.1.tgz", + "integrity": "sha512-m4VWilWZ+Xt6NPoYzC4CgGZim/zQUO7WFL0RHCH0AiEavF1153iC3+me2atDvXpf/yX4PyGUeD8wZLq1cirT3g==", "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.13.0", - "@astrojs/internal-helpers": "0.7.5", - "@astrojs/markdown-remark": "6.3.10", + "@astrojs/internal-helpers": "0.7.6", + "@astrojs/markdown-remark": "6.3.11", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@oslojs/encoding": "^1.1.0", @@ -23757,13 +23932,10 @@ } }, "node_modules/dompurify": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.2.tgz", - "integrity": "sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", + "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", "license": "(MPL-2.0 OR Apache-2.0)", - "engines": { - "node": ">=20" - }, "optionalDependencies": { "@types/trusted-types": "^2.0.7" } @@ -30735,16 +30907,14 @@ "license": "MIT" }, "node_modules/jest-environment-jsdom": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.2.0.tgz", - "integrity": "sha512-zbBTiqr2Vl78pKp/laGBREYzbZx9ZtqPjOK4++lL4BNDhxRnahg51HtoDrk9/VjIy9IthNEWdKVd7H5bqBhiWQ==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.3.0.tgz", + "integrity": "sha512-RLEOJy6ip1lpw0yqJ8tB3i88FC7VBz7i00Zvl2qF71IdxjS98gC9/0SPWYIBVXHm5hgCYK0PAlSlnHGGy9RoMg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.2.0", - "@jest/environment-jsdom-abstract": "30.2.0", - "@types/jsdom": "^21.1.7", - "@types/node": "*", + "@jest/environment": "30.3.0", + "@jest/environment-jsdom-abstract": "30.3.0", "jsdom": "^26.1.0" }, "engines": { @@ -30759,6 +30929,158 @@ } } }, + "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", + "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", + "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@sinonjs/fake-timers": "^15.0.0", + "@types/node": "*", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", + "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz", + "integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", + "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.3.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-mock": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", + "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", + "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/pretty-format": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-environment-node": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", @@ -38188,13 +38510,13 @@ "license": "MIT" }, "node_modules/oniguruma-to-es": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", - "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.5.tgz", + "integrity": "sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==", "license": "MIT", "dependencies": { "oniguruma-parser": "^0.12.1", - "regex": "^6.0.1", + "regex": "^6.1.0", "regex-recursion": "^6.0.2" } }, @@ -39096,19 +39418,6 @@ "@napi-rs/nice": "^1.0.4" } }, - "node_modules/pixelmatch": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.1.0.tgz", - "integrity": "sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==", - "dev": true, - "license": "ISC", - "dependencies": { - "pngjs": "^7.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, "node_modules/pkce-challenge": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", @@ -44611,9 +44920,9 @@ } }, "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", + "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", "dev": true, "license": "MIT" }, @@ -47654,31 +47963,31 @@ } }, "node_modules/vitest": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", - "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.0.tgz", + "integrity": "sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.0.18", - "@vitest/mocker": "4.0.18", - "@vitest/pretty-format": "4.0.18", - "@vitest/runner": "4.0.18", - "@vitest/snapshot": "4.0.18", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "es-module-lexer": "^1.7.0", - "expect-type": "^1.2.2", + "@vitest/expect": "4.1.0", + "@vitest/mocker": "4.1.0", + "@vitest/pretty-format": "4.1.0", + "@vitest/runner": "4.1.0", + "@vitest/snapshot": "4.1.0", + "@vitest/spy": "4.1.0", + "@vitest/utils": "4.1.0", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", - "std-env": "^3.10.0", + "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.0.3", - "vite": "^6.0.0 || ^7.0.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0", "why-is-node-running": "^2.3.0" }, "bin": { @@ -47694,12 +48003,13 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.18", - "@vitest/browser-preview": "4.0.18", - "@vitest/browser-webdriverio": "4.0.18", - "@vitest/ui": "4.0.18", + "@vitest/browser-playwright": "4.1.0", + "@vitest/browser-preview": "4.1.0", + "@vitest/browser-webdriverio": "4.1.0", + "@vitest/ui": "4.1.0", "happy-dom": "*", - "jsdom": "*" + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" }, "peerDependenciesMeta": { "@edge-runtime/vm": { @@ -47728,6 +48038,9 @@ }, "jsdom": { "optional": true + }, + "vite": { + "optional": false } } }, @@ -47841,6 +48154,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/vitest/node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, "node_modules/vitest/node_modules/vite": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", diff --git a/package.json b/package.json index a05ec28e48..563144857b 100644 --- a/package.json +++ b/package.json @@ -38,16 +38,16 @@ "@abgov/design-tokens": "1.10.0", "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@2.1.1", "@abgov/nx-release": "12.0.0", - "@angular-devkit/build-angular": "21.2.1", - "@angular-devkit/core": "21.2.1", - "@angular-devkit/schematics": "21.2.1", + "@angular-devkit/build-angular": "21.2.2", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", "@angular-eslint/eslint-plugin": "18.4.3", "@angular-eslint/eslint-plugin-template": "18.4.3", "@angular-eslint/template-parser": "18.4.3", - "@angular/cli": "21.2.1", - "@angular/compiler-cli": "21.2.1", - "@angular/language-service": "21.2.1", - "@astrojs/check": "0.9.6", + "@angular/cli": "21.2.2", + "@angular/compiler-cli": "21.2.4", + "@angular/language-service": "21.2.4", + "@astrojs/check": "0.9.7", "@babel/core": "7.29.0", "@babel/preset-react": "7.28.5", "@faker-js/faker": "8.4.1", @@ -61,7 +61,7 @@ "@nx/vitest": "22.5.4", "@nx/web": "22.5.4", "@nx/workspace": "22.5.4", - "@schematics/angular": "21.2.1", + "@schematics/angular": "21.2.2", "@sveltejs/vite-plugin-svelte": "3.1.2", "@swc-node/register": "1.11.1", "@swc/cli": "0.8.0", @@ -80,10 +80,10 @@ "@typescript-eslint/utils": "7.18.0", "@vitejs/plugin-react": "4.7.0", "@vitejs/plugin-react-swc": "3.11.0", - "@vitest/browser": "4.0.18", - "@vitest/browser-playwright": "4.0.18", - "@vitest/coverage-v8": "4.0.18", - "@vitest/ui": "4.0.18", + "@vitest/browser": "4.1.0", + "@vitest/browser-playwright": "4.1.0", + "@vitest/coverage-v8": "4.1.0", + "@vitest/ui": "4.1.0", "autoprefixer": "10.4.27", "eslint": "8.57.1", "eslint-config-prettier": "10.1.8", @@ -93,7 +93,7 @@ "eslint-plugin-react-hooks": "5.2.0", "glob": "12.0.0", "jest": "29.7.0", - "jest-environment-jsdom": "30.2.0", + "jest-environment-jsdom": "30.3.0", "jest-preset-angular": "16.1.1", "jiti": "2.6.1", "jsdom": "26.1.0", @@ -119,25 +119,25 @@ "typescript": "5.9.3", "vite": "5.4.21", "vite-plugin-dts": "4.5.4", - "vitest": "4.0.18", + "vitest": "4.1.0", "vitest-browser-react": "1.0.1", "vitest-dom": "0.1.1" }, "dependencies": { - "@angular/animations": "21.2.1", - "@angular/common": "21.2.1", + "@angular/animations": "21.2.4", + "@angular/common": "21.2.4", "@angular/compiler": "21.2.4", "@angular/core": "21.2.4", - "@angular/forms": "21.2.1", - "@angular/platform-browser": "21.2.1", - "@angular/platform-browser-dynamic": "21.2.1", - "@angular/router": "21.2.1", - "@astrojs/mdx": "4.3.13", + "@angular/forms": "21.2.4", + "@angular/platform-browser": "21.2.4", + "@angular/platform-browser-dynamic": "21.2.4", + "@angular/router": "21.2.4", + "@astrojs/mdx": "4.3.14", "@astrojs/react": "4.4.2", "@swc/helpers": "0.5.19", - "astro": "5.18.0", + "astro": "5.18.1", "date-fns": "3.6.0", - "dompurify": "3.3.2", + "dompurify": "3.3.3", "flexsearch": "0.8.212", "highlight.js": "11.11.1", "react": "19.2.4", From 10607af157836cebf89fa88b6f456b880a80ddca Mon Sep 17 00:00:00 2001 From: Benji Franck Date: Fri, 13 Mar 2026 16:35:59 -0600 Subject: [PATCH 064/103] docs(#3537): add roadmap, dev setup, and update pages fix: update drop-in hours booking URL and reuse shared callout - Fix broken booking URL in shared DropInCallout component - Wrap link in tag so it renders correctly in Astro - Replace inline callout on setup page with shared component - Update stale booking URLs on contribute and out-of-support pages --- docs/src/components/DropInCallout.astro | 4 +- docs/src/components/nav/GetStartedSubMenu.tsx | 3 +- docs/src/pages/get-started/contribute.astro | 2 +- .../pages/get-started/developers/setup.astro | 131 ++++++- .../pages/get-started/developers/update.astro | 26 -- .../pages/get-started/migration-guide.astro | 228 ++++++++++++ .../pages/get-started/out-of-support.astro | 2 +- docs/src/pages/get-started/roadmap.astro | 347 ++++++++++++++++++ 8 files changed, 704 insertions(+), 39 deletions(-) delete mode 100644 docs/src/pages/get-started/developers/update.astro create mode 100644 docs/src/pages/get-started/migration-guide.astro create mode 100644 docs/src/pages/get-started/roadmap.astro diff --git a/docs/src/components/DropInCallout.astro b/docs/src/components/DropInCallout.astro index a3f8fc55ec..92aa421f9b 100644 --- a/docs/src/components/DropInCallout.astro +++ b/docs/src/components/DropInCallout.astro @@ -8,5 +8,7 @@
  • Share feedback
  • Drop-in sessions are available to Government of Alberta product teams. - Book time in drop-in hours + +
    Book time in drop-in hours + diff --git a/docs/src/components/nav/GetStartedSubMenu.tsx b/docs/src/components/nav/GetStartedSubMenu.tsx index 43c6bb954a..54f56c37d0 100644 --- a/docs/src/components/nav/GetStartedSubMenu.tsx +++ b/docs/src/components/nav/GetStartedSubMenu.tsx @@ -19,6 +19,8 @@ const TOP_PAGES = [ { label: "Starting with the design system", url: "/get-started" }, { label: "Automated accessibility", url: "/get-started/automated-accessibility" }, { label: "Component lifecycle", url: "/get-started/component-lifecycle" }, + { label: "Roadmap", url: "/get-started/roadmap" }, + { label: "Migration guide", url: "/get-started/migration-guide" }, ]; // Grouped sections with sub-pages @@ -47,7 +49,6 @@ const PAGE_GROUPS = [ { label: "Verify a bug", url: "/get-started/developers/bug" }, { label: "Technologies", url: "/get-started/developers/technologies" }, { label: "Supported browsers", url: "/get-started/developers/browsers" }, - { label: "Version update guide", url: "/get-started/developers/update" }, ], }, ]; diff --git a/docs/src/pages/get-started/contribute.astro b/docs/src/pages/get-started/contribute.astro index ae9c95c63e..932d52d805 100644 --- a/docs/src/pages/get-started/contribute.astro +++ b/docs/src/pages/get-started/contribute.astro @@ -32,7 +32,7 @@ import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro 1. Contact the team

    - Book a design system drop-in hours session. + Book a design system drop-in hours session.

    Be prepared to:

      diff --git a/docs/src/pages/get-started/developers/setup.astro b/docs/src/pages/get-started/developers/setup.astro index 5fec479623..3524f407dc 100644 --- a/docs/src/pages/get-started/developers/setup.astro +++ b/docs/src/pages/get-started/developers/setup.astro @@ -2,25 +2,138 @@ /** * Get Started - Developers - Setup * - * Developer setup guide. Content pending from Dustin. - * Content from Confluence (Brief 87). + * Setup instructions for Angular, React, and Web Components. + * Based on the current website content with DS 2.0 token updates. */ -import DropInCallout from '../../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; +import DocumentationPageLayout from "../../../layouts/DocumentationPageLayout.astro"; +import DropInCallout from "../../../components/DropInCallout.astro"; --- - Setup + Developer setup - How to set up the Design System in your project. + Set up the Government of Alberta Design System in Angular, React, or directly with Web + Components. +

      Angular UI components

      - Content for this page is being finalized. Check back soon. + Supported versions: 18, 19, 20, 21 + + This is the web component library and utilizes Angular's web component + integration. + + +

      1. Add dependencies

      +
      npm i @abgov/web-components
      +npm i @abgov/angular-components
      +npm i @abgov/design-tokens
      + +

      2. Link ionicons in app/index.html

      + + Add the following in the head element: + +
      <script type="module" src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.esm.js"></script>
      +<script nomodule src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.js"></script>
      + +

      3. Update src/app/app.module.ts

      + + Update src/app/app.module.ts as per the four steps below: + +
      // 1. Import the CUSTOM_ELEMENTS_SCHEMA
      +import { CUSTOM_ELEMENTS_SCHEMA } from "@angular/core";
      +
      +// 2. Import the libs
      +import "@abgov/web-components";
      +import { AngularComponentsModule } from "@abgov/angular-components";
      +
      +@NgModule({
      +	declarations: [AppComponent],
      +	imports: [
      +		// 3. Add the needed imports
      +		BrowserModule,
      +		AngularComponentsModule,
      +	],
      +	providers: [],
      +	bootstrap: [AppComponent],
      +	// 4. Add the CUSTOM_ELEMENTS_SCHEMA to the NgModule
      +	schemas: [CUSTOM_ELEMENTS_SCHEMA],
      +	})
      +export class AppModule {}
      + +

      4. Add the styles link in src/styles.css

      +
      @import "@abgov/web-components/index.css";
      +@import "@abgov/design-tokens/dist/tokens.css";
      + + + +

      React UI components

      + + Supported versions: 17, 18, 19 + + + This library contains React components which wrap the Government of Alberta Web + Components. + + +

      1. Add dependencies

      +
      npm i @abgov/react-components
      +npm i @abgov/web-components
      +npm i @abgov/design-tokens
      + +

      2. Link ionicons in app/index.html

      + + Add the following to the head element: + +
      <script type="module" src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.esm.js"></script>
      +<script nomodule src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.js"></script>
      + +

      3. Import the web components in src/main.tsx

      +
      import "@abgov/web-components";
      + +

      4. Import the styles in src/index.css

      +
      @import "@abgov/web-components/index.css";
      +@import "@abgov/design-tokens/dist/tokens.css";
      + + + +

      Web components

      + + This library contains web components from the Government of Alberta. + + +

      1. Add dependencies

      +
      npm i @abgov/web-components
      +npm i @abgov/design-tokens
      + +

      2. Link ionicons in index.html

      + + Add the following in the head element: + +
      <script type="module" src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.esm.js"></script>
      +<script nomodule src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.js"></script>
      + +

      3. Import the web components into src/main.js

      +
      import "@abgov/web-components";
      + +

      4. Add the styles link in your main CSS file

      + + Add the following in src/assets/main.css or wherever your main CSS file is + located: + +
      @import "@abgov/web-components/index.css";
      +@import "@abgov/design-tokens/dist/tokens.css";
      + + +
      diff --git a/docs/src/pages/get-started/developers/update.astro b/docs/src/pages/get-started/developers/update.astro deleted file mode 100644 index 133a9ef2a2..0000000000 --- a/docs/src/pages/get-started/developers/update.astro +++ /dev/null @@ -1,26 +0,0 @@ ---- -/** - * Get Started - Developers - Version update guide - * - * Version update guide. Content pending from Dustin. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; ---- - - - Version update guide - - How to update your project to a new Design System version. - - - - Content for this page is being finalized. Check back soon. - - - diff --git a/docs/src/pages/get-started/migration-guide.astro b/docs/src/pages/get-started/migration-guide.astro new file mode 100644 index 0000000000..7aa29380b9 --- /dev/null +++ b/docs/src/pages/get-started/migration-guide.astro @@ -0,0 +1,228 @@ +--- +/** + * Get Started - Developers - Migration guide + * + * Migration pathways and guidance for moving products from DS 1.x to DS 2.0. + * Content adapted from Confluence. + */ +import DocumentationPageLayout from "../../layouts/DocumentationPageLayout.astro"; +--- + + + Migration guide + + Design System 2.0 (DS 2.0) becomes the Government of Alberta standard in March 2026. + New products starting after launch should use DS 2.0. Existing active products should + plan their move to DS 2.0 during the recommended migration window, which runs from + March 2026 to September 2026. + + + + +

      Migration pathways

      + + The right migration path depends on your product's context, including team + funding and capacity, other delivery obligations, product lifecycle, and the effort + required to update. The three pathways are standard migration, late migration, and no + migration. + + +

      Starting a new product

      + + If your product starts after March 2026, start with DS 2.0. Migration pathways apply + to existing products moving from DS 1.x to DS 2.0. + + +

      Compare the pathways

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      PathwayUse it whenRecommendation
      + Standard migration + + + Your product has an active funded team and can migrate by September 2026 + + + Recommended default +
      + Late migration + + + Your team cannot meet the standard window because of delivery timelines, + dependencies, or capacity constraints + + + Only when necessary +
      + No migration + + + Your product does not have an active funded team and/or is not in a + position to upgrade + + + Only in specific cases +
      +
      +
      + +

      + Standard migration + +

      + + Standard migration is the default pathway for active products. + + + Choose this path if your product has an active funded team and can schedule migration + work between March 2026 and September 2026. This is the recommended path for most + teams because it keeps your product aligned with the current standard and gives you + the best support. + + Use this pathway when: + +
        +
      • your product is actively maintained
      • +
      • your team can reserve time to migrate by September 2026
      • +
      • you want access to the latest templates, components, tokens, and guidance
      • +
      +
      + + Plan for work across the product team. Typical upgrade tasks include the library + updates, adjusting spacing and typography, and updating custom code to align with the + DS 2.0 visual design. This is a significant update and will usually involve design, + development, and testing. + + +

      Late migration

      + + Late migration is a last-resort pathway for active products. + + + Choose this path only when delivery deadlines, dependencies, or capacity constraints + make the standard migration window unrealistic. This path gives your team more time, + but it also increases risk and reduces your ongoing support. + + Use this pathway when: + +
        +
      • a major delivery deadline blocks migration work
      • +
      • critical dependencies prevent the upgrade during the standard window
      • +
      • capacity or funding makes the standard window unrealistic
      • +
      +
      + + Delaying migration means your product will wait longer to benefit from DS 2.0 + improvements. Over time, unresolved issues will accumulate and your product will be + inconsistent with the new standard for longer. + + +

      No migration

      + + No migration is an opt-out pathway for specific situations. + + + Choose this path only when your product does not have an active funded team and/or is + not in a position to upgrade. In these cases, the product may remain on DS 1.x. + + + Teams on this path should understand that the product will not receive DS 2.0 + improvements and will not align with the current standard. Support for DS 1.x is + limited from March to September and ends after September 2026. + + + + +

      What changes after launch

      + + After the DS 2.0 launch in March 2026: + + +
        +
      • New products should use DS 2.0
      • +
      • Active products should aim to migrate by September 2026
      • +
      • Web components 1.x receive limited fixes from March to September
      • +
      • + Angular 4.x and React 6.x receive limited fixes or features from March to + September +
      • +
      • Support for DS 1.0 ends after September 2026
      • +
      • Web components will update to a new major version after September 2026
      • +
      +
      + +

      How to choose a pathway

      + + Use these questions to guide your decision: + + +
        +
      • Is this a new product starting after March 2026?
      • +
      • Does the product have an active funded team?
      • +
      • Can the team schedule migration work before September 2026?
      • +
      • + Are there delivery deadlines or dependencies that block the standard window? +
      • +
      • + Is the team prepared to accept reduced support and higher maintenance risk if + migration is delayed? +
      • +
      +
      + + + + Review the setup steps for developers + +
      diff --git a/docs/src/pages/get-started/out-of-support.astro b/docs/src/pages/get-started/out-of-support.astro index 43b2cc9445..c341fa8b9c 100644 --- a/docs/src/pages/get-started/out-of-support.astro +++ b/docs/src/pages/get-started/out-of-support.astro @@ -47,7 +47,7 @@ import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro

      If you need support planning your upgrade, - book time in drop-in hours. + book time in drop-in hours.

      diff --git a/docs/src/pages/get-started/roadmap.astro b/docs/src/pages/get-started/roadmap.astro new file mode 100644 index 0000000000..070656eab6 --- /dev/null +++ b/docs/src/pages/get-started/roadmap.astro @@ -0,0 +1,347 @@ +--- +/** + * Get Started - Roadmap + * + * High-level roadmap for the design system team's 2026-27 fiscal year. + * Content adapted from Confluence. + */ +import DocumentationPageLayout from "../../layouts/DocumentationPageLayout.astro"; +--- + + + Roadmap + + A high-level summary of the work the design system team plans to focus on in the + 2026-27 Fiscal Year. + + + + The roadmap is subject to change as we gather new information. We will communicate + updates to ensure product teams can align and plan their work accordingly. + + + + For more details on our priorities and day-to-day activities, see our + + design system backlog. + + + + + +

      Now

      + + Focus: Drive DS 2.0 adoption momentum, protect post-launch stability, and + prove DS 2.0 helps teams move faster through prescriptive guidance and examples. + + +

      DS 2.0 adoption and satisfaction measurement

      + + Objective: Establish reliable DS 2.0 adoption tracking and reporting, and + pair it with satisfaction signals from designers, developers, and end users to understand + whether DS 2.0 is improving service outcomes as teams upgrade. + + + Benefit: Enables accurate progress reporting and provides evidence that + DS 2.0 is improving usability, accessibility, and experience quality, not only adoption. + + + Examples: + +
        +
      • + Create a mechanism to reliably collect and report adoption rate +
      • +
      • + Track upgrade progress against the adoption schedule +
      • +
      • + Capture qualitative signals from teams (developer and designer feedback themes) +
      • +
      • + Capture end-user feedback where available (citizen or worker satisfaction, + accessibility and usability feedback) +
      • +
      + +

      Product acceleration enablement

      + + Objective: Provide prescriptive guidance and resources that help teams + get to screens, prototypes, and working experiences faster using DS 2.0. + + + Benefit: Reduces time to first screens and improves consistency by helping + teams start from proven patterns instead of building from scratch. + + + Examples: + +
        +
      • + Create resources that show how to quickly prototype with DS 2.0 components and + examples +
      • +
      • + Provide contextual starting points for teams using Public form and Workspace + templates +
      • +
      • + Pilot DS 2.0 with teams to generate strong examples to share +
      • +
      • + Create and publish migration success stories +
      • +
      + +

      Design system MCP

      + + Objective: Stand up the design system Model Context Protocol (MCP) capability + so AI tools and platforms can reliably access design system guidance, components, patterns, + and standards. + + + Benefit: Helps teams generate more consistent, standards-aligned front-ends + by making trusted design system context available directly in AI-assisted workflows. + + + Examples: + +
        +
      • + Define the initial MCP scope and supported design system resources +
      • +
      • + Stand up the MCP server and validate the hosting and maintenance approach +
      • +
      • + Test the MCP use in real product workflows and capture gaps to address +
      • +
      • + Document recommended workflows for teams +
      • +
      + +

      Vue support decision

      + + Objective: Explore and define the minimum work required to confidently + state DS 2.0 officially supports Vue, including scope, constraints, and support model. + + + Benefit: Prevents unclear commitments and reduces strategic risk by enabling + an informed investment decision aligned to organizational needs. + + + Examples: + +
        +
      • + Define what "official Vue support" means +
      • +
      • + Outline the minimum supportable scope +
      • +
      • + Identify implications for documentation, maintenance, testing, and support +
      • +
      + + + +

      Next

      + + Focus: Improve the core Public form and Workspace experience, mature reusable + patterns and examples, reduce adoption friction through better packaging, and execute on + the chosen Vue direction. + + +

      Public form and Workspace capability improvements

      + + Objective: Enhance key Public form and Workspace capabilities based on + adoption needs and workflow requirements. + + + Benefit: Improves feature sets and reduces the need for custom one-off + solutions by making common workflows easier to implement with DS 2.0. + + + Example: + +
        +
      • + Build the review, revise, resubmit feature +
      • +
      + +

      Examples and pattern maturity

      + + Objective: Expand and refine examples and position them as adaptable reusable + patterns that teams can apply with confidence. + + + Benefit: Improves self-serve success and product consistency, reducing + implementation variance and support demand over time. + + + Examples: + +
        +
      • + Continue expanding and refining examples +
      • +
      • + Show how components and examples combine into larger contexts and workflows +
      • +
      + +

      Library packaging and tech stack upgrades

      + + Objective: Reduce friction in how design system assets are bundled and + adopted across libraries and update important tech stacks. + + + Benefit: Lowers setup and upgrade complexity, and keeps the design system + up to date with the latest supported versions. + + + Examples: + +
        +
      • + Improve how code libraries are bundled together (React, web components, tokens) +
      • +
      • + Update to Svelte 5 +
      • +
      + +

      Vue follow-through

      + + Objective: Based on Vue discovery, either implement formal Vue support + or clearly position Angular and React as the recommended approach for teams using AI-assisted + workflows. + + + Benefit: Provides clear direction to product teams and reduces uncertainty, + enabling progress on a supported path while keeping support sustainable for the design system + team. + + + Examples: + +
        +
      • + Publish Vue support guidance and expectations +
      • +
      • + Implement agreed scope if approved +
      • +
      • + Publish recommended alternatives if Vue support is not pursued +
      • +
      + + + +

      Later

      + + Focus: Support DS 2.0 version updates and improve documentation and communications + quality to support scaling and sustainability. + + +

      Documentation and communications improvements

      + + Objective: Improve how teams access and understand design system guidance, + and communicate design system value areas like accessibility more clearly. + + + Benefit: Increases trust, improves reuse, and supports self-serve adoption + by making guidance easier to consume and share. + + + Examples: + +
        +
      • + Add markdown file download to website documentation +
      • +
      • + Articulate accessibility work more clearly (what is covered and how it supports + teams) +
      • +
      + +

      Targeted capacity support for DS 2.0 version updates

      + + Objective: Provide targeted design system team capacity to help remaining + DS 1.x product teams complete the DS 2.0 version update. + + + Benefit: Accelerates adoption progress and unblocks teams facing more difficult + migrations, supporting adoption targets while keeping support sustainable through a focus + on teams most in need. + + + Example: + + +
        +
      • + Focus migration support on late adopters facing systemic barriers to upgrading +
      • +
      +
      From 4758fef19fed84ef85ec14384cf1760fee4eaf89 Mon Sep 17 00:00:00 2001 From: Benji Franck Date: Tue, 17 Mar 2026 14:42:02 -0600 Subject: [PATCH 065/103] fix: add onNavigate to Get Started Sub Menu --- docs/src/components/nav/GetStartedSubMenu.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/src/components/nav/GetStartedSubMenu.tsx b/docs/src/components/nav/GetStartedSubMenu.tsx index 54f56c37d0..bd7e046374 100644 --- a/docs/src/components/nav/GetStartedSubMenu.tsx +++ b/docs/src/components/nav/GetStartedSubMenu.tsx @@ -145,6 +145,9 @@ export function GetStartedSubMenu({ onToggle={onToggle} primaryContent={primaryContent} secondaryContent={} + onNavigate={(path: string) => { + if (path && !path.startsWith("/__")) window.location.href = path; + }} /> ); } From 29416b79fc9d54ff28093690b8bda4a6715455aa Mon Sep 17 00:00:00 2001 From: Benji Franck Date: Tue, 17 Mar 2026 16:45:35 -0600 Subject: [PATCH 066/103] fix: use correct filename in Contribute docs --- docs/src/pages/get-started/contribute.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/pages/get-started/contribute.astro b/docs/src/pages/get-started/contribute.astro index 932d52d805..9e006c5426 100644 --- a/docs/src/pages/get-started/contribute.astro +++ b/docs/src/pages/get-started/contribute.astro @@ -149,7 +149,7 @@ npm run serve:dev:react

      /libs/web-components/src/components

      • Unit tests as *.spec.ts
      • -
      • Component code as *.ts
      • +
      • Component code as *.svelte
      Testing requirements From 205f7a9b3013ed58ca72004f53ae2777ec2c3727 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Fri, 13 Mar 2026 17:26:42 -0600 Subject: [PATCH 067/103] feat(#2469): add push drawer experimental wrappers Add GoabxPushDrawer experimental wrappers for React and Angular with version="2" default. Add version prop to PushDrawer and PushDrawerInternal Svelte components. Add version to standard React wrapper WCProps to avoid TS IntrinsicElements conflict. React: 4 tests, Angular: 1 test. --- .../react.tsx | 6 +- .../web-components.html | 2 +- docs/src/data/configurations/push-drawer.ts | 108 ++++++++++++++++-- .../src/experimental/index.ts | 1 + .../push-drawer/push-drawer.spec.ts | 67 +++++++++++ .../experimental/push-drawer/push-drawer.ts | 73 ++++++++++++ .../src/experimental/index.ts | 1 + .../push-drawer/push-drawer.spec.tsx | 79 +++++++++++++ .../experimental/push-drawer/push-drawer.tsx | 70 ++++++++++++ .../src/lib/push-drawer/push-drawer.tsx | 16 --- .../components/push-drawer/PushDrawer.svelte | 4 + .../push-drawer/PushDrawerInternal.svelte | 10 +- 12 files changed, 398 insertions(+), 39 deletions(-) create mode 100644 libs/angular-components/src/experimental/push-drawer/push-drawer.spec.ts create mode 100644 libs/angular-components/src/experimental/push-drawer/push-drawer.ts create mode 100644 libs/react-components/src/experimental/push-drawer/push-drawer.spec.tsx create mode 100644 libs/react-components/src/experimental/push-drawer/push-drawer.tsx diff --git a/docs/src/content/examples/filter-a-list-using-a-push-drawer/react.tsx b/docs/src/content/examples/filter-a-list-using-a-push-drawer/react.tsx index c26142a8c8..0cab9e542a 100644 --- a/docs/src/content/examples/filter-a-list-using-a-push-drawer/react.tsx +++ b/docs/src/content/examples/filter-a-list-using-a-push-drawer/react.tsx @@ -9,7 +9,7 @@ import { GoabxTable, GoabxBadge, } from "@abgov/react-components/experimental"; -import { GoabPushDrawer } from "@abgov/react-components"; +import { GoabxPushDrawer } from "@abgov/react-components/experimental"; export function FilterAListUsingAPushDrawer() { const [open, setOpen] = useState(false); @@ -94,7 +94,7 @@ export function FilterAListUsingAPushDrawer() {
    - - +
    ); } diff --git a/docs/src/content/examples/filter-a-list-using-a-push-drawer/web-components.html b/docs/src/content/examples/filter-a-list-using-a-push-drawer/web-components.html index 2cccba9c5c..9247dbb934 100644 --- a/docs/src/content/examples/filter-a-list-using-a-push-drawer/web-components.html +++ b/docs/src/content/examples/filter-a-list-using-a-push-drawer/web-components.html @@ -64,7 +64,7 @@

    All cases

    - + + react: ` Applicant name Jane Smith File number @@ -36,8 +36,8 @@ export const pushDrawerConfigurations: ComponentConfigurations = { Submitted January 15, 2025 -`, - angular: ` +`, + angular: ` Applicant name Jane Smith File number @@ -46,7 +46,7 @@ export const pushDrawerConfigurations: ComponentConfigurations = { Submitted January 15, 2025 -`, +`, webComponents: `
    Open push drawer @@ -70,22 +70,22 @@ export const pushDrawerConfigurations: ComponentConfigurations = { name: "Custom width", description: "Push drawer with a custom width", code: { - react: ` + react: ` Officer Const. M. Roberts, Badge #4412 Date February 3, 2025 Notes Applicant provided updated documentation. Reviewed supporting evidence and confirmed eligibility criteria are met. Forwarded to supervisor for final approval. -`, - angular: ` +`, + angular: ` Officer Const. M. Roberts, Badge #4412 Date February 3, 2025 Notes Applicant provided updated documentation. Reviewed supporting evidence and confirmed eligibility criteria are met. Forwarded to supervisor for final approval. -`, +`, webComponents: `
    Open push drawer @@ -107,7 +107,7 @@ export const pushDrawerConfigurations: ComponentConfigurations = { name: "With actions", description: "Push drawer with footer actions", code: { - react: ` -`, - angular: ``, + angular: ` - + @@ -167,6 +167,90 @@ export const pushDrawerConfigurations: ComponentConfigurations = {
    +`, + }, + }, + { + id: "long-content", + name: "Long content", + description: + "Content that exceeds the drawer height scrolls while the header and actions stay pinned", + code: { + react: ` + Export + Close + + } +> + Jan 15, 2025 + Application received. Initial review completed by intake officer. All required documents present. + Feb 3, 2025 + Background check initiated. Applicant contacted for additional verification of employment history. + Feb 18, 2025 + Employment verification received. Forwarded to senior reviewer for assessment. + Mar 1, 2025 + Senior review complete. Recommendation for approval pending supervisor sign-off. + Mar 10, 2025 + Supervisor approved. Final documentation prepared for applicant notification. + Mar 12, 2025 + Approval letter sent to applicant via registered mail. Case marked as complete. +`, + angular: ` + Jan 15, 2025 + Application received. Initial review completed by intake officer. All required documents present. + Feb 3, 2025 + Background check initiated. Applicant contacted for additional verification of employment history. + Feb 18, 2025 + Employment verification received. Forwarded to senior reviewer for assessment. + Mar 1, 2025 + Senior review complete. Recommendation for approval pending supervisor sign-off. + Mar 10, 2025 + Supervisor approved. Final documentation prepared for applicant notification. + Mar 12, 2025 + Approval letter sent to applicant via registered mail. Case marked as complete. + + + + + Export + Close + +`, + webComponents: `
    +
    + Open push drawer +
    + + Jan 15, 2025 + Application received. Initial review completed by intake officer. All required documents present. + Feb 3, 2025 + Background check initiated. Applicant contacted for additional verification of employment history. + Feb 18, 2025 + Employment verification received. Forwarded to senior reviewer for assessment. + Mar 1, 2025 + Senior review complete. Recommendation for approval pending supervisor sign-off. + Mar 10, 2025 + Supervisor approved. Final documentation prepared for applicant notification. + Mar 12, 2025 + Approval letter sent to applicant via registered mail. Case marked as complete. + + Export + Close + + +
    `, }, }, diff --git a/libs/angular-components/src/experimental/index.ts b/libs/angular-components/src/experimental/index.ts index eb9890d599..6322a92ce1 100644 --- a/libs/angular-components/src/experimental/index.ts +++ b/libs/angular-components/src/experimental/index.ts @@ -8,6 +8,7 @@ export * from "./checkbox/checkbox"; export * from "./checkbox-list/checkbox-list"; export * from "./date-picker/date-picker"; export * from "./drawer/drawer"; +export * from "./push-drawer/push-drawer"; export * from "./dropdown/dropdown"; export * from "./dropdown-item/dropdown-item"; export * from "./file-upload-card/file-upload-card"; diff --git a/libs/angular-components/src/experimental/push-drawer/push-drawer.spec.ts b/libs/angular-components/src/experimental/push-drawer/push-drawer.spec.ts new file mode 100644 index 0000000000..46e2c851c9 --- /dev/null +++ b/libs/angular-components/src/experimental/push-drawer/push-drawer.spec.ts @@ -0,0 +1,67 @@ +import { ComponentFixture, TestBed, fakeAsync, tick } from "@angular/core/testing"; +import { GoabxPushDrawer } from "./push-drawer"; +import { Component } from "@angular/core"; + +@Component({ + standalone: true, + imports: [GoabxPushDrawer], + template: ` + + {{ content }} + +

    Heading

    +
    + + + +
    + `, +}) +class TestPushDrawerComponent { + open = false; + width = "600px"; + testId = "test-push-drawer"; + content = "Test Content"; + + onClose() { + /* empty */ + } +} + +describe("GoabxPushDrawer", () => { + let component: TestPushDrawerComponent; + let fixture: ComponentFixture; + + beforeEach(fakeAsync(() => { + TestBed.configureTestingModule({ + imports: [TestPushDrawerComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(TestPushDrawerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + tick(); + fixture.detectChanges(); + })); + + it("renders with correct attributes", fakeAsync(() => { + const pushDrawerElement = fixture.nativeElement.querySelector("goa-push-drawer"); + expect(pushDrawerElement).toBeTruthy(); + + expect(pushDrawerElement.getAttribute("width")).toBe("600px"); + expect(pushDrawerElement.getAttribute("testid")).toBe("test-push-drawer"); + expect(pushDrawerElement.getAttribute("version")).toBe("2"); + const headingContent = pushDrawerElement.querySelector("[slot='heading']"); + expect(headingContent?.textContent).toContain("Heading"); + expect(pushDrawerElement.textContent).toContain("Test Content"); + const actionsContent = pushDrawerElement.querySelector("[slot='actions']"); + expect(actionsContent?.textContent).toContain("Close"); + })); +}); diff --git a/libs/angular-components/src/experimental/push-drawer/push-drawer.ts b/libs/angular-components/src/experimental/push-drawer/push-drawer.ts new file mode 100644 index 0000000000..09724551de --- /dev/null +++ b/libs/angular-components/src/experimental/push-drawer/push-drawer.ts @@ -0,0 +1,73 @@ +import { NgTemplateOutlet } from "@angular/common"; +import { + booleanAttribute, + Component, + CUSTOM_ELEMENTS_SCHEMA, + EventEmitter, + Input, + Output, + TemplateRef, + OnInit, + ChangeDetectorRef, +} from "@angular/core"; + +@Component({ + standalone: true, + selector: "goabx-push-drawer", + imports: [NgTemplateOutlet], + template: `@if (isReady) { + + +
    + +
    + @if (actions) { +
    + +
    + } +
    + } `, + schemas: [CUSTOM_ELEMENTS_SCHEMA], +}) +export class GoabxPushDrawer implements OnInit { + version = "2"; + + @Input({ transform: booleanAttribute }) open?: boolean; + @Input() heading!: string | TemplateRef; + @Input() width?: string; + @Input() testId?: string; + @Input() actions!: TemplateRef; + @Output() onClose = new EventEmitter(); + + isReady = false; + + constructor(private cdr: ChangeDetectorRef) {} + + ngOnInit(): void { + setTimeout(() => { + this.isReady = true; + this.cdr.detectChanges(); + }, 0); + } + + _onClose() { + this.onClose.emit(); + } + + getHeadingAsString(): string { + return this.heading instanceof TemplateRef ? "" : this.heading; + } + + getHeadingAsTemplate(): TemplateRef | null { + if (!this.heading) return null; + return this.heading instanceof TemplateRef ? this.heading : null; + } +} diff --git a/libs/react-components/src/experimental/index.ts b/libs/react-components/src/experimental/index.ts index 09b2dde302..dfcb177ce5 100644 --- a/libs/react-components/src/experimental/index.ts +++ b/libs/react-components/src/experimental/index.ts @@ -8,6 +8,7 @@ export * from "./checkbox/checkbox"; export * from "./checkbox-list/checkbox-list"; export * from "./date-picker/date-picker"; export * from "./drawer/drawer"; +export * from "./push-drawer/push-drawer"; export * from "./dropdown/dropdown"; export * from "./dropdown/dropdown-item"; export * from "./file-upload-card/file-upload-card"; diff --git a/libs/react-components/src/experimental/push-drawer/push-drawer.spec.tsx b/libs/react-components/src/experimental/push-drawer/push-drawer.spec.tsx new file mode 100644 index 0000000000..a1788f182e --- /dev/null +++ b/libs/react-components/src/experimental/push-drawer/push-drawer.spec.tsx @@ -0,0 +1,79 @@ +import { render, waitFor } from "@testing-library/react"; +import { describe, it } from "vitest"; +import GoabxPushDrawer from "./push-drawer"; + +const noop = () => { + /* nothing */ +}; + +describe("GoabxPushDrawer", () => { + it("should render", async () => { + const content = render(The content); + + const el = content.container.querySelector("goa-push-drawer"); + + expect(el?.getAttribute("open")).toBeNull(); + expect(el?.getAttribute("version")).toBe("2"); + }); + + it("should render with properties", async () => { + const content = render( + + The content + , + ); + + const el = content.container.querySelector("goa-push-drawer"); + expect(el).toBeTruthy(); + await waitFor(() => { + expect(el?.getAttribute("open")).not.toBeNull(); + expect(el?.getAttribute("heading")).toBe("The heading"); + expect(el?.getAttribute("width")).toBe("600px"); + expect(el?.getAttribute("testid")).toBe("the testid"); + expect(el?.getAttribute("version")).toBe("2"); + }); + }); + + it("renders with React node heading", async () => { + const headingNode =
    Custom Heading
    ; + const content = render( + + The content + , + ); + + const el = content.container.querySelector("goa-push-drawer"); + expect(el).toBeTruthy(); + await waitFor(() => { + expect(el?.getAttribute("heading")).toBeNull(); + const headingSlot = el?.querySelector('[slot="heading"]'); + expect(headingSlot).toBeTruthy(); + expect(headingSlot?.textContent).toBe("Custom Heading"); + }); + }); + + it("renders with actions", async () => { + const actionsNode = ; + const content = render( + + The content + , + ); + + const el = content.container.querySelector("goa-push-drawer"); + expect(el).toBeTruthy(); + await waitFor(() => { + const actionsSlot = el?.querySelector('[slot="actions"]'); + expect(actionsSlot).toBeTruthy(); + const actionButton = actionsSlot?.querySelector("button"); + expect(actionButton).toBeTruthy(); + expect(actionButton?.textContent).toBe("Action Button"); + }); + }); +}); diff --git a/libs/react-components/src/experimental/push-drawer/push-drawer.tsx b/libs/react-components/src/experimental/push-drawer/push-drawer.tsx new file mode 100644 index 0000000000..00a0b24103 --- /dev/null +++ b/libs/react-components/src/experimental/push-drawer/push-drawer.tsx @@ -0,0 +1,70 @@ +import { ReactNode, useEffect, useRef, type JSX } from "react"; + +interface WCProps { + open?: boolean; + heading?: string; + width?: string; + testid?: string; + version?: string; + ref: React.RefObject; +} + +declare module "react" { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace JSX { + interface IntrinsicElements { + "goa-push-drawer": WCProps & React.HTMLAttributes; + } + } +} + +export interface GoabxPushDrawerProps { + open?: boolean; + heading?: string | ReactNode; + width?: string; + testId?: string; + actions?: ReactNode; + children: ReactNode; + onClose: () => void; + version?: string; +} + +export function GoabxPushDrawer({ + open, + heading, + width, + testId, + actions, + children, + onClose, + version = "2", +}: GoabxPushDrawerProps): JSX.Element { + const el = useRef(null); + + useEffect(() => { + if (!el?.current || !onClose) { + return; + } + el.current?.addEventListener("_close", onClose); + return () => { + el.current?.removeEventListener("_close", onClose); + }; + }, [el, onClose]); + + return ( + + {heading && typeof heading !== "string" &&
    {heading}
    } + {actions &&
    {actions}
    } + {children} +
    + ); +} + +export default GoabxPushDrawer; diff --git a/libs/react-components/src/lib/push-drawer/push-drawer.tsx b/libs/react-components/src/lib/push-drawer/push-drawer.tsx index e8d3a117f4..9830ed58c8 100644 --- a/libs/react-components/src/lib/push-drawer/push-drawer.tsx +++ b/libs/react-components/src/lib/push-drawer/push-drawer.tsx @@ -1,21 +1,5 @@ import { ReactNode, useEffect, useRef } from "react"; -interface WCProps { - open?: boolean; - testid?: string; - heading?: string; - width?: string; - ref: React.RefObject; -} -declare module "react" { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace JSX { - interface IntrinsicElements { - "goa-push-drawer": WCProps & React.HTMLAttributes; - } - } -} - export interface GoabPushDrawerProps { testid?: string; open?: boolean; diff --git a/libs/web-components/src/components/push-drawer/PushDrawer.svelte b/libs/web-components/src/components/push-drawer/PushDrawer.svelte index 6d548a092e..18ac3647a1 100644 --- a/libs/web-components/src/components/push-drawer/PushDrawer.svelte +++ b/libs/web-components/src/components/push-drawer/PushDrawer.svelte @@ -6,6 +6,7 @@ open: { type: "Boolean", reflect: true }, heading: { type: "String", reflect: true }, width: { type: "String", reflect: true }, + version: { type: "String", reflect: true }, }, }} /> @@ -17,6 +18,7 @@ export let open: boolean = false; export let heading: string = ""; export let width: string = "492px"; + export let version: string | undefined = undefined; // Minimum window width for desktop layout from vite.config.js const minimumDesktopWidth = 1023; @@ -40,6 +42,7 @@ position="right" maxsize={width} {heading} + {version} > @@ -53,6 +56,7 @@ {open} {width} {heading} + {version} > diff --git a/libs/web-components/src/components/push-drawer/PushDrawerInternal.svelte b/libs/web-components/src/components/push-drawer/PushDrawerInternal.svelte index 36586aa138..dca33a324e 100644 --- a/libs/web-components/src/components/push-drawer/PushDrawerInternal.svelte +++ b/libs/web-components/src/components/push-drawer/PushDrawerInternal.svelte @@ -6,6 +6,7 @@ open: { type: "Boolean", reflect: true }, heading: { type: "String", reflect: true }, width: { type: "String", reflect: true }, + version: { type: "String", attribute: "version", reflect: true }, }, }} /> @@ -19,6 +20,7 @@ export let open: boolean = false; export let heading: string = ""; export let width: string = "492px"; + export let version: string | undefined = undefined; let _contentEl: HTMLElement | null = null; let drawerState: DrawerState = "initial"; let closingTimeout: number | null = null; @@ -63,21 +65,15 @@ }; // Scrolling --- - let _scrollEl: HTMLElement | null = null; - let _scrollPos: "top" | "middle" | "bottom" | null = null; // to add the box-shadow to the drawer content + let _scrollPos: "top" | "middle" | "bottom" | null = null; let _actionsSlotHasContent: boolean = false; async function checkActionsSlotContent() { await tick(); _actionsSlotHasContent = !!$$slots.actions; } - // Add reactive statement for checking actions slot content (for class style and height calculations) and scroll position (for box-shadow) $: if (open) { checkActionsSlotContent(); - if (_scrollEl) { - const hasScroll = _scrollEl.scrollHeight > _scrollEl.offsetHeight; - _scrollPos = hasScroll ? "top" : null; - } } function onScroll(e: Event) { From 3e694b3491cdcda024da88be39d348ff9e6a2bc1 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Tue, 17 Mar 2026 11:51:12 -0600 Subject: [PATCH 068/103] feat(#3596): add preview images to example grid cards Playwright-based screenshot script generates preview images for all 81 examples. Cards now show actual rendered previews instead of grey placeholders. Includes manual screenshots for interactive examples (modals, drawers, notifications) and team documentation in ARCHITECTURE.md. Also updates card badges to use one color per dimension (lilac for scale, sunset for category, sky for user type, grey for tags) with color swatches in the filter drawer. Co-authored-by: Benji Franck --- docs/ARCHITECTURE.md | 47 +++- docs/package.json | 1 + .../{Examples => examples}/Menu/Logo.png | Bin .../Menu/Rectangle 146703.svg | 0 .../images/examples/add-a-filter-chip.webp | Bin 0 -> 4382 bytes .../examples/add-a-record-using-a-drawer.webp | Bin 0 -> 39082 bytes .../add-and-edit-lots-of-filters.webp | Bin 0 -> 35780 bytes .../examples/add-another-item-in-a-modal.webp | Bin 0 -> 22450 bytes ...er-question-with-a-maximum-word-count.webp | Bin 0 -> 11508 bytes .../examples/ask-a-user-for-a-birthday.webp | Bin 0 -> 8720 bytes .../examples/ask-a-user-for-an-address.webp | Bin 0 -> 24160 bytes ...ser-for-an-indian-registration-number.webp | Bin 0 -> 11658 bytes ...a-user-for-direct-deposit-information.webp | Bin 0 -> 43012 bytes .../ask-a-user-for-dollar-amounts.webp | Bin 0 -> 9400 bytes .../ask-a-user-one-question-at-a-time.webp | Bin 0 -> 22706 bytes .../images/examples/basic-page-layout.webp | Bin 0 -> 8182 bytes .../images/examples/button-with-icon.webp | Bin 0 -> 6628 bytes docs/public/images/examples/card-grid.webp | Bin 0 -> 99340 bytes .../examples/card-view-of-case-files.webp | Bin 0 -> 27632 bytes .../communicate-a-future-service-outage.webp | Bin 0 -> 23834 bytes .../images/examples/confirm-a-change.webp | Bin 0 -> 29758 bytes .../confirm-a-destructive-action.webp | Bin 0 -> 32410 bytes .../confirm-before-navigating-away.webp | Bin 0 -> 30010 bytes ...irm-that-an-application-was-submitted.webp | Bin 0 -> 63672 bytes .../images/examples/copy-to-clipboard.webp | Bin 0 -> 4638 bytes ...disabled-button-with-a-required-field.webp | Bin 0 -> 5082 bytes ...a-table-so-they-can-be-scanned-easily.webp | Bin 0 -> 14520 bytes .../examples/display-user-information.webp | Bin 0 -> 36310 bytes ...ically-add-an-item-to-a-dropdown-list.webp | Bin 0 -> 17428 bytes ...cally-change-items-in-a-dropdown-list.webp | Bin 0 -> 12138 bytes .../expand-or-collapse-part-of-a-form.webp | Bin 0 -> 11870 bytes .../filter-a-list-using-a-push-drawer.webp | Bin 0 -> 50302 bytes .../examples/filter-data-in-a-table.webp | Bin 0 -> 33576 bytes ...rm-stepper-with-controlled-navigation.webp | Bin 0 -> 15572 bytes ...-information-before-asking-a-question.webp | Bin 0 -> 71438 bytes ...-before-asking-a-long-answer-question.webp | Bin 0 -> 41866 bytes ...questions-together-on-a-question-page.webp | Bin 0 -> 27556 bytes .../examples/header-with-navigation.webp | Bin 0 -> 8522 bytes .../examples/hero-banner-with-actions.webp | Bin 0 -> 25858 bytes ...and-show-many-sections-of-information.webp | Bin 0 -> 27596 bytes ...-link-in-the-helper-text-of-an-option.webp | Bin 0 -> 10156 bytes ...riptions-for-items-in-a-checkbox-list.webp | Bin 0 -> 17930 bytes ...-user-to-give-feedback-to-the-service.webp | Bin 0 -> 6250 bytes .../examples/link-to-an-external-page.webp | Bin 0 -> 2694 bytes docs/public/images/examples/public-form.webp | Bin 0 -> 73328 bytes .../public/images/examples/question-page.webp | Bin 0 -> 20316 bytes .../images/examples/remove-a-filter.webp | Bin 0 -> 3920 bytes ...require-user-action-before-continuing.webp | Bin 0 -> 32766 bytes .../examples/reset-date-picker-field.webp | Bin 0 -> 8116 bytes docs/public/images/examples/result-page.webp | Bin 0 -> 68290 bytes .../reveal-input-based-on-a-selection.webp | Bin 0 -> 18416 bytes .../images/examples/review-and-action.webp | Bin 0 -> 71354 bytes docs/public/images/examples/review-page.webp | Bin 0 -> 78656 bytes docs/public/images/examples/search.webp | Bin 0 -> 3118 bytes ...ct-one-or-more-from-a-list-of-options.webp | Bin 0 -> 10066 bytes .../set-a-max-width-on-a-long-radio-item.webp | Bin 0 -> 13500 bytes .../set-a-specific-tab-to-be-active.webp | Bin 0 -> 19944 bytes ...-the-status-of-step-on-a-form-stepper.webp | Bin 0 -> 15456 bytes .../show-a-label-on-an-icon-only-button.webp | Bin 0 -> 2358 bytes ...show-a-list-to-help-answer-a-question.webp | Bin 0 -> 18608 bytes .../show-a-notification-with-an-action.webp | Bin 0 -> 37630 bytes .../images/examples/show-a-notification.webp | Bin 0 -> 33788 bytes ...ow-a-section-title-on-a-question-page.webp | Bin 0 -> 15832 bytes ...question-page-with-multiple-questions.webp | Bin 0 -> 22820 bytes ...progress-indicator-on-a-question-page.webp | Bin 0 -> 15584 bytes ...ser-progress-when-the-time-is-unknown.webp | Bin 0 -> 42020 bytes .../images/examples/show-a-user-progress.webp | Bin 0 -> 37606 bytes ...ow-different-views-of-data-in-a-table.webp | Bin 0 -> 24744 bytes .../examples/show-full-date-in-a-tooltip.webp | Bin 0 -> 9598 bytes .../show-links-to-navigation-items.webp | Bin 0 -> 38720 bytes ...information-to-help-answer-a-question.webp | Bin 0 -> 22984 bytes ...w-multiple-actions-in-a-compact-table.webp | Bin 0 -> 31368 bytes .../examples/show-multiple-tags-together.webp | Bin 0 -> 5650 bytes .../show-number-of-results-per-page.webp | Bin 0 -> 30120 bytes .../images/examples/show-quick-links.webp | Bin 0 -> 13860 bytes .../examples/show-status-in-a-table.webp | Bin 0 -> 52434 bytes .../examples/show-status-on-a-card.webp | Bin 0 -> 4604 bytes .../images/examples/show-version-number.webp | Bin 0 -> 7702 bytes .../slotted-error-text-in-a-form-item.webp | Bin 0 -> 5746 bytes .../slotted-helper-text-in-a-form-item.webp | Bin 0 -> 4450 bytes .../images/examples/sort-data-in-a-table.webp | Bin 0 -> 11844 bytes docs/public/images/examples/start-page.webp | Bin 0 -> 118798 bytes .../images/examples/task-list-page.webp | Bin 0 -> 59228 bytes .../examples/type-to-create-a-new-filter.webp | Bin 0 -> 4614 bytes .../examples/warn-a-user-of-a-deadline.webp | Bin 0 -> 45368 bytes docs/src/components/ExamplesGrid.tsx | 124 +++++++-- .../examples/add-a-filter-chip/index.mdx | 2 + .../add-a-record-using-a-drawer/index.mdx | 2 + .../add-and-edit-lots-of-filters/index.mdx | 2 + .../add-another-item-in-a-modal/index.mdx | 2 + .../index.mdx | 2 + .../ask-a-user-for-a-birthday/index.mdx | 2 + .../ask-a-user-for-an-address/index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../ask-a-user-for-dollar-amounts/index.mdx | 2 + .../index.mdx | 2 + .../examples/basic-page-layout/index.mdx | 1 + .../examples/button-with-icon/index.mdx | 1 + docs/src/content/examples/card-grid/index.mdx | 2 + .../card-view-of-case-files/index.mdx | 2 + .../index.mdx | 2 + .../examples/confirm-a-change/index.mdx | 2 + .../confirm-a-destructive-action/index.mdx | 2 + .../confirm-before-navigating-away/index.mdx | 2 + .../index.mdx | 2 + .../examples/copy-to-clipboard/index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../display-user-information/index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 1 + .../examples/filter-data-in-a-table/index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../examples/header-with-navigation/index.mdx | 1 + .../hero-banner-with-actions/index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../link-to-an-external-page/index.mdx | 2 + .../content/examples/public-form/index.mdx | 2 + .../content/examples/question-page/index.mdx | 2 + .../examples/remove-a-filter/index.mdx | 2 + .../index.mdx | 2 + .../reset-date-picker-field/index.mdx | 2 + .../content/examples/result-page/index.mdx | 2 + .../index.mdx | 2 + .../examples/review-and-action/index.mdx | 2 + .../content/examples/review-page/index.mdx | 2 + docs/src/content/examples/search/index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../set-a-specific-tab-to-be-active/index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../examples/show-a-notification/index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../examples/show-a-user-progress/index.mdx | 2 + .../index.mdx | 2 + .../show-full-date-in-a-tooltip/index.mdx | 2 + .../show-links-to-navigation-items/index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../show-multiple-tags-together/index.mdx | 2 + .../show-number-of-results-per-page/index.mdx | 2 + .../examples/show-quick-links/index.mdx | 2 + .../examples/show-status-in-a-table/index.mdx | 2 + .../examples/show-status-on-a-card/index.mdx | 2 + .../examples/show-version-number/index.mdx | 2 + .../index.mdx | 2 + .../index.mdx | 2 + .../examples/sort-data-in-a-table/index.mdx | 2 + .../src/content/examples/start-page/index.mdx | 2 + .../content/examples/task-list-page/index.mdx | 2 + .../type-to-create-a-new-filter/index.mdx | 2 + .../warn-a-user-of-a-deadline/index.mdx | 2 + docs/src/scripts/generate-preview-images.ts | 256 ++++++++++++++++++ 168 files changed, 552 insertions(+), 34 deletions(-) rename docs/public/images/{Examples => examples}/Menu/Logo.png (100%) rename docs/public/images/{Examples => examples}/Menu/Rectangle 146703.svg (100%) create mode 100644 docs/public/images/examples/add-a-filter-chip.webp create mode 100644 docs/public/images/examples/add-a-record-using-a-drawer.webp create mode 100644 docs/public/images/examples/add-and-edit-lots-of-filters.webp create mode 100644 docs/public/images/examples/add-another-item-in-a-modal.webp create mode 100644 docs/public/images/examples/ask-a-long-answer-question-with-a-maximum-word-count.webp create mode 100644 docs/public/images/examples/ask-a-user-for-a-birthday.webp create mode 100644 docs/public/images/examples/ask-a-user-for-an-address.webp create mode 100644 docs/public/images/examples/ask-a-user-for-an-indian-registration-number.webp create mode 100644 docs/public/images/examples/ask-a-user-for-direct-deposit-information.webp create mode 100644 docs/public/images/examples/ask-a-user-for-dollar-amounts.webp create mode 100644 docs/public/images/examples/ask-a-user-one-question-at-a-time.webp create mode 100644 docs/public/images/examples/basic-page-layout.webp create mode 100644 docs/public/images/examples/button-with-icon.webp create mode 100644 docs/public/images/examples/card-grid.webp create mode 100644 docs/public/images/examples/card-view-of-case-files.webp create mode 100644 docs/public/images/examples/communicate-a-future-service-outage.webp create mode 100644 docs/public/images/examples/confirm-a-change.webp create mode 100644 docs/public/images/examples/confirm-a-destructive-action.webp create mode 100644 docs/public/images/examples/confirm-before-navigating-away.webp create mode 100644 docs/public/images/examples/confirm-that-an-application-was-submitted.webp create mode 100644 docs/public/images/examples/copy-to-clipboard.webp create mode 100644 docs/public/images/examples/disabled-button-with-a-required-field.webp create mode 100644 docs/public/images/examples/display-numbers-in-a-table-so-they-can-be-scanned-easily.webp create mode 100644 docs/public/images/examples/display-user-information.webp create mode 100644 docs/public/images/examples/dynamically-add-an-item-to-a-dropdown-list.webp create mode 100644 docs/public/images/examples/dynamically-change-items-in-a-dropdown-list.webp create mode 100644 docs/public/images/examples/expand-or-collapse-part-of-a-form.webp create mode 100644 docs/public/images/examples/filter-a-list-using-a-push-drawer.webp create mode 100644 docs/public/images/examples/filter-data-in-a-table.webp create mode 100644 docs/public/images/examples/form-stepper-with-controlled-navigation.webp create mode 100644 docs/public/images/examples/give-background-information-before-asking-a-question.webp create mode 100644 docs/public/images/examples/give-context-before-asking-a-long-answer-question.webp create mode 100644 docs/public/images/examples/group-related-questions-together-on-a-question-page.webp create mode 100644 docs/public/images/examples/header-with-navigation.webp create mode 100644 docs/public/images/examples/hero-banner-with-actions.webp create mode 100644 docs/public/images/examples/hide-and-show-many-sections-of-information.webp create mode 100644 docs/public/images/examples/include-a-link-in-the-helper-text-of-an-option.webp create mode 100644 docs/public/images/examples/include-descriptions-for-items-in-a-checkbox-list.webp create mode 100644 docs/public/images/examples/link-the-user-to-give-feedback-to-the-service.webp create mode 100644 docs/public/images/examples/link-to-an-external-page.webp create mode 100644 docs/public/images/examples/public-form.webp create mode 100644 docs/public/images/examples/question-page.webp create mode 100644 docs/public/images/examples/remove-a-filter.webp create mode 100644 docs/public/images/examples/require-user-action-before-continuing.webp create mode 100644 docs/public/images/examples/reset-date-picker-field.webp create mode 100644 docs/public/images/examples/result-page.webp create mode 100644 docs/public/images/examples/reveal-input-based-on-a-selection.webp create mode 100644 docs/public/images/examples/review-and-action.webp create mode 100644 docs/public/images/examples/review-page.webp create mode 100644 docs/public/images/examples/search.webp create mode 100644 docs/public/images/examples/select-one-or-more-from-a-list-of-options.webp create mode 100644 docs/public/images/examples/set-a-max-width-on-a-long-radio-item.webp create mode 100644 docs/public/images/examples/set-a-specific-tab-to-be-active.webp create mode 100644 docs/public/images/examples/set-the-status-of-step-on-a-form-stepper.webp create mode 100644 docs/public/images/examples/show-a-label-on-an-icon-only-button.webp create mode 100644 docs/public/images/examples/show-a-list-to-help-answer-a-question.webp create mode 100644 docs/public/images/examples/show-a-notification-with-an-action.webp create mode 100644 docs/public/images/examples/show-a-notification.webp create mode 100644 docs/public/images/examples/show-a-section-title-on-a-question-page.webp create mode 100644 docs/public/images/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions.webp create mode 100644 docs/public/images/examples/show-a-simple-progress-indicator-on-a-question-page.webp create mode 100644 docs/public/images/examples/show-a-user-progress-when-the-time-is-unknown.webp create mode 100644 docs/public/images/examples/show-a-user-progress.webp create mode 100644 docs/public/images/examples/show-different-views-of-data-in-a-table.webp create mode 100644 docs/public/images/examples/show-full-date-in-a-tooltip.webp create mode 100644 docs/public/images/examples/show-links-to-navigation-items.webp create mode 100644 docs/public/images/examples/show-more-information-to-help-answer-a-question.webp create mode 100644 docs/public/images/examples/show-multiple-actions-in-a-compact-table.webp create mode 100644 docs/public/images/examples/show-multiple-tags-together.webp create mode 100644 docs/public/images/examples/show-number-of-results-per-page.webp create mode 100644 docs/public/images/examples/show-quick-links.webp create mode 100644 docs/public/images/examples/show-status-in-a-table.webp create mode 100644 docs/public/images/examples/show-status-on-a-card.webp create mode 100644 docs/public/images/examples/show-version-number.webp create mode 100644 docs/public/images/examples/slotted-error-text-in-a-form-item.webp create mode 100644 docs/public/images/examples/slotted-helper-text-in-a-form-item.webp create mode 100644 docs/public/images/examples/sort-data-in-a-table.webp create mode 100644 docs/public/images/examples/start-page.webp create mode 100644 docs/public/images/examples/task-list-page.webp create mode 100644 docs/public/images/examples/type-to-create-a-new-filter.webp create mode 100644 docs/public/images/examples/warn-a-user-of-a-deadline.webp create mode 100644 docs/src/scripts/generate-preview-images.ts diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index ab9c2630a2..7b6fb25281 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -245,9 +245,28 @@ One guidance atom can apply to multiple components — just list them all in `ap - `angular.html` + `angular.ts` — Angular template and component - `web-components.html` — Web components HTML 4. List the component slugs in the `components` array — this links the example to those component pages +5. Generate a preview image (see below) All three framework files are optional, but at least one is needed. +### Generate example preview images + +Preview images show a screenshot of each example in the grid cards. To generate them: + +```bash +cd ui-components/docs + +# Generate for all examples (skips manually-provided ones) +npm run generate-previews -- --url http://localhost:4203 + +# Generate for a specific example +npm run generate-previews -- --url http://localhost:4203 my-example-slug +``` + +This requires the dev server to be running (`npm run dev`). Images are saved as WebP to `public/images/examples/`. Add `previewImage: /images/examples/my-example.webp` to the example's frontmatter. + +**For modals, drawers, or notifications:** the script can't capture these well automatically. Take a manual screenshot (1280x800 viewport), save it as a PNG in `public/images/examples/`, update the frontmatter path to `.png`, and add the slug to the `SKIP_EXAMPLES` list in `src/scripts/generate-preview-images.ts`. + ### Update a configuration preview Edit the relevant file in `src/data/configurations/.ts`. Each configuration has an `id`, `name`, and `code` with React/Angular/Web Components snippets. @@ -260,20 +279,20 @@ Place an SVG in `docs/public/thumbnails/.svg`. The components grid referen ## Key files reference -| What | Where | -| ----------------------- | ------------------------------------------------ | -| Astro config | `docs/astro.config.mjs` | -| Content schemas | `docs/src/content/config.ts` | -| Component page template | `docs/src/pages/components/[slug].astro` | -| Example page template | `docs/src/pages/examples/[slug].astro` | -| Content query helpers | `docs/src/lib/content-queries.ts` | -| Example code loader | `docs/src/lib/example-code.ts` | -| API extraction script | `docs/src/scripts/extract-api.ts` | -| Configuration registry | `docs/src/data/configurations/index.ts` | -| Configuration types | `docs/src/data/configurations/types.ts` | -| JSX workarounds | `docs/src/global.d.ts` | -| Layouts | `docs/src/layouts/` | -| Generated API JSON | `docs/generated/component-apis/` | +| What | Where | +| ----------------------- | ---------------------------------------- | +| Astro config | `docs/astro.config.mjs` | +| Content schemas | `docs/src/content/config.ts` | +| Component page template | `docs/src/pages/components/[slug].astro` | +| Example page template | `docs/src/pages/examples/[slug].astro` | +| Content query helpers | `docs/src/lib/content-queries.ts` | +| Example code loader | `docs/src/lib/example-code.ts` | +| API extraction script | `docs/src/scripts/extract-api.ts` | +| Configuration registry | `docs/src/data/configurations/index.ts` | +| Configuration types | `docs/src/data/configurations/types.ts` | +| JSX workarounds | `docs/src/global.d.ts` | +| Layouts | `docs/src/layouts/` | +| Generated API JSON | `docs/generated/component-apis/` | --- diff --git a/docs/package.json b/docs/package.json index 809fd0a8a5..ab321bbd10 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,6 +9,7 @@ "build:search-index": "npx tsx src/scripts/build-search-index.ts", "extract-api": "npx tsx src/scripts/extract-api.ts --all", "preview": "astro preview", + "generate-previews": "npx tsx src/scripts/generate-preview-images.ts", "astro": "astro" }, "dependencies": { diff --git a/docs/public/images/Examples/Menu/Logo.png b/docs/public/images/examples/Menu/Logo.png similarity index 100% rename from docs/public/images/Examples/Menu/Logo.png rename to docs/public/images/examples/Menu/Logo.png diff --git a/docs/public/images/Examples/Menu/Rectangle 146703.svg b/docs/public/images/examples/Menu/Rectangle 146703.svg similarity index 100% rename from docs/public/images/Examples/Menu/Rectangle 146703.svg rename to docs/public/images/examples/Menu/Rectangle 146703.svg diff --git a/docs/public/images/examples/add-a-filter-chip.webp b/docs/public/images/examples/add-a-filter-chip.webp new file mode 100644 index 0000000000000000000000000000000000000000..9b1179f46cc99fe565c80cad253537eea9bef574 GIT binary patch literal 4382 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 literal 0 HcmV?d00001 diff --git a/docs/public/images/examples/add-a-record-using-a-drawer.webp b/docs/public/images/examples/add-a-record-using-a-drawer.webp new file mode 100644 index 0000000000000000000000000000000000000000..544401a9c2eaa28c77c3a9a3afa2f5d3bacffa6a GIT binary patch literal 39082 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 JKiI$k004Bu7%Tt) literal 0 HcmV?d00001 diff --git a/docs/public/images/examples/add-and-edit-lots-of-filters.webp b/docs/public/images/examples/add-and-edit-lots-of-filters.webp new file mode 100644 index 0000000000000000000000000000000000000000..1124fd9998ba82197148d21d8faa432ebe5cb9cf GIT binary patch literal 35780 zcmZ^IW0+>ix@@_s%eHOXwr$(CZC96V+cvt)?y_yWZtt1BXJ(&s&-ZKP_pE2FT$%Ak z#2cw7Au8Gx1puHXA}Fsa&yHXB`&!-^I2(|X5^M#SH(NSihNOt7EI+Xv10E^D!uIRR z+LML|NRqt?Gm2mBaOPeA3$5$B$|K)B_o+u5E=j=$U1F~s$Ng97sotAk85zeHgI-%s zmEVJ(W%t^b-2=cE;7955=;Gd6>4)Ff=f2+r_d8FTU+35H{jal~6S>pUXTHm?7T$MW zi#NHKt1G_N+>H-`+thQvoiBU7Auso@{?D-CurfcbFS`%D3cX3+&JnDYC7wMaP`+jF%eCJRXcB_0xe#!6U zPx~)3Z+gc(vL8+#YM*-ccqe@8d{|ejmLXpN?agJ8;JRZX~ee$1j&3*p&p#8ob z$EtVq#F2BwFD~l4q<&sv8aZ(ZKi*o%(8Wc9L3KqT7@1`PXGr zWt3(0d&-GcqXqT{t(fN3&8v27^VZ%!-!Q-LQuBpZJa(pYmm12PAOQU(!>f9}+IGfT z!#P#4vf4WYpx|9Sm%Gn3)5Lps0oU~=bj3US_K(3Fk(>+5SYn2E^{-}!WgBgmSxj?Z zSWuAUegP7Cc?oG`M5X^8aA55eWYbDL@6}tVX>RKvmEp|9KL7E)%GgHBy{grimQ{Uv zP=-9|+&WEnPqc+iAvfH==JfA-+R=p$hibYJi((=$Bjl+1y*o5`=GH(L2TyS>@ylMT z-FK6`8^CmylL3y>|6IL*SR6d%Z3?*MczRhBi%~U+Vy{9&#!U7aTY%KO=UI| zhCIe&7;v+-+XAFm!ht5Wx*NPkDuGI^{k(z5tNa1jRT%i-$LNd)4}4Dfi=YQ>T532vK*`2T>- z8!BPh1oT#d)R$t|o8$sx7z;+=qJD04~NuI8iuvTtO4--iVj|+011Vq*u6mL z%t9~ud#cMdbeSGne{BAr$g7NP6&jEmcH&YxTo)3K{(e1^+C&`rq*V@d{9`_hL%MHs zC$Op@Bc9>7wtt|FQFtP#y5amAB@ds6th;+?D$5~7(|R|;#w3~HsX9HfL5s-epwPI^ z(pQpUpx_8h6a<5ZW~4;Hb}zYw{+ctZ)B2RI?Q%c)JE|2?!;WmVa480S-B=BKG)izI z3xG@6jygqRe7A6_?Q*G<0!i)m1$x-N&k6=#LG#CJ=s#B5m95DQjXhrb5*R@9#1+)@ zcM1ImuE-w2%WDyFo_L7mp@B2@(v|!@9_K{Z6fK4rg2?-B2!6+c>|Z(Wg-z~2Jy|Wo zssF4quHIlx(7qR>P)%la5BKFzkwGt#d<8uwNUOP|TDej;aC5l69Rs43v5mq=pD(~L zPlpQ1V|vCOKT5-88M=^TSA)7TJ%c!oz|*Ba3iLNP%&h*yK~8!Ur4#=R%1&y$G%vfi zS+!kmz=$+docQY2b1AVo+l^&365Bt&sJwKh9!#dl@B7Mh_7l^qd&T%x>g`+IV&Qn3-=GW~+)S!vDgU(g$yG1gKbuN~bpXWE0YMQ6`%(|df} z|Jv~A>^V2dcDFmphte!>S(qQ|aF{<GhP<0Sa5DR zvdG^40+rO+nd`R&vWv3UW%Kc@x$zC9GLT~A!Q`@`X`EE>kp&;#c}bY#*I%KU3O(L0 z*7JfhzltjJ#$%!s;RlmclembRas^Vl#D8v7B3RNW`K2r|RNO;dT(|TrHO!8L2IDn2 z&;N1=M(6Ag(vsXQk(T0xAfr+2S6uRJ=?8iRa|y@JS4{a( zY{54}VkJTlYZ0uu*WDFkfgZvzr96DabeDxy`zj05Kozg@Nn9No?W2km&b@JZtV3`@ zzq?3?ic|TMLUdv-a0k66cg=d}@`-5>WB@WYNzd$aE>56`o(F>z0RP&X>jIv4j+@mI z(FWiU1Oy2x4t=^brP75jj z^=Rd?`z!u=#Ed`?hoGO7gn>!ckF|I?ls>%(UW2wc<;gjsL?r{7HM4i2o${rBT`44iE0`PaKg^i+P!Tq2ssU>j3Doj(C~N zosC@b+t&X{AWpqMLK?q?y1Ymjbp){IelVlk}upmH5!u%A}89*PlwO+PbG4%T^ zKHKGmd#qt!GVuLUJD2>S8sT6=^Vz_@8FVk^F%Q#+VxJ4Q`*2_t_<_ z(gm##NF&pkKfJ;Y-QPmV;P1Wsj~$b}+R=7rt#QZ@3`qNB$=5*4Qxz|{?hB5=;y_(1*DsBf{GuutCiDQ=lv zY?UjjKP+*Kc1WoV;+Tfl~2T?F{IK z7m6{Lx#|2_pYOh@MAdH3|Jys;6dai+VXMK7V)+dsKm85cSm0MsfeI*-D4z zINfQE@NwR;IGT@sM*WjS?6#aPvBii-ZGmI+R=#Ba@c`x>;4w}pceVJH!-jKSCFQ;$ zUC4Hk-{VvG0%X27&gPHH7-WppTyT-#6Cedw(?w;UP#Eu z_VE)vGg6J}Gh_>_MNh%o%jb8_VS>L!H!7$uSM%wm;?HAqLrNx#mmn>9UM#b!!#H)+ z;PV_9G7~`rFdKeno5YO#PBm7_8XBZK1OfCn2Sq+;)Ie}{%%c8nQ-5nio78I6fOZUj ze3c3cYY!C1I_i==s#6;^Vk^bvU#PuwdvQb%iABp$vcmTXuRnCVIPQXX0m0uD93yeV ziD98!KeKpY(WUKe!aZiNEFk<8`nTO%iaJ5jKp(RGKVbJ~Q#h{XgmhHJf#(dl?yqb<3HUI8Yf7himWyz0>8o`w1ZBw;y4Hpg~UsGdz4(>`kyNqQ~rH~1_ z1}6x{DL6T zVzD8K(vm5^c{~hgO)Gdjy!$DR<*PYatHay-W+9sVtRX)>c4nL)(tE`n-K4C zd~Dgh6rPv)<*!bwQf-x~jQ*+WUuNY0B)b!b1_zj{ufBiutu{83%Vo~bb{MV`TRr{F zMj-f?{s!4ZtEjhGr<5wK+sIPrgq#HWF7A@&8;5D2xr@zN3jl46u|zFv&gz3@8QJ>) zP80r2?C;I66~t02QmfolcZolJSgpbbtAVNURZI-uD!_aHUH5!&nZ7{1qCP?SypZRy zq6C>NoIT%+!)dT)o$pl;>6sKpwtBRHmTX(PXycfX=*}b{_&%Z;X$V{zzkB9ssd0=h zcl2BwYvXozDBk04?{{i($c(;7(Z;$8`_6C_;+2<0#?3+CWCWPUWC+4!vWljI;Q82@ z4bB_j>w0|1RWr=p>q_MTG$aa}Dozb60+=kmf-DR^J3RnZZb#k-fK0LRtWHq=1%AC?2fdJzL>NBcNiJ$}?0;vk@m|u1J z$%ZB?S1m>97O5(J2cc4NTj@N&r=Lp`yals{SmB^>&x|N1`t4Qdo zyGZHjAL8joi?<>yZg>>^aGpbE>X*k>QaEx#<-6Fm_*BxSkB{8;lgsVN8(Tw$ae-}x z&xL?t&7U(Wt_KmFf=d`0i$oYt*ug{|BrkXD-^SJBF`Gp4N6f50p6*E)upJ6d{uT7d zX4gtuKF6JmGBM=m7!x!$M#}VXKz6w^Pb8QqGt|KhoyIR*Y^u<)d;Nb$OAc564m=2x zj;H@t^4|u++$S*YTmK85=7Ffcr`qyDQ3-@d?I<-0 ztzu|K%l002HRlP_PdUnvH9gCrItwJzbeZ5^`YZdzGS`rKYo)ULasQR4&C$8y1yc;B zF}`4n5k^y}^3N>Wt9O>L$Pe#k_pAx$t7KWaB3+lW)MCt3Ty-QjaC}pIw)Ohk=1(s_ z7y(I2EkQ!FDZg|us>k~83tT{GC&78wlp6sAtAeG>{oEhM0XFEuc@O(b^nd3;&YRK4 z>z&q^eNq5LcrevMY$y{Uc>Fe{Kk}qqbd46d(yo$<(F?{U?DRQV7nA`KzBP7-bH}6b zs!F-f{T=K{{-}#9fdC1J9TPq6rMkrdnEmW0Cp3i;xUF8&i*|Z>rX#kvE+oY>|4EY8 zYmW~vXU^An_wwJVgQYV~DD%6Niw)|3K63mVi6?t_0sYJX-AC~Yf6g!d4oWNG|AbAb)LVIr<_y}AnQ z$6EjJf2#cu@Ra!uZPbI6TlE^Q2={$o>;VP4MV0x*e080Tv-$8TS1&$y5oLTr@Si8l zq=swwbA@x9v!9mMOo?ZT5B1H~fodW)y5IMbz~dA=FEcy?B_A>1zzDrY4-y1o6zQMZ zo-F_$Y0{i9s7@*qu;r_~RYM=;h4Re)GPi8sCI!AGVw+q4)ybh8i2WH>kn;=iZvE1h zhHc3vp_ju{R&SKApq&^0b^$nHjn7T+nLKz9(S2siC{pkX^q~Bi0r;^A-QfBYb*y~w z!&5txjR}pm1t`dcBAOP%=7)0wHv#VKle#L&KCrn3=G$(I7eqsyWRsg>G^i*Afb`#C zq2tpkyrk@TBTt+dRGijydtX>(;!wdATzy^XT0>s#)p#h`7h=nw^5Uu_m|8({f~a_w zv8`r534>Jg^ulU`O;k>Wj_P>Ff!2yzP84(rhMWzuC@B)P>-+0;p8fP)1ET3n7>T?2 zZwUIrl7@f~Y=%_Tb^i@akJ00ql=hbyXRzp~61ALZ)G;ncwH--+eVZJ2(VGxh26zdC z_!DvXG=RuQaA%O$_)^<{aLRA^6zHDwK`7Hb!&oGH^5Dja70w;so{<`LJ!i5+{jgqD z?>x#VcKAa;xwMv|zfq7O_BTOW_eCT$)UdFN7M|)tqkK@1sQo)(`A_oc__Q^^0OmFg zlv@+wvFIJ-$zmYVHZrz$&Pb!RLeN;u|9#je<-@DJ%J0~!r51+}!UNJ0{vwk%EfydL zZ(u6@6OObD_rO5^zb=1<@E#S zph^tb{FG8;UHCn@H8!qCBtO{t-NC{`{Aku;9*Nyq}0xW{fto|ZYofZFlSY;#d~t7d`WqgU3&&HbK$CCQT|reQ|7vk;S?!gX9|yBk(d2ldb4tT zyzMVjaSJZ*Oy0#e8LVJ}Y2-v}9W4Wg{Ar}yzu&;EjZH+{4q`Q`_gzK=Mu>dHyCX`b zQ};p#i{;mH-l7<2^n+$cAy~6(7MCP&@FMY$r)-)>T3}dODl4L$ja%c!C+(9_2+!{m z38m%-LkbS)bpCA0-{&0Co%@3Covh8aBTqj56ej}ljDNu6{x?pd*&NX*V62N+GLsh$ zY^MhFFc1H|)&+l@cievit7_(ZLGJ`+)vLCRAM^`UgW~8BkT*QjlsDU~Wj0L`cx zZlkj3jsu3?xnS*6w{3yDX&-?p9Q0IK;@ej4KYY3M-HjxIYzq1NbOhn{pxc|2$-!ay z*q!~q6$#1X;<{VSud7-%WXOGMd3293A{#p-r9YwX7@`-esS@WH$w_-|ocDsINaC;T z1=KD^)wIhW;Pc}H06d4Y(velBk_DS6jM7eawNYV!-Ld5U;-7!a;CK)Npru57VSP33 zn+yvr4zpp2B@a=aX?&Xnj_|i-K+3{;$G~R6v_t_wWO}-Tq01HYtCzw;oo_v0EMF1r zcJy%Az=Yg7N-QNY(J^MZhEG!cRpsVwW-^^H)}f_ad*Z*QQ|9|!YqY8^DBUp-06lE7 z!L=Tmz@3=M_w};L`peve)fO((?{t*53;>WydB0-Hh8aa8xk+~$8*@$I=xr>tw!t3r z?j8?^xcCXF8d4*eaovx5B=^~+&Ayseqw)yxZEKPVR2&Vq=dqJRu}{RK!L+rg`d8|U z+Xx$=TAp#l17ZA&`ji9*vW@_2{D+pb;(?+|>~M|@fAk_un@+EHM|v%8rjVH62HV7-r9%F(UYs}=dX)^0Q+s$~@kw@{2O(n1`)_AH#*IPOj&dU*cP=R9+! z+-AoHs&&01kzt0kY@fk)(N-0N$mz)gyG8vB&xNaLPCCdBa>KJ>gnC6G0UVVzpcw4X z)&Q_!BfHFN7w46Z1HuR?o!(UvOhc~Q|E z&Ar4df9xO!X#my!OhI}Lh{?}rJ`h8P!?GOJ+|%vGlizW+0xCWtF3f0$KT!pZHtzzpl!wL8!T z_e%glA{$dDCZe_fQ5`h~XR)P7p4lw& z^GXEUSxc`*@+*Z@ZaBMn*D^44u|^!gHy`4vY`Jay3J@oL24SplCK5i$D}z?GgYt=E zf((@C4!tPfXhDh5sQ)T02!4DAe0}Nxf)eVrKDFrQDW(sT3FTmg|tJ0eb zcI447*)%5byFJAD+tH#zH5tYl81t0LdsY0iEv&;EYNY*^i4DJ6P-5~^n3iE$TkqGr zlsDMDTGMi9aSMxR*M>Xe1nK}sMmxTK&28m^0aZ$otuL=(_+P3I8#kaP)bItT<1Ir)TCp z2w|C<*p0UPLxiXEL#&i|UkKstG& zcsMe77W3tLpsAn%k4cYyAIHpd(Nu_;%Yy(Nk$wdSqGqcc3ge=*MLRhjLpS>8dj&zV z-ora<((&h%VC8r$=NY!7s^^FX<&k_F4R>(Fp6c`KEQ`I$zrraHVzx#0U$1ful??!j z-C*TX;aEwcpQ76{?mguw*OZ-dTR2bmM&IY&mi(rc)}WuK2YKFDQ$019ueNs2I;T6< zcCUKAxjkF0y;3rjY~eGLEzvwQYgT~wn>(OaHE{{f7`=m5xh3tECP-=(rVot#q#L&t z1Z&L^+~Mt|SjyI??#aN+I$Hjy1RIGb@^sA9luAbQi^xoSfzBQI-i<)_# zBrbw=+N3`YN^-<(B)`;6TmB{HTOnmO;O23q`F?XH#}&^XXw+|W`AqAOCT&JnAxsrt zFh@#?$DFwbP<7$WQOB@Ur1s1#O|aNVq~1 zq==v<^mD=rKJ~MzR$3=pTo@1av=9EV9!^JheUt!+@RNr$_YCfiEo)(|`cpcG8FK?V zTe;lI>BE9^XtQ;5s6D(UMqA>9Nn6LptI-2CQpnwZyHH3r&`es-}B(Xsmb{#z&(8#m23^N0vLOYO!)ZL!x6~@LH1E` z$ERDvwA}TNQd%Si2I_t|0iH13Q zNoJji)p$4=O$*2~4*&olG9ZO6oX3sn+mN;&305eqh40+ZRs3?=-8TRnGrQF+t^y1v zYfLSO3EHs*hD)_kFF5Y71r~zNZ{md%_$i{s54TmmE+-UNqM-Vv+cH?@5or(9L#~XH z$#%=ZW1=!I-54UD=aXwVv0&4D%FJA#UG_-0Zh!SE8z`l9-MidZgS3WsN#68%Al0fh zUE9;f7$5yeyeBKm?TR}=W5?)1d=Vqn)iEVZjcl`Ho5kT(;5PH7ToGlTf23@a_j~@B zv^-;)^ysi~NgwZ@)5X#^#RJ9H;i5SEb_w2AZrd~6!W#_KIzM6(Y`fuy*|WdYgSm2f z*0D`0+CIZDR|U2P6CzREvZh-i*xDGFU(9IS`@>%YLRfhBSpfA9lU)$2*dAa*WuY*3 zt!*QQ0s?ne#F2f-y|)}EoNI3>sDe*Ox>&Og^r~)ldPl#r^kb1=SV{syI9#xZ4>c}1 zu{k+kI_GAj0Qj8|*wXa)0k#uor21FirQG02!sif7p#=xH?xAPUu3H*Gq=}s?1iB<|%*>Fkr);sjH)nI~x5lL6urhG`CYn1?4s5pK2*5zHuCATM7N?s-o&S>yR zm!napO(5^dsdW{u5ObhKv?mXCT>4EE?Dyj<^Q$4=b$3}`v$)spiZjMbP9`6d6y^sY zZPeA@b94?aGtMsPdbzn$mgLf2nS%x z#G(*t?q#SG@N$5xUBEj-=|7^3La@&$psQY{X^px+Bg5b@U|9nJ$%E%?<{X|U(*XgT zceJ6XpJl?7-<9+b+k~C&%mL~#_dS3cc;cjjr4}IptG+9=YnW`RuWB^8N?DmbJ~4M# zn=ked_%%O(jOgiiNo0xXV#=$c-#sYT(=Vl>ERWYXr+;_Oq6;x3M^oHt+bNA`&~5~U zzp+WkVmy(7vjh@00<{faeQbT_!S$()45bkDOAb;iZtS)Lc7T?KU*#2M|$4+)&e-xo&V8)u+docd{Dkv##zK1)zPufZRc!ho=f!I4*b zXF<}$(GV?0RdPu44uc*cNQ4ckB%27etCA`d5i9dz$|Ql!$q)8)P98@_qvg^o%IQjM#=~}= zaRl-qyKfv{ajkv+rzh+t~OeNI{4+uF2K8u%TLpv^; zAWD?b4NMYW@e1QR{#N2zRnmLCp@T~4AvmX8+@|7AFuFsymRczM_!0j1Q3i7v{8 zObyjmGI>aB%QGIUL6l!>(+>&Dw&0mA%4@YT3W!q}A!3()ox10m{>BE2yn7_?qQouN zfCni_RHX$kdsaruviqa(@>Om;(Od#?z-hv6TV1E!8w3FJIqsQk6>|5xcm{-CWvBtR z$#(7m77^J!sthK|mVLz=KdQ3ets>e%e>W^fW`i#};m(a2bFBMHx6k*I4_Ca?USE8F zOBR2YF7!l#Fkvhjced5r!a|?xX#YWYMd@RD+2aXm@z_jN3o|Q#nZZgZ#+n)Jm`Scg zsaT2{2qnyIMQDaF$%O@c2oAoQuY`Wy`NZ)I%t4#^U0_5w{o7MJ&PDlmz|O#lC^*^{ zMz+a0t+SU|C5$r4**90cC7W(&rt)LPDvIsO;tITLR!8(LHL!vMzH@x4Ob+Fdi7>^F z$Fp}!L9_G5ysTDOhAL6uAyBeUq6li0`BOHljeUR4)Ry)e-0`zGH~mj~xOsJQXLCHO zUb&g1Janqt3bCjaK}_WgmS&1+e|>g=p*NtLCbLzYVG{f6;Wu?kvo}>t2>Bvy&LfJ= zp8>}HW8t{GGbptf0f4bd<%#$ zz;<7T%`2{WBC$i^xe%ye6}VC_6OOU$BRj2DX#*h-8|gF|5HdW!EuByIj~4QR_<~XiuRtCJZ_qOZ(yx=znq`Ard|{LrLC=#i3|O^iM)1!P2peKL8bp*#`X94pKH;)CU} z)V|3k#h|u({-Ta=uX%E;;>)zBlOwYwFnKgTbGFG@F4*h1Vv2VQfdw3>mpcPIC^y_@1e8u1?%tPgI zZuj$3Y)+m73_1Fs^>n{S39>Gjb~qa)#AORenW#_XWLntW59P`$;rgWDSrlH>vgRKJ z%De&e0G^bG~!{v=f@cCpZ)4bRHiilI0tjb^%32U}B1dA_57pRM){53l&gYL13H?Hz5c z`z51dE5B*&IRF5P37UK7*7Q5{niT6>3dC#y9w_Vwtng9g-sjP}kC0M~7!pQjeW~3D zE@JDQxloqMte-WEEv32Zp4xUeS6WLCu}^6ZFliRCU;rg|{SW|OqJI!N=h2oa^O~N< z+nXbu%!IyyQ8qJyTK`C8d)_HUm~y-x4*xZH&pAW@(r<@Hx^k623PpVhH(pz-HjIVa z?NwEBVE|YZi+_4>b?jR|*6M(F%db#Xn^;9&or~?W3@}^_>y74;h#TTjuR%U9bkeh^T|Y*&$Zl?v+}2T)oV=&v*_eg7>!qq4V$o1&NEEB$M{w^=Uv|wn2FNM2ij_6{ zvt+}FS~7vUq4$lbo7Dux{(HLM{xcIFv%!-r9N~7JA(sNN+>v_;ba5oU> z9SK7AZzsE9Sl=(l7#RIh^_}0qs~jH$6qMa$N;rZ+P- zUghBuPn1~_uuH<)1rP%h5$qcAs{jH|bHJJEZz-_qtLaIcv8oM5jm3*|Qh%`{ynGQn z*uSUE&EsuzK8A-7=!FWkftXah6r*^OqDcmmG%BDV;S(FA4D*O)DDX*FtdOobifJ)? zZb!$~SzYQ-<(}DsXz%TCZv0I9A&$d&3qxY!bMy|St161V5}QjVk|atLr~MRmUeP3K zZfd8{Y{5oq`VK8w(!#G_#r#E;&SB&cvN6ZPC^GsU)AJg--U8^i|M-Tm=BY|Tav$w? z8tOM{7sdgRzEm6^5vbzcoWTB>=9qTWn=L8oyklDF#Hd1!PU+v5Z_~iN#&+?H>qa;1 zUf}1z>Z{sbt&A*#1T8?==En?t1TQ#maiubA=p07i6DoS>Qr>W^{KQHDltVlNA)0qT zni6J#U@o)yy;-7!1g3g6azF3T2K23CX)@mwa7HJ9!D4nIcDf*YA_8TG7PU&(H+X>P zfKHI3FDlEMOsf+K!veTeSD>h>w(BdvYGP~<^JZcHxWT*|i>DFK3O;trjpDH(XbYD5 z3(wdf0~?44BnSU|M3-@4`&OT@I*qBVqYZ?@Ww)v7&PB-T#_FC+m4B%^IigB-% z#-kqOesmg@VqaKE8YBSlc2XzO=g}&!1=#sE7N>@&%Bt}udhaNcLgPxWCRN}<=)AXL zX}@CGHSjHDiniY}7}(KS8uvz0dgd5uXNDMLT#` z4U9yA0x3B8`?ND$EGbH2*P}({uXx3!LkQ^Qx<#C>@bRjB=*(XUv>3&cJH?8#*05XU z(IhWF3fLZ;K#cELn09;>t0AL;#nPp@#d3}Sjhu{eX#!P7fNvcTsdy7*5P#V{=L|Ir znWVFcu3ua&WH#b1&F!4X7$-#{_9BV=bc3>cmRAl$5-zHNU*yPn(ZBQMYVlmQF_0!>vXI&?>7ih(Kz*i5x7mL%m0VOQDifK!}+~8!uPEFdpnqfLL z9G|pq75@W*E$eWh4qU1yiDwhT5014vc#^!A#>rzmgpR(bTlLi2Rog#B<%dv-DpT~T zwm;JqtCAPYHs1SQHl5Y|b6IhWJwOY}paPnr|n=r>Q)+ znqKbQjwET`8a-J0F-zdHBtHliAV|kZpoj6OTUjfF5>=kj@y@1XD>2#-tHSQ2!)pwY zUWjVkJF)tE4w`0~W9}-iJvn~jy%0tE5ie6gQJONw?fw)RYV8VZlymEmV0mZGuW z$xvUK)F`zC40xNe--t~v=EILnm4|Z5LyxMXWf%*MC%=^8Lewkq4MCQg{`vYvpR(6ek8?0Lm|a47qCtHq@LfK3ze4`|T69;jwYZ1r zrr$Ubxn~J6wge&Jr7!ld5Kxo@2A)=^5kePRn%sB~Dk9*}0nHCTP<43t`WPhIok|@n zztYGdR(PkGMN{r+DY+v=zQ5ZrP7 zkTG}@yaMxjVYn90{Eiu4wnNL?T+GkEU^e7ioCM;x3h=Ly;o02-`Ad0m6~7W znZ6&+{k-^qbpm&N>i2DCbw$XZsIMzeU4N8Lzi411o)H2WI2vQ7&hjhY>^r>d&2Aq7 z8f=E#qIuWFWOwQ{`+8p(OJr;-ap7@ceOAh2aj3=Dl_uzi0OO+u&C$V-8w+(b3k4g) zQPUsT7z)TPe03vT4M|ezF%Ev{`LrUKu8wKm}* z^vE1p+Eibdra@IZT}1iYps>+p=};br4P_Z|I&^^!pN{M0yDO!Q*HF~A6%}ec8Oqk) zye;r|X*iqIi%N*`HkU?Bn>1~b{OFiTfN7Cf(RM{3+%UFw6IopTtdj|eLIKIg@ zngtgCD|dh7bb3K(JqCwE&pZvD0+G4kj94_2`D74#={1(cR7K+mI}k7jf*P~vE%NS3 ziwqfV0$O>`aCX~;GWDWU*GNgZIaLuNx|9jrj%fGW^O|>lJLM$Mqe^P zZ-YOeSf=z>u(GL?>Do#d%Ucd(b^nYZ$J+TR8KlWzr*@vh>2lU6gBp>3^lT*?RIl?% z`fA%FD|~fL*8R_FqHo^SMjE-98)sWXCb%&MS>$G)_NOUQ+wf_`juj4I`Y7aTh*Rz7 zF=j^fsBhHyD>hPZJv5K8aoU(JU}I~L`ufDbhO9iyN?nsySNdclK0F1ob@OBl?^ppL z4`mp0v2P7(y@<>UF-gy6lz&kaD2lJjRV`wi0;dTF3@;ZfpaP(K;ViRIQBhC1uDV+C zhPI1u7<57OW&Ko9ZuY0G%wECgpRn{o;}r)xa8GOG0Tmm9q&C6&H0(77$&<}xqqw@ajed3I5 zTT(>a1zp(@BxR*8JmKR?-#>fql2=u%97tD9MlWIA;r{LBI$8~!A z9X>EJ@$%7EN|5FDjjcZ=2>3z5g+d-!PMdWbzF0`BOrC_tFcXSbbg;XgrC4_F34kkh z@@GQkioDkvS*M}l5Uflc-lVvoNvf;?ZF!*$fmHU&SsnNM$>$w{dYdAs(felL zcx^cDd>?;4qLJCixTjk7IluJ=$!E01Wwa@Ia>qhw{2_%P;-TZwyMY zZR_gHvAgNxH}ZYH5F_JQDdfRLrHC0SCwUh`-TpDKkD|-8PNYbUX4f6H3h| zb9AhlhENMtna#=+(+l0ti-UdM4uayAyY1P_A?K@HW1J$n*Nuc>imBx{KC<1rh>m4P z8N5;KeP1qKy)#?PLhZ5|VU$9-z}X48Ov}#uD{Lv$sUtop+tb-hP$9U!c!q)e%@9n( z70>s9Z+B9r$y;cv7T59ERbbvT%VxKmPAa<2t#AaY;CfA5WXbn-DX1ucyXgMY#J(&2 zAi0eAF0@fb&e$7v*2hmiJchjtY@PO!KOO%IWnG+k&{=fx;Ccjkv8vE{i$}Q`!jckn z%6W{60Jfs4xJRq-c%RELg%W_W69B@y(}9(3K8@x*2z==7&Qg(^zu0y}C~qf8pS2x> zU9h*1uXWI+&E=S@#l_5OO((2I?Fwnkb#C-vFAN-lbA9kx+q!@ACl?i!*Xr-{t2TPZ zxwk`KP(hF%A-}W*L;GWHlO&v` zQ}h*wtYv`8jM_&X#1%5)LfH@^@$?wu8X#1gBA}N&`(=hEwNFkgsfggy3B0PvqU}ND zH<1WdlGP=f4jitp!`I)Hif$uIk}5uCinVD$&jXON3i@7z@h?(mD2r3Zb<6pQH&+&R z$)4B{vI$DGTjG7?@D}`T56Q$#XLz-#&!JF)fk0D$0Q+X5*fr5RZ92zd{FZ@plHno_ zr@?9*P+TVOy&%Y7bSN{Hzdn0u>@09>uf`K+qtO>=%&=|Ly<&A6!GejUZ@D#d1G^2k zVd^huufR9$6rCl-z6lc$-8C$)!xqSIej}0Z%Tv&(0|ZL3iw1G)HXr6i0RWIGH68fchag6|J{BwJFQ#VqJrD{R^CND~qe<0er~XP3Nxq_Zlr^daGd9Ln^S2=+Phsz*;UWr`P`=vCxUuLhipw|39prPOwjcHug-8*v|(r26kL}d19;CD|}W|ivbN|YzN z97SNqizu*f3pAN3_430{o=h^mA#l$o6!##!S>Ml~DHQZvT*fbTcJUkJW~Pfajdy~) z%HTp~g+f-nZkSfQKN>=3VJX!gaDfI7T zXzKwNT>7%@aR9TKUz+P_CF@esKb7BZ2Yr-TFj4RnJ`%=86RErOr1Tm%9^T@~c?pg4;~nj_*k2t91{!=^FYFf`!h%7A`S zaj3>QT7Nl;snk6O?OlztT7rS8?8Qt;4?KLk%6}H-RL<@T1X2{l5i&X*g8TMi`{IB? zCKBs624;XB@hC*?$ild3rc$XwTc1#=X|?|{pPXPwn5FBYx7+L9pX(+-3$-fLC~~cJ z!G&&8BBGpY7pywpctQmy4suNskK1{L)J$b!5Rpc(6y#BqJqeI!wMR8_l2P`}qn$QY zm6*d`>6BS~$5X^1tG2XpiknGJ=zvd3&%eXkg6bBUP;`~i)F-KEcYIMFAJ9(;>IeFK z@15z8EHtfC8yfuci+j=)8|{N35xu{-{T`SX_;6`&b_>wB1bI@KDr@M9P$!jgv!l7z zC~fdG*Y+9!ut`Its0#+3|6Xg%8=k~26f_Ne($+*$SyQJ3O!Jqvh6p|Du=v-H5FFr) zl?iw+KC9!X18ujbA!P}yM(M^O%c=`FGW}=3%2Br~u|@(^^k+G46Xy5nKricGYr}jP z74!@~G`3}vIl%g}BzCw|NwxVwu~7Cy8>y4>yZ02iO-iVDUgwolNj{k>!lr2&ytxZk z*&K(@Iisg+JvRF|y3~9tLY~y^|A}qhYsPX@Wm1zLda)F2zuUNib~H${bG&47V07HzY+iw$!q(U;O#gUx zwH)j%3&RlQJGJbijri$haX?erQfos}SoY9)2mb+A3VBQ?6lLl%E796gsrR?2$S*-r z)#9OQHvy{Q)>eM*l|mFwwhCPyBHyYtXjkF*ejz} z!DNGzHm@O5tt1`#j>;p&I+K`#ZBEu|+K12k!`SKrxZznnCfqlphUkpRUGB3=nl7mo zv}XRRRO-IoQxQoEZ>gTj+<+RmT~%wAwdcMnW0ia{uV44|WMz*={n-3fHVnq$j+a`W zzq0a9_SI|40NA9?Wh0I`KdteOD}qWw=9AhnvU4M8>-O>HjWv<$*5MeZ^}^9x-G|DF!mJdtuM51oBqnM*1A3SKKL9d7&A)tD!py8S zCerMI31N4KY)?^CFI;j4YhFb;D)RVl6pQ@`@Y8qLT3^;s-J*?qaJs|SQE7{hM}eWB#pa-p!k(8)S3c8f(k^T#0Xq@d~oMj zpRiZ1zM`RA?TZE~i_!);@}U^;M-VGFkU*e4#c-cUp7ZKmPvrN}99|oyVWiA>S#!N? zk0M>M+o_5#&tlVJm_4cz!Ska=AwItu()aQ3#4vu7c7F+t&=e48Z9thW0;vp@rwD z=(9M_7rb8Jo~{ja>6H4)an(3R zw}+N497iZHsk0h5d{^|BqFDlcaHQrgWCnfn1a20~x`&}nrWtFjJOP$3q&uaPmrWOL~ORS!nY4|8OZ93*Fw{D!$j+-rlOIns4(d zUooQie!Ut@+SLi`fs?8(XEO|3$F#`pQw+K&x^oLtYlNLhwx{GinKXUrpwAm{Yo<1R zMUZ7ipAS}PgC9*K=!ijfAXgm81{`8ELn$)lw><6Ny(z<@iE20(=|5O1*8(cFkS8XJ zj@YG$^TvfD92{&SPLVseLYByTmj?2X1^Gc3B(Tvb<1Vvq$1XDD)P!~hP7&`m_D+=r zqqgB>Z6mlhN|=&tB3^zy9dd|*<9`z`6=c4Rd>+;zVXzyWI84dH-%95?H=iD1ZkR@@ zGd$CcC^uzJ(@q^7RyzKPNaD_>N%oElmh^pQ!OQG#kx*W;5UUsqT^mWVyko(}D?}xK zo}d5;3d5nWFo>!mHT7rE=ZNt%Li)k&5Po-`j2&!FL93rRsak(SQ4@sm~RJEL@p!EA#Rw3h^1+yX8d=Nr7gsuYZH4y06y5SB) zTK<l!5X#)4I5gt#+%%s&%~cHe)`(g%-0-Ot)4NFh7YQe2s9J1m3+ zBHL)gfjj*HpOWBm!o4m4VuJPRNsca}lpr;GDAcI`v-^pp;}jxxXhZ=g`pf4aE3fabhN2vS~6-nf9 zYLp{8GOVriHl2jkTBMh^A)Zx``$Dqk;eZ-wnkxv>%FxN$vgB0br|WJ~67 z2k8zk#w?N z;fZ4q-%@{EBf$YkH|!w|V4>;=@{S;Sn6XH#91|pS=*&ez-mNn$ep@ys#Gta6fOli3 z%v0s)^SarTt~_tWj27G~0!VBO-qSd66_b+)WcVsdW~?T_i035|?nxKP zShqd&ju+=t)+lw_kqLE6UjJp+u?wXz#)^jBmA?Qh!zXiQUs^wiu+UMV3J;pm7k*>e z%a?^w1e_UltwKyX<|+DdxbYuh(`EzRA8qI<+>=w?Imh$$UjfxKCoEi3w~ycbOjWp< zHZZD@f|3@gUf#DC0{*e-B~|7yYGck=dmG;LZp@8Dx5QM}RJKsydS0@iON~hW^iQ`M z`wNkERCw#HGGD(`x+;c{n?E~*w>TUTg5^qDm7dJ9uS1>X@oK9!6^riKC&VEa;vDaB zF>|X%=11a#tQQEL*{-nV>fJh1FkvXQ6(hs|{WtvZVs) z1g3WLa~MRHze7zX;93T)K{WB_rUb*nk@r}BF4$JwAiA!gj`*wt*f56Y=bANzhHT$) zxrgs$iPl`$b(;n^jos`MhPylAEPVrd=qb;_nfkgyG&?Rwd)PLo1E_A^Lxw1X3J;d7 zMrA7+Bl47p2zx$AFXvxC=F5#MC;-5O<)!zM;Klu+`5?LD0dUAB0G#eA%?8L&c_D{< zaU~~H?9Qo}QpkErZ;Nao!<#zYa*@X0F~ZZ0V@P$-`;SIEH*|sFL?R+h=LWywv2h>5 zM&B^MU*hSo#oUexjl(=0aHND7vZp}TF*t5yMT0)T{kyG6i*C+k64{w5iPvEDQNk2o z9;>vZJvoD!tHgpo>ZZLdXE@Y-hh)7%z4Tnpw(bw61PKwBD>nkcL~lA$6+ecGXvgVh zfucsb!_B>nDh;J&l8U_OT6D-jZcKpM>}x{!(KOPKQu)rYa2jYy%OEi|SF912fF$VU z#GJwj*@@(t1;%aGQqv(rNNjf4cZ7n0p_%PYjwTfBMVwQKS>NzUx&OZRc;W*$Oj|r} zO4nG<L-6!z4fZn@2jSUa~wtB#Fw*B^owbR)oHOx3Am(qPp20vjeQ)xmJxeijgk= zPwyl{M|6QQrss^GTR6wfV5F;vg$IeT*zGBRHR@3__soyWAR0@3G37kL_g%PS;3cZENCvHFQ=vViWKxs#xo7iLgb}dy62LNS+8bs z1hc~i3yi&y)PFPIZZ~&{^D@fgvf?*dH{6wY%)=xYV=#1x|3E2S!!s5|pMC#6O6y`) z;$@T=uO`iy@Ae-6LuZQ85}{FpB2mSX8BRNzi9ov|%L!sCu>XNvsLA8Rxsr7%!_Zn+ zs{v|R2BNj)*lk&&vQY~HTXue!Qa+`*}rl?$V9pWGy0nAo05AT28>vGO;uTWu7y{SDt z)Ogg$!bKONzgt5_zKM6RMwQ-gV&3;4v$D^Y7;$Ud8}o^#zj+CoTitf*yyV}|DWhx6M5O3~T z3NK*CK5JCmD%h+vl+QgUe4V>O#9hMVByZG;16uj2w$B!wi;s^sf1RlIPyPCvj0I^pPN5L8+;)#3$pFp2$c`v##nNs$x+Xd= z{VFGg$b~*vzNNQu>KfP&@?srW0o)PMh-G>=69(R)2XiH^s~WOkAN#s2qVlj1UQm7;XN?W%reY0RgDlYIlDYaxZjb#ebOD*BBkf@hJO zV_+voJ?!xkJuSG{Hb*9h38jBnFA)7sm3t^cbPDF|Q`jZ{-pg3GuguG9LSr7m;1Bvt z4KS}~Z7-0O3?oWr9}qI&#aChz5~9yylI!B$aY|DUe@%z9Kcb6ZW?h>Ent9{pJy0$d zsH(bMp00dn!R^ebWtdt+*ikBBjd@csRg1 zB9%$bIE;2g8u1{VKu)_TvV88~*ra0Pil<4khK6|{l@NJ`1II&l%|vbKF>SmQJXp^V zK2Af5|A$M`8&5m#z37(9M>0V%4jy|Xfjvn=EyGXeK3nmJXH((i{z`*H7p9iDG82Tv zT{d{+#PdF2ka0TCC;KSU1wFyLk8}W8!M=oEU@N9RST^aR^9k3y`o(2b9jMarL0&9Z zOR(>|`wLQ3dJX%BRyZ`a-bH3ejqqfW5Xz!kPp#xm*bFcxnkfZ&=bwc3dG)XWM?~V~ zm1Li{@uDq7sv$Vh+@q^Ehygd?dcLQ}nSIJOUe`Be4cjp~l~qU?dO{QuJ+T7EG*3p$EPd&HDMsoW0VX zUFH{t>E2>nPpP*?x0o{a&jL_)ZTjD0 z7@a6cy{FIA^+t7ogxBntjGLv(?gay$(te%?4W-R%>4uSIk^mi+EI`P!S+S-vC^+&~4Nou*5Gd9d`z~gYh&e7E}dC)0k-MJfU z>c=s)76;cRNRGnTHnHcw93lEP9bH2GZ#0W3<}iaHe6x(3drFeBNOYSjP38M3kz+wl zqSzJItAfetc3_aV(H>#ZZPRTYbnfXMePY=}Y;yMLz3@3!6WuMR2RJn2li#81wyj99 zmrxtzYoc9K(N73W9je5&PXIHHY~6;@D>L8f#sT@?47QhSFb5F{y?5GqVWPTQaR!33 zg}=2;R99-*P`@;z*ss#NIaMa?@Txdy0q%%MJt^Otw`m5YkGO!XC(BYyo=4-QJWq9})J$p?bx;jpU@N zj}e8*&+qSHN{Mu{3e(IAaSdZS?@Eqmt;v6JTDxb&k#WT~Mr@i%YTi9^ru=K&SIaLz+AtxMAc9h8GL@*B2EZR-u?w(}drOtAf!Me}m&cyCG z^Gp>jzr3k)e*8pf;Yf6-VHXblNRYea$L?dQ*-^Wkl0~@Xj>;$V!4VIt=XJxv9>X!n zRZai#eYB}kQpdleza!TDZ|ghaLb>g+(4vswu^qD&z4|<~Y+?g2w|Yl8GW}?l2$(xk zqRJ&jcn7A|Z?QO@Rs-&J{mjTj75{J|4Wx2Nb(lvd*7^7BAN#Pp7Ht7H}g)A7*`Gba^k*r#!N^Ci>GbA7J~untFT`Y0{3x0qr>sxRok7PhJ+ik z1+ISW&OfpNXZ1*+>Y=D^VxvUU9-{}NTdA+4?MQe~_T>H=84R-Ql<&M4!{quDQ-UUA zghV7vAIfbOG2A~TTmdEeqZz#a9kMQcsAi4uH#AEIN;c0R>qO&ipSevJ*w1P1L>;Dh zJdSs3_~h;kq2s@(OT%sKt8eLUX3{cg=KK$-_oS5kdXCGX@OWBo$CO4lDQXWbPvVe@ zVD?HI^gT}i`iD@bj2LV6;xB#|CTrLZtxOh$ahdWmXQZx4WcFC>TXniN^s)tXsj!Ii z>JLj;vOzVP$MGBSWQmWbcEPSS73$`kn~VwtvFA;fmXGAKT@m(DsqiS!MNS4%dXdft z;MB9!{-aHibTu{zKC>=EV~Pqm{ZfeNi$~jKG^iY;R?R8jfbgfdfw&53D-|o!C5a zVK0ip_lpvWTxTU2%e7t1k%7&yvlt^)I?x{d8q@E*bqV$BH83#Rz;znFQ#Z~zow)x8 zH`pkB-m#N>BMiFMfKzdKfpfT#KxkLuGsF9bI}j3wg4^DrB0rVi-d&)zcG_R@Y()2E z-B;7TrWx_#7?RdiSP!Q>&);SUuitHEK|wZ&#y{BJ`1`PK@_V*&sba=;%_*k;`surB z^tlZ3jz9LV&Kv6iWVMC2!PLqnrXQ>UZwy{c($!zyp=04ic0*EKrrr4L`Wg1KRrhPK zc!k6LnKElS^oB#j-0BlXKiV@_`ZCuS*uE1s{5+ENqYSi0BP8_wo z5HK3iCP!DCfP**>a8s>+hGr{bbw%C;gc`^=LNvyl-kn%6yf9q7mo$qr;mpUSHkr~7 zu&UV!FX5R8X^c5-f4!ozGTW4jl{g)5#YuM3FK?||z*Yq$2=^f*)6RW^zBMX{9TyTU zJF3Dr(({s3jZ3*7roIr*pr+BccHi!|`%8D_NN5VgmaPErS(>fvR-<1Hbm|?ryNbZy z?RQkiT2Hijq1CyGtGDbs%dmg|MD$6qLd5}~7WHMpk}w_;zvI*IEu!2=1hEdXe5ec< z@y4DUC#t;?x#<}{nf<<$WDVl{B^|r($TSZHfd);+;ovGHE};p3Mkpi=SQd>V%z-6c zENDQ%oQ6`AP0XiZ8iOoC zTv>=MXRD)|p*`4{E#@Yi^YQ4;3qcKNu|lD{+Q4m(>8t_6rXdOU}`o+{W?T~tN@XKmw}_v z({wwJgjMEjDbI~{-|w7ozM=cK;P4E(ot_|sL z()ZO|s~HP86kN)9`S>nKfr}=VOdvRe%5guMmWV>Y6P4)q5}>}CK_mFh`({>?Pt0G~xtE|Lg{ z*AD%;W`YJLnyVPlN4tU;#6`FL%%Di^N|kI@F!WNl}&zfl(Y#zNxfv z-!L~|i8spXH$`!kV(Bk6Md}{75h3+6gyj;7zRapnjV`sh9=&c^%|Y>&WknG^qiVh0 zw#CyvfuR$D#IN#TWsr3SZ1XNR;Ac-NxRlj-kd<8Z?Co{(mux4kX`#`hYC}m8aS8vL z0Lmd9vpi6S2i^+;nu%WM_|6*vzzuQl&GD10&<0&6@(QWFOBv-(`y5YW0o}jInYXoh zYUDOPmo9hvIt*WKH=)^d5UoiZD}yYu8F($NO4cKs^J}xHEWs%$=T;cW?f1DJ2`do9 zCSxBw5A~_(@gLWqHx+}~D$ENqG>WJR^An*MyMx9!(8t7WKNsCrg2<8Wt;$Aux$MP_ z-1M)A+bI3(0_LjvaLUObTbLLLC6G2v!tR#!w?*@9q^kGDaLWFPrrn##h` zm2tr(tiB}OS^zLos5%uT70cCOvRjt4ORRU%zZ8!wb=3u;?rb=h!eB!jJs5Sy6!~MttHa7TXpBaBBA(R>f6mS;R(HZw7AB}|c!mUqVrT;q zrDkHSR|BAKHUmTEWq)S%#8F2cWmu_1_WLEnHKTT*TT9#_sG!!DUwnDzPlkLJ(ChnA zwX(Gtgi&#XOQMuS$_0>Adx6ivT5QTb54@mt+PM>&)XP{=Qy22yqf;F~5!5f}lO~Yn z1>iMeeY8Tht-{3@7khq36(ah-+yeEyfI0)3FGm6a?c@5(+d1t?XqhrpR6zVs)i?ZB zT~^gnpza#3X5mic<-j16*Ufm$=3Cqt*{9~q{O#79!tUgC?<~t;a`^&|{QDbP|G1nI zZ=d{Y_zaE`YTtb#cBTP^FwXCV!JFq5Vuh27L8p5BJcy#dRj*{@MaZa2_s@qBe8QTL zYI&x+at(`Q?5YzeXTjyS!X6CD!*HfZvm#x{%zu4sae)H!9{NYEHy_}&0MWjbsm&^8 zVw!>YgzeR8DT)DU`~Q&o?i9wmzl`<1UdH5>j>w72->pXlNKjgpjcWUGzQnLC^LQ~s zvXy;Lg3oaydp#rsmnPndwgQ-@aG@RAmMHSv+Un z$3QfaAl=0MecY{#?cz>^;e~k5`EbOcQz09m%*NezfOB;FNzAqOaO*RE@De|B^-!2i z0+xyHYsv!rzVwrk>)MAeQqhsjtTvz&s;-dDE>H*mjSAiK*&2K|jTMOvV`+vG4yhYo za(p+vT*T!CjQc?Qn0{kn?^(k%RszFGjYsv%2@EtG?jE7_J6Dp+l+&gAe4FZQ{)a6O zYyErO-b6<7nhB!5E~T0c#NMV;BD?qhf$r-AQYbbR`h?!O5mJ+(c}0g$>8_Knn#+65 z&L(+b0Zm9>vok@WfNcKlq@Z5bT8h znGM=UbpRM3rm`LbtHD?$iWB!hw-_o$%*l5l2zulG<`O! zQ)DYe;2$@Grua^(QX11pni9t0Cf{kn0+;6CC0OrRyuc_L4$Sn28}#x`V1}4hcHb?W zeydHJ@U}5)0$%3O;4RMOe;2)XGvklNWVtkIJY%A|R3*9D#-CfDZ#)|qP85S+ox>W7 z)g9@-RPMPr6&u#P9M^4tSH@un?HuJ(mWF0GTxJNhy|8kqyDCQHPFTL!zQh+BD|5|8!&Cd38amZL@WoHk4& z{5m%H6OBfb+iWZ##DJxZjpmuRZMmn#bOjAvZwNr%Mtp+92KMCB!rugsLN#g(wN|Ti z_dKE*A`+>k*^WA&EigO1d|87I$(xhNVesTqxBGY-f;9 zAGp!R)d3aZBzlLoppYs>xi#FTXi9er1X7S_3jXQVI~XtkThW^&iQTNDNL7yrI+3t^ zo-i%RFl=E;`GM{I+A~N(o*6u$w*)bD!S9fIDm^5X4T|gNr$LuH z2ac(92C0fSz!d-LKfV@}T1_`qPVxtx-f&z^J)kFw<+*S%u(}o)D zF^GJ5(2~Irw}e^ERlz9p_U@M!jXua_h8PO>|F0QoS?7_WcA8OAIGvz+Syl!tiLC{G zRS|&b2)jW$mGt!)x(UG-KDn@UMryvu#W^J6CH;L#8B4dJjVcC7Ci zlDlw3B_RZEfDEe3JEtt3tF2<(Q(U3kF?)N;H9u>q)Az(#OBJd?vN4w8=!4&zg|^FI zCC2gdbK0y|Km^~BhFhb6Q6A6A5rUP-Y44NNa;|ga`ec}C50r439K}y|_aM<02d^4 zY@aCN_zDR4!J9e1QyRHcRQ(?{(HJTg9@03(HdWQ*RyRfAU{M#5`6qt0jrS-l)EJ&v z=-NLhm{-dcsPi|$VVl7bFFhBOTYGd`gu|f|d-bNrtW=y0r-OfJu1_c(j(SbgVpaF7 zrNX9M;{@kqNz;Opp2a7E5U3Ubyj+!8%~>`4xia7wou0z+;9M}E3CVG4q9Xk8ECWbt zRz=9eiVV%oyG3r{yBe9u2r@VO0w8{sM6^fS*=d9AS?VRkJtTn>6;U4HkP8I-rx7Tz zoqJP;7F3Ii&6Q{gr~;F*=0{z7w@4*ZqiTKM*r=1|w%0BJf*W;S$+~ zE+Ziq{!JKpzgOhQ+?K2bRTnqw&T?fQ1 zVD~7(CsN?fUuJb)|5aPa*5x4j*PoHpl(Fai80++8y{V@{v}}^=6SRAzxj|j zG!2Tdu=4_w-=(BOM5+HQkOja102N=Sh@e#gI-nn8To~)Sd0v6Fyz`r1%pq z57!}iWF^!c({F5COn*}!BKwO5E{7+(VICM>{_?e7m$;%n>-CC0kkGl{j&7d z`){zFbQjHHD3~BG0NfKk;mIdUXY9objbimVp)Xm#<;fH$@pp3b!&!0gCKoK3KOFdH zLuqwJeW*5aOmifGUF_gp+8I8xh9^H4aiQ91tiVEK|bzo57%= z2&3GPm_O8+kYu3$y^rL?5_9wPx>0rU1E+pLCP+6kWDc1`sci=T`?;#@_IQ77`5=hFqg>UA&s-s9L&E0beGW$3hmO>^^(zhfK}c zGASk(Q=sxNTPe7N1ONa{K5?!;j4+MaiPkU*N=x(h0zeMNIItFQ;Oyyp$JrD!*>dk^ za4S}d(l#w3WX_LB5IiP#rD&X`pKu+J5NHt+=K(=ksv`pcBYgirzyJ_-#`;3)JYJGY zx;0YUU`S`}Zk;IDq+&)K{GZ`v_zMRnTkwA7RMJT-KFbxdrE8 z@!BGe2=zWLsn8vU_GE0+=4liqR2y-+?u8bU5yY{oRS_5&cwR-J6ZSV^3iMRmSyD3a zF9{rn>;b|p%{WmKioZmumZf5PZ3wh<-0eAbDfq)4CMP;$$u!Tlm;@Jl%cXfZelt3n z|3VhMey>M>WCXs!#{iQE=mpg3H~pV1(Ss>HRpIECsPf+q%Mw~t4kXCM%*VRrtMMB8KtKUJpU2@3orMCKb5&T3ZqEzALV2@^Z1H|E7h{GDbCFp>>jjT9f=JRax^a>qps53xaZ=_N+{c{vdUhWr zrkxvjz-i=~$^~at})$X%$};-?778T-aw~W5JV{5q8gI8V8?rv z4{gJEH?_)y+4zVctJr3gmhV>huexb4!NqRh`!W6M49e?r+@6kkF+WK})qBJ{4DW1` z2$@A}7QXZ?rr$=Lhd{x@H{Q&cnE=>YNm!EJw@G~KL5MR;t060fAwMtVRDn#=H#+?S zIrR^g)Q(|6KgW}~y40u+)KB-!Dm;B47fH2EKK8hi{8-?s0b~MoBX5>@Ak^aJq8=o( z*i$RVB{C*U%sI~I23e6G`p4ysXGu^4H5}pb?SIZC94l@oJiWOG#&t-bwh(Q$(4-Y-;g@4ph&wk#tp#-Mj)7U(6MF2N4X;EI`() zN6`5~Y?b&i;a)?{R0OG5Qq(PkP7SV~8#!v5`0BRO#KpaVYJ5 z)H4%g07-PtJHCVYw!`Hz`=1$Ra#{E29|6-ztlp+g*8^x%6Yr)yCd&QP=#NKeB3xWm z?^sv2&Y~NCcf%l8Cp1$s_Gx2++B|bwxBCYnCQns+ODm5L-zHGy3=!0gpiA|+$?=(( zaT8UDX?kOGKWbmOF#WQ8Kl7qj*6x~bf<1@drqT=2bs;e9G2=NQkd8K>fehEwtVL5C zQ6hDMWyaaC>?-m0!S%BEV~5L0$_a-<;!L0{q3pLuqOD)p6h(q%RN{H1CxMD96hNur zn|_3-gT|9|nHeR2CbWdpuq#xO7o0;gmMe8Z4ZXKivsz$#e9$!ox%;k<0IgDb#9V!S1Q_+mR_Uc(GMXe0Beg_nYBwQ*W*=)${yVDuQZ2$aU^-%V1At$=H60mV9u?r z^HY*~Z7y;sxoxct-_68**l9(8;1C;uTd-}n?ro@bq*Q97fax=RV5lAN&q|*b%P3!+>p4%LP*U* zv7%Xrz9q%m6oQT^L=(m-GM1>7%Zb)d>M2_Kd+POhqfP^}kbOxw5CVpbJ-+ z_tT`Mwi28x&4tce%O=8^le|AMLa)NPK=Z3H>q@@SB3Zvec6` zApBjWM%y2m+y=-#e^F@X$EWP?;|Z&kOu1Th*lJ#rPtim4uuyuSQzR5Pt@X@bHi<5q zRiei13#Gl1JSWRvgidKgWVJ@Uo<@fQ@(}cZMgbAfL0}X+1P94kyz69N5;toIYj#uU zdCoQcr5*6z3SUcw1KK#3BI1 z(P+^fwP_cvL~!)dxk3^J1Cjs)Y_6Bmg@bvtjX+(43lM`8$$K5KEoFCvb$jrrPUw{! zb*zoV*IbMQ7g45*CGH~)Y8`VmUBS`@{Oh9hTdQgFWpOe8?ifP|a)=S-sES3szbe@{ zyATid<)14~XeL6f<`pKbU;s{zON&PVdu+71POC^;PXhFc$`)>YfiM6ZKW}l<6X%gNa?!Kx`S>(&6X&MP-<nM()iG!7ZX0%QO`T#ouOGKXAm8y=m`dnvY&j5AWT5PAqo zpikEeyA@cU5YyO-E=e^aM0VO+TnnUb5*Ex%N8Fm$UD`GVA%c&NQ^i^aFO^Za9Ai$f z>7WE%y)m|!LHcg`xsER0KNpL9mP#EyyOjkiv8vpjR?w2(0bH6#-z;H_&g5@hsH}!o z>Kf?w^?{wl7Fypnmdv#(9gt)4nB=#5^~<$jo9c!40QFD8BXBtGgmx=|2aMj!g}tj( zC)kFy&;I~A$aPqTGAHb6A~Y>fd`>HdM(N-1#e7Av$Wpjmd96k;M$XJS26eBPkzSB$ zRd0)f@_tgnrrMW|yCt15kQj8omPmq5N1gK($e`znKy|SxZhBYHv?<7z7E~bFxh6@f zejNCzIWXNpJIWFBP#0PY4h{k=k^ciaOxT~p$!;SfNSU}}k{01- zTO&`t(d8`=Zxd~^gIVE!EG`)CizgQbD_~n>itKX> zzttYtAf^21xMH<;xA$SoA|P0*+P`)cG_RBW{S;e?e<{im)`xc{(k9{ME8lDvB!3RM z`!|_hpuJEInIie5#HL27@Q$N7)=%UVRX52aA7yNcqn?y%nkQ!^JW0A(;8k&Cl}%(n zWq3nEeV9R8zvmCRI?h0Q4Ou>iu0yrcKvoPv?YwKjPC)#0z!2CBh4Gddc-9tZ(OoHI zO`!y}z3!m+j%eJI6x`}H+yx}dtj zkyy@lSTJTfj~DXpe)pk8TPY~W{pm|nEbXwX?}kmG62sl+u#+*1kggr`Iz7O1P)wcC zfuc?M|yoaLPGf_k^m-cK4ByV;AZQ;jQW21 zCdoh+r#+PQXyS~roQ@N)>ZK^P+*FsE?TnfPI_b}6uo|}@We0}WXk@&4bKFyU5qm$k zgmXOA=aMtg4BT~De8qLpRz#jdWdK4nRiN|-;RpNzmqFbMoLQ(@KXE27c55wovUY>R z8bC_a@k+itfZtk*1zp4BrH5k$NQD$&pa7D9ZTy4p>%kgAo$5KUoPP`aFoFwL6OOzv z6`TVGBFbNpN-{WZ0{%Tu$Pl8oYm7Is7!DphTw@=L&hA0bu4ta@n{EiZb6EB~U?oyb z2DCiUxAeH1m*``=n8E^9^x8&Drgo45Tb>@2;haV|SLy_zv`eU0i)9lzgDGlo6DgA6^>o?qsc@wF@RUIwGhY_4xc2_ z2k=p%dJZrXM^E$Quqo};nhk3n!1K8E+r%I5)1ud(B-4|b7}X&`p&|}_ z>3rF^Y-})~B^6309fA@nI`7f@4mK^}l#wMU<6#}uN5sNSBTF8~NNMWqUTiaTyX|MG zroZd{odeime&s=Ya%(n0ZPX0RyL7K=?52eV9!4bl7fH$kpDj4_nY&Bjb(75Mn@g=| zDyU8*>Vz{$Egw2Ed|mvUgy)H5(drZzWBf^6T{Bm$0Oipy@azsD9~hCP{*j|o5ih&E z(l`Rc+?HAn0rN`mLYXy4l0;YRvmZ4WS-$?pG}LTJB(8Dv@?){nJR*D5E^12#^esx( zz(mtl{+8l)$0Q2Y{MVGMgWqRwy+fZLZrC&vp4x}m_m{J^A!i+1!MEeD{ zzh?7hTcYIZAI&*#n;wOq`P=K=r?UuOIHe&lFa8UBi!OwaO&}T zHivKwEGrN4Rku6|EU!8a5Banpl?f?~%E}fTcR*)tZC;OiDpfs77-Y-(Y8~c3cVyib zI}aT7Vvy5>%cPkguT!yjzdx=-(S4I{j$az{Fx+R} zV&BQil`>PF@oLR4355diZM0+~W6)=jRaa2s?qF(}X~XKqTDH>_n25@7=*-8avQGub z?$)iLrA?4q4iFOIr)h<{HIbWy;|Ob1#C>Rho&RtRW)Qvchmq+`NbMy+AVGw`7oxEe z6=H!4YUKLedNPDhj^CilNRx;<8gTUf1zQt>NHHpA?67$0K9bQDOh|r0v}CTbh3bOL;O&pk2E}d2vphBK!8T z@VWg9=5Ma;wJM@}IU)0{v$sE+d|P&gC&dcM+isi7dgH`*HBvr7mOejUZ%ZF*8X0E+ z<*#ic`QkZ~cC`S4S@npD5wv|S+JA?r zQXY#!?|YC*Vz>3>kG1;Wd{uD&0keMY;FqS0fQVY3ZSv%P>Z5ldXg)I1ekgC^A0e-G zUe=8#gLYAp$LwF4q83|~Vl*JWrdgl}U4pDO8sC|m6= z)S9~RsJ5%}t1>{Uf~gz+ApaV7i4uCw)=D)!Vr$kXABm2~UdznlTQA43o>&aoaAI*A zv^3lQ;leUQI1pzK)ElqM@~(s=?TwHFA}FMVn{HR5$^%O_Wvmfm+A-e`3J4m)?oBZx zV-HC=0(*j13C_o6y_9Tq{s`C}i*yA46GBMJd=&eBRR4ziV}6lTq4S6n`5Ow&AFY)O zGxjn|_-GHJhLf_b0$7r&n`AFSpQK~0jJlyRGf#A58w>Wuoe)x--KK<%`8!jVnTw6L zPor`ZM;y@fG$TFs!y>;qY`O`JBU5ZwE}c1?sEf)+5BO9h9#jlCiCfem`B%xHI$Y0a zpsdC?lAA<_kYRzV=BU3(zz8N6hE~qj4HsOlyuvzHJsU$1oh|bqVm976DgS=B?h*21 z#mm(INo<`BavH%hwk>#1WqIMWcYnWx)|+^67vE3EVb<fys)qiG90hYcI_Q!_gDz)B>)R03efJR{URxG+Lc~k2oqD?k z=aJ8ZSezX1u;|_i{>pCu+B#Hf@P;SeIfe54hmVCrJ*aYPB`)6&@*Nw{8f$uoJ*)qi zz>7G~ddb&T&O)B_HJUhciq2j^@`d#LlN9v7^(fv2rC=;=Pf)v-t z3X4GqAHxg6O+T-5WU|693Nc)$@bNEFlrCk;Jv-)QsjTe1_hezhTNVFcpF8G67p5s1 z_yVB#ZTR6nl2NPEmRJjqeamveW>)<#GDX@OaquIZXAr!=$@Mq?LnVJEqH$02)w0bd zQY<9x+H!;S8X3jT!deWsmeQJd_;Csxab&(C2$XyH`7GzUKuWC*L6liw6LfSa?f9DC zo1v}Qz5M|&24BR+P{b~-+4#p&Edzkl5_T)|TF$6#0KYL^t1&t)qhga0QG<;+v$(p4 zm;btVE#KErX<0V))AV*b#|6~7S?F$PDIvV?2jQw8WIzWXS*q+7sok)Yli?GrrG@wA zd{%Hj#P%Z<*ZzwiGW?Fw#}va>EnUdL|SC`WZ>B!N%Dw{3-j{b(Yhlm0+V!^<~s zDb(9q$K9qaCiuKR2mg+oP~RrFqzbgsx}c#>TfW(e_B7-F>*s}SWdafqq!4l0&l!-L zflH!i5k!@bW7K`b>K&v=r*|ib>JHhFAD|j|Id0HJDSr)Ei48sft-D&^0nU=KpRvHB_EYxX8o(i-6sZ^R;(iNWEtG7VxIOC~JB3Gd%3XA6FvSs-O^}x-o8n&6=CQ~VWZxvPz*cd%ZMjgx ztuhgj8^Ar0E5UMJyii9xXTxe+wJewp=O?1Oze<`fzPN}7zky%UGwUelkG6lmcY@J@ zgxxO(r6Kc#?~)J;Zjgj|r^ZB64#!a^X(_)U!3HR9IQ z2?zrhP#EKlByG`KA4Le2Gcb+p8Rh++tF{X-+#?C z;@@Q~+C=&b=DAf^N0px1Q>v?<)e#%I+cgpT3#tYqFl~dF*iAjY z14xMH>;j}ZI?PqnPx_;HY))a>2|k-33xCcQiTzIt?2c}ta!H%L63Ac=03z27O&rj` z%yjH!_p+4i?F8`#a}{sTSJ^~f6;dqo_o!9daEcfzX;nc!4l7&mJoK7r8|$cmFG>f` z;QIIr+AmycWyH3+mIRDJJX_$DSHA-t2WcC0Dl{KPOhJo76PV8y5DcdWs03P7*$2MG>2G9ioGB7~qEH7V!>M=C#Q zz(z35w&iDI$)`+s8fh<393PZ=8>!PGrJ_gcoJYaA%L6&e0g2eqQXL5x%PGdLyjvS} zWE{(bfY}nb@4Po?5N0IX36K%GopGQB?*6&r?|ZND=`IC+dS31HU)&BDtW<$nF|YUf zXf@AFBKr65fB*m>PEtEcXt3ez3y27xvK-|4n~YTd3@~{<{kGj!n%%P4aDpI}LuY3_ zec2h=|6Qes*|$ayRbYkB`G%UiNz@n{RoM3vZDLs#jK-tp66IGuhG$CjEzM1g{yz=oGH2AqxxPsvzJVhh*S;=fSBZ_CRt zj`k)(Xs)2MaxES26_)vqsRV8C^~jkkJQ2V-#{hR_(TPt1J)rL5b07h?%f{-h)bzht zd;BbA0%fTL!bU#FTVNpyX~j$zEzKqHeBOL2fE3P9Y8O^2L>hvq(G| zpl{E%(W3Kgzp~)-3U(V(Wh1)CU#(#0%VX)<_Z9DDJlM>=vyww;z+=_?>XmF8SNnKq zVD0mRind1`+2&%@3Ny8~!|b}SM}^`cbk-4U%!Zy^uuig)Q>r;~v&HCAK5bo0cogko z|4270Dl|qz;45$LEi5nIz$(+p?GF(y-yzw*!*7Gwk%;SZ1T1=-I~Y*vPdJzqPpqYV zSr<8Qtq23EJbF4~mRDwqGxM3mpj^PeK26m+ejw9o65J*q2HDh}0RU`rNFaydRmJKs;VtcrW_~zau@)W??0E$F*u7%B+TG`@RSWr^ z`i|U-*=$^NANz*<0{g{(LU8Fj2pm0iD@x%YMKCjltR z7QtWbUVUymh9U1kbM*@xwobKH-j0CGL$QDma5*8cF-}cDHk6hKVCYe}JS_MkZC?Dp7(N;{zUk5yW8Zf^a zbl@I!ltIk?3g&AcxsgYHCLt%!>m&0dd}PxaS>I3pynqkWS6>|l=+DdWYeQJ4U|&+* z5ABuNwoHD;z3}T8+4_37pOzdhy>?bf8R*bvfCWP^ zT9fU>ayz@}=~~7-vzSQlcf950t%Yl#ucF_;Kj#wS{6PAa4hpx3Mc4MU#LHUMR?SQ-a)*=WBO|==g3#`7>bn}(iHWkgSWGGqM$dop+eGJoI zdW}8`!#76b${*9LZKXZsjFB z$J(wCF%uc}F8w45C>oFa$ROo?kC3>gtC7&qeOKSE6gzR78D|*g_3>u;p^A%yovEZ> zqa(9Nf*v7ci3Yws*pISj__w)bZnTuuKZ^AczUg z4rIZJQ?f^XiqUMkQBA!>Lho}7d~%Z_6A<=?{|hm6HPAC4Xslw>nXSVn;zGTk0( z2iD;0<1xWUQEm`?7d}8+<-kC$pzi-J3Iyl5my zFcL|7WU7O;chJVQZ0&ii-OBtdfg=q=IP|J@v=~?D1|kEgJ5F!di!$ZTdn+x?gck=o z7}KpTypA&4dcE3cBUbnNO~@TkXwE zQ}N(WG?KiJJPKYmTV=0*RKrq`C2@ed{E-ZV6)640Cv16|cv+s2-ec#2acD44fZ8yF z|GVXEhh-BzojDEC0G%ih-xGQigyk}~v0PMl530yHth9ZGCio}8lVO(mAz;ecopWW} zY6h(8(xfRKL`>%yuoTeL1t`i2h!!OGzt%L=Fy=RO>(yBi zxszXWHPevp?MYtRe?Oik|0Scx@xpnf0s zq{ysqfxp$xLicHZROj;!?6bN6;}e7CmJ}Xs^J^bW+Fi@tFrkw6q^KqLV6auSf6)n*$cgcob+b$TAAIpAbuf+8d~lJ=muYnvU^h#sIK1Km?t43344)fcf+2Sgz&MeViF0m4vm&;LAgL z2VB@2-mrU&Lg=A+gU%v04*uuLd;arkgGk9feu`=P!Q1D=k0Ni&xu%nNmJs>2>YtUr zJmNiYDsFvRe|D__79{AqeT!X3TLHT)C@wsC*ZbnRf7SR@4(I7IUdxdFFjdWwNiM-A zH2zV_|DJsM%QoTXoImu@ukxL8_7k$9%#JQ>sp|(75;lekoLj8HIHNc*+iPyO{HJIm zSZ5&2{ublu9(5Q5rKZF0&_8(eQE@1z@QoBeQbCeXTKr{PQLpyBLMno@UO|P5(4SVeMpP+ zkXF{rSVjnc*iuB7xysGf)2R4~e+@O}@+AbN|A5ZcC86b~jFZE~+J7nNKg3kZzwaje zW43=5L|lImkX3fghd5%8BbEhV??Me2>TqKmt2*wamG;O!iaV0VIQEGAsl)%ci)enj z-d}Y2=`&S(Ag@ET{?qENrOq0gPDcF~g&rUUNTOM~Bq=hq2glw>wW#q2XPWI>oX)gTaKN0@h2l6h+v&kN* zDZGEIMgH8A9nm6@PToV8*B#o>o7^a3jFR<-H#*aEg>n=+6gC%#Y_`bAMzCHgjlOjU z3frPv$-Bwqz)ncLIZUk(-T$Xy`CWPJ#y7cDCG=xq_VRZJS&Yna-qHS3G6xC2^ds~$ z-(+L6L4S^$14)YTs}_1_bLHLhoz$#SSIDs;4~ECzuF><*`&IdW{ucQ;q({sk^1mHx z90OVfgoh9D5(Rx>;WuSB5z)ETKT4crHI3py_a%zg1UAXI@|VQ^JzOOc8Xza?Q>8$X zp2Xi6|J#6kz+LN5&~got3qp{aCIQ(F=g(OOLk}y5A0%mE95Z<%hP|i@{g_8tAs%+| zXVDVhh)4W%yO?Q7-qx;D@W#JT3bJuNTn*Cuf0@ny*jtPW)`8{?xo&9q-(sJYED^>Y zRoe6cJC}YHBr84?-#F4-f*Z`*JbGKmxxb6^Z%^aSraJ%r+paG3+nQN_W<_HC(E7d& zg=Td+=B09l9{Ronf7MT`2or`O zPwtZ9D_ybFHdKnMHaZ}op{6U-w{^TuBNNbuJNy+!ffd!B$g~LPv%AKBC5{jBg8M*; zna+m*QA9F^shjOSc_r>J<@Z)0zPS!vx*bbj{%XnZc+wY#g-+>-k=3y>g#|i^Xn;Az z>-fW1|D*6k4iNU)|L_f@<6ffQpgOL7dOiSdacmPXLavI2f+M6ggi7iZF^DIz++oVg6Gt> zNU6HidcVq}!bx!4vtFzH*zMCDy6?XRzr;)m-1^$+8B2J=f*n+bM5(;{Z{0{>^YiZl z=e1c!G-4C@{*_w(ts)uqhQU}1)Ij=#l6l6;W}7ch=94STV?ZC=^PyfeO0Wh|5o;E8 zAoQCL(k&U}q>$V59~?sn;D~9A)^5 z!zwb2V|B>vLBo$!@?VJ-OCwSc@H-BEQpI`{yz+Q_PWb@w*oZG^(N<8y0cl-w#tC%E zL@*$o*17jmFld8$V5m#~uPFGDApcbxgHBY zjPEHBvCVVsj>xm^HKEQbpPY0z`$Bx-cSOjdf5(@E5NKEW>+ar~hHd#}anG{GmXuAGP-jkbnaE zK_Qv!wguXsD``$vlp@36puZfC1UVLVa3q+El5lXW(yBt*U|4Od5BL^8D*HP@n{`Rhs z5>dP|zqzhXn}%fP&BVllXgvNXj;f2C~wkrH^BAPy*T<`vZzLo=V zu7P4F(YA_msA3&#S;XG?7+T0M(+o$}d&q?R-mj{U{YCjcYE}w|Wp37pmpc2JQSVVg zq9_AeP>guZ1qDMCSuUZslZ9wa%*A*u82E7*st0& z-%-vh@-YT9fM9F=lCnR)1gDE85BisgAgEXoHv<3(^L>sAn|0polzX5)=-=qNdzb9( zBZqGP6RTfwMd85$5n>kee%w$^!u|NSIxKHgQxd~q=|n)Ia<^2Ac4B%C^t7v6=-^<1 zUmcQ;o|;KmLcnKIY#Z~tnF{5v7h zfa%qW{ca5`SA5jo*vO+{su8S&?7EM2{9hfc*0Jn{>4l>Y$Jk3K2m18k zMECej1EaWqw)f3~4t|5+^}O0qq2hr>)$zMr7hxRe`-jc?znesV>b6HQR%TvJx6&V7 zFN~8o;1&{vv9FAu7Gw-N`ZnE5Kj8hbQi{xwAx zu0Iy?qq-<|AA$Zy%iym*f~P&N|DO#q;GS%TK{A6sQ~fj0&cB)`|LCJ+uKaDe6C8H{ zfVaoH&WFys1zZ?(vWIfANl{5d*A0RGv{7JrH0L3!p=bab^HeDGPF?p28bkSPd#`%H2R zQAP%r9QJ0IMBpXy#OF+b;O}@sj*gO{B3mV3JN%3Z8@ax@Bz?zcb@x>%zaHp;v6F0L zGvM*W)f{bghpE&mI(lku!qn9G#cgEUnYo@lA%}oow=Bp9t#2z$9xVlM+{OJ#Gt^j! zzJweydHcx#hnyVUG-xOhfv2-@pRT+x{m=#|oQ(;eVEuL{dA51Dz;0R&oGnRy)6rU| z=5c$KBT) z=Z6NGAX3cDYA`%txv~wTA;XbWJBqM8dV`GRqOr;HIaqsqjbgv36oc%nVH1tOrO1e6 z{OzpG#>(TVIbrS@jLoo`nLD9Tb#{o&z5dJn1hynQ(>S5~o0WWcRO@0M9*@=iiC699 zfG+_L4||!1j>5v3Vc16bQeF^p428~-1by|SV(!le=#KXsil5Aesj`Wd_`XSrepDqs z@TMV=zZME_$0#en`G_}oxEg>c$3)!;S_OLga3&VJFzY;M7cI9?nRY*|Pr1-3oI);i zAuc!I9ahuo3&40@@~GGCaCTs{*{?8tua)%PnCFK)yQf!z%BDi)3L0QXAPmli_(IZY z)e|!5aY4s*VU?NAO+zXD%ZlGva0`_jz3xYhM1@|N+irtuVO^PDgRIA9>5?QFwYW81 zDw}K4GAI-EgR(|zx8efDJV!}Y{qy9v`)^ke(Ms1{V{4xlL^YIuq-C)^R#b^woY=7t zsE3P&BIKu?m1ibo4EQC@_(IXjSsQALHU?nu!&L zntgRr%!&s;I1grTTv{^G_^xIz`INt4VUT6#N`j!mr;hJEhUdqQp7xqbv?t8enosyD0C&Y8y|wgi?1VU&mFRp z_Y!Ff0Dz!Iudg^`+{&m@=}a6(J4Oh=G*<*=t;Fn6LqhRB>R?mUP9c{tv~SnBrIHcv z(@gp)k$4DGkM7}Z?+3{4Bk==3a5q$na4jNsPa9SuU>RxT57_w;?7O?5MJ3pv@6GDT z4s0OlW`&~Rei1%5(WefL*h#eDxa-s(;SVTQQ#HVd(o2GnZXCZG zm57A7S-L%iL3y27YXYEXupozccOZH~7RIM$-+Yx&Y=Np3K)$Me8rr=EV77khP7~$O zm@A7mMN&APY&RbmN=XTX8z5|0-Q=&AGS;&Yy+~;_PO_0x(4Fd#Y%-b4@yFYWwH)xV zJifP6(I$R12aA7oLxtOIwHmpDA!S-Z4woPDAhPUtiJUx=XFc@I(jx$*z^=qGU!XVM z&d=;J;~Sr#V3HD?q}-01>$RNdPXUPW!-|tWVL2v^w(c7_H8VQ}6146)v3KJRN@Kt* zaL;623x_GFJ5Ub?b0rao-5!?amEtU`HSKh1Mm1NNv{lW9T3#5BYd;TCbrZWz3r~vC z%J5O0K=9t^H71y$In(sCN%;}O$pF4lxISy@M-85sJ2a`D4C1k_f#GntWor$6wR3$y z@H>K?cNE-Dxn@vLNR{H`T!q=s6tiEU|k0dnI!MJCn{vPq>#! zu(SsNPufnGTSd_0iS{~#PG1I~Tf{nY%K=4GaGZ)wFVQPrCIcj*wLLYu3aimrjqt>* zx9DFGrlY+XrHiBW46pZP3Tn})z>Lk8T!*lKB~U=9Od&nP&=%52$*&VV(-a>bwX4sq z9QVdZAq{m;q_>U)8uH@hHI#U zO&7Y8+|jxRchTQiNpDZGEEPmADo4<;fa8)RgbzGJI21A!qW&>=5tTT#Wff<=`jg_= z|Ku*iwHjLwF&A~ZM*H@apMr62!b<9vA&u+y6!roN0it$&hD3kkaX1b!k)P7QsyVW9 z1bY*Rq@L%+v>iy;tHYQ=pZD4hp72#L$2~rHBzktIQCd!m?al2tJI+b?lkH>Tz}})1gv5Ktf?l5^ zni^Lw^3HwT<#1SS26wd$WnNU41W_R1sWYA7d@_)K0xl|38`30`Je<5=GD|4?t^ej@ahsC>=m_JEX22K=xJx-9`oV+gd&5ktgA8{Qv*ofdF=|=ZH&}-SZ?zaMhb||$dXSu>7aWy zqQ*!38u9%@-o6;T2ZM4JAM6+s!?UGorbR4~LeJa3Xk8o=!Px`O3+_NGM)wvS&GHg`ri>SReiIilV`qC~-ZI1g(cxa+JRBES&o2d|wQhatmVd zR}dWk=a&*p^E(U<)kFqSC#Eo9pIOg?)QzPJ!s+aOpxjqE7PEeZTaLPhYrMMwFU^z71PDWQgAD^ih?FUBMhFdtC5iL@x78;!+25UJ# z8NK~OIc|cmlzykCV~5ioV=S5!m?7$7Kt;=UFW z+JzeqUCEHw+f+jF#^K7#$YEVs?*(dGBCmI`fF~;=-Q=~$yU{Qa+ai@JH#{sxs!Jej zkon7$!!;bQlB;cF8osPaznLu8X*DAW?jhR>82YTwPL8!ir(n1vsz6fd^^V*sh?rcnWz;|dh%H^ax!wgR>|Ga4wh*j<<%c3) z9FUxiEG02N7*imE6V4wnhQ~_5y6D3|pMxvICW2@f)_c}2h7`EdCuWPaa)amJl2R(d zuLo>;V=4Nygus#I@81(d<&vDj>$VYWtwI>kQebe}GLIY8jcufq$w*(>PKGaHiiSJb zkjTEF3CJ3LpKXzAVe~HU_@dc4^Ux+=)7*@z>_wzE+G7Js3vd=A@WRJs-{l z@I1wZ4P{6kS}1ln>){udn!2t5k{LJeH@sOs6K);`sSn&A6&%9a=5KKkBjrpc#I_Ow z_q^BE?9np!ybGM7YY}acRjp%~937@q$@7Vxx!8<0T|1B5aF=>A5pwQ^x>F`f8;yr7 zLOI5RS12Jn#e`Sj#AlWYjLG)W0@t%qplNlNBLZWk#vUK~KF)_Gqoad*PtqCPK`u7D z-E`v1L0=0F1xR-nL6QaVduqbvT4G||r*&0D)_>#4>4UHpu8b?>7fVN3r#6`V)K!Fe z{RJy869^K5*}qrqb|v(aynCmNL<2n2s~ zD}1;prq9+D)ZGOtPjZ4U%%Y*y>jWEB3aF1o5EN;}vY?GZ0gwDTG<4YLq5gHUe~AiW ze>LIy4q$hzPYEAEt^k}DM$I$$y+}$14!aZ^grngN=J-}|&RW7!Wxf9MFD!zsfaaOw z7t=>2Y=Vl-^VBFdIFiP3;Sblxp*Rp!SW=~=lv7Qp?xgH*^c!)y_kxO!``yvh#nWSi3cJb=H8x&=` zs9mMcD%;T=f64;$sp+ZXa1|C0-5J){5cbg0`mja5tMnk0p*qG3JSMXL_Eu6Kc>=Xja4! z^&O1#sh-<_g@<=>+IskL{|ZL5BvC(MqB0V;k7U5@wwdSX+$$-(A=rGK4jZi>OK0e@ zxcmM#gA}&6s}c{u@g?!~YC(k=9^G@3yy{Jh>$JmXNefxMW*YA5tZzm>G*Guw4?#{K zXj_KohuK%->eh8O%6;Ws6_xQ*Gq@@wmFdiXzi$)GQM$#oxNF3&TA zd8!w-pVcops=zD#AR3=}>6sppi|W&sBB5)lMa*j1c}b7Gr`lKTtRyXZzcD8DYyJ%P>pg~*CC1BIE=yi9PFSgC6$JC1b7 zIZ+>DL_o-OMp)+v5lwtZ6@F@NfEq{$d6QAkhFwmHyUMuL$~yYSP=H_>8&3#1q9g&g zb?q$OO$oVeVvcA@>#fM!jCAZLE!%axy~b_LK8;4}@`b@Zr+ofGxzQ565@Y(nFfCC5D{1)Zo_cWPTZfo9g7r_yX z{LQ#8Jl6UH#Bp=4Z(C}xl9TZ-V=2EFjVG;%jGbDb?Is5o7En2-nV~3C8%!-8h!`w*YuwC z@MCY=n{UYT(0z4vlih%S__cNP$^Hi-mz&_@e8}tEsB0~67YoKhJO`|{sRe;$)|B;i zI`5*@RgLd6B`WP=5j^Q2p^fYLLJTkG<=CqDwapc*ME-+~$$j(BUf3#1Y#=bdGcZxR zbAj3nY_`md`++w9N6Asi?K+vjE+_QM$I_QOWly<9KU9E=$AnyWnFKq+em=BisG5~_ zt{0Ol)_Z89;uN=-kqkbu>GH9u&Bd)|Q9{R;LX{nN=2jKHY>gx*8$W6T;(bNaMUeeu z4a`qTpd+kObk83zr~uq^i4y<_FxUH)g)d;y9lOh_CI=U`nQY zi0Htzm?}kds6?-U2J>9amQaxW7+5xuW$RJtHT)^@#j{@X#rI9>-VtHmhYf~29X@HBDP);Y^IAD4e5ExRRAqIzN#z8Yms#`qZ^RR z2yW)N1@TjKczXeBz3y9-_6uJB=7p1v!S@9B*`b!?$?|v2xRo?DSuux}!Nohd1J&>| z;0&X-)itvIx^a@tDcwZ`?-;lh-s=$)zKFu*5eHdpA*c2n#T-FW-IdF8#eee_uNA65?X?;4VK8rZVB2v$bUKVfmw$`euhHfS-21Qv2cVq& z0;!X}xO3u9gOGy6zrE?eQu1($!Fn{{8gu%U2@0#FxwX4rvi_G?S%9UmBNq-xLD(+7 z(!f;ka99nQCK}+ea4!Lo-zE+b%{f9uzLlz0>?xM{GTfTN4L@*ZCiPmp5V(U1Moje< ziqGGKPUX~2pL3aYJFESx?4&A*F}Adssy6o1`NMNN_IFw2yhA_gty)mScaR1>l3GYB zsdjO54ND_y4~V;xcnBnf`Dl-Nq~?`EF5Ni#z>=(jC!r1#0!WW|zwcS!%_S z5IFbrz1Yp~8m6EdI!&1+Yq8$2DMTzLLdW8yt+_E9hoYP4vMaxAlXjU4^5ZG0Tc49) zjzIeSMY7B>z7~*rxhM;e_yb^0@3J6b0!8#b8&a@1a?3<)7nBm&7M-F=toBy@m?eY1 zCr?g*;ZB3Y4mt=n; zseP1CMP&`Kz5^u^U4cp67hH;o*nvj35`+q8z7XM_`&Qf_lKgg&v|s2;qgvVR{l}Xk zdt`pa83tPp-Jg5z3t#A!rs{4Ce@>ZeJBSN)7#WzFn+Z8iHLK9J{!~Hc6(9v{B~^0FjnhzvUWL;#vTJg{ zCX7+}=n7j%(FzEUF-gu8*=vup0+1sAATzy@BsjdUmjp_%&5w8R%Nyq89Pgv6W52BZ zVCz77Lco-u;=KCIWq9+ zpcCOVF`iI&IF%1=!1TAhAL+Ihlj4+lm7Y-QyVLP-0A+NKXjIa1PihBOSBsaLkV=~D z&P#k_>NOpU<|9*2S4>j;${>31`fLu9f5g-4=Y`&RthZs`!as?^*ph*;8{wOsCmd}D z1SoDM*0!b$Qlivk!yighCB(t-X&XH@(5l<2x_xuLiiJ3_DjvjM5^V(Iaby9Z+8D3Z zbRXscd+}&X*JV^Ii!?LvHxqLxwm*s!(D%j`VPj0F{p?0*v!;8qWdCzg%NAJJmDb2O z5-$h<6h|Arc6OCb}E>!16Sls*Teg@$MqEHa@iSFdToo?Csao3GejP>=dRxAnE1z-`6_X z^Fr?F%w2qKA6=-mSwH63h%#aMNfcGiGN9P z@54n#6vwA1Tb85~*ug8Y3P$Jmiz@6CDrs1%8!NZ@)QSQ-Kdyv3`H;YMXD-`;iwjz! zPl+_vi<7}Jbn{M;FuA+~C+e2~ZW9_|4g7Lto3^STAq8ZPJr!M(QM(Y5g_rXfQ9^<3 z((TQ*Sook+ovRDqA`U~jP7e0Y^e|*2ak)=b&jq|c;57@HlsiFDzz!1C6FjHWK<$?G z1^}Yb<){P>obC#-w`W?J&i>zxlS|Q{AVJpSl+6y5BSD4tzn@M=2W@I`vo&wHs&vce zkc&Ck1%Dq1`UO3hL%$pR7_FyYEyLIc7D(NiKZswS|3U$=MRLkj(sBDMNOvV+Z2Asy zw1M<$KScaBcr_X3l~Cv0sjheU5Mvm9>X;9DMj z{*(BHMe{Y$%m#JLKTP|Cp+X~F9bFsDf~zd`YH;0<+}it(b(3?FjCY_sH0d}^^Flw=Prl2^If;6AVW59r z@{fK>pZ7$eyO6ilR$soj=_^oZ>CCNPP{&Gaj+Rw3ZUS5U3qJ7xXx3r|>a#XgOOwAgn0?%t1Lz zTz=scW7yV}UQCarJesx_q{%OLYa9(Kay4%%u?PNNpp=6Q9dDcpfOVd?w5xHYfQt@> zFv!)(l2GduNL`x^2Mp#p6IiKCWMjTvXA)ZQuS%Fl2#V=?xa^^y0V#T3MEHFLN4Nvp zKg=xDx<%^=4d8gvl^$vWLvIR6oQoKxkP4%zHPE@-8lE0r){su3KP#>nJ-K);z+puU zc!UsEpd`U(fKhjt>w6zXJ9WV>wT@iIfgF@QlIRDR1uc$6hXu@PAVJdO2wwm_9J?L$ z+g>>a{JcwNM-QTSnEoUhX9$_D-w8qtD%8|um-FZgv_S+DU{Jv%(ySssST@r!9$q!7 zaN26GH1~Z-W@-pTFCn{LhmceZWE7|eE+wEmYeStVV~$Q7+72ByLTm>QdH+1arybjztmKdq@h{{`+AIXvT_$}B4& z=rb=cz9cL@00MfCWPT^KT22-2#BY6$ZsUXysSG+p6u(wWdRr>y^MhCc8%8c*7zMBk z>;Gh=!><$TJX5WbNGX95;WOY%Gkb(4vBb`b6LP2+y~T^0ptjT4H=g*zxCa0 zN)V*Nz@V%lEk{uFGmHfBm*D9NRo1MlDGjm$AfR+W%8`}|MqZknt}7wgB?MhMfe}J* z6?_lk;YIdC(husQY}2Ijffj2m2SNKJWO#yz(h#PlX#EPdSJG+-9I{Kdg2%>e)HtXL zchVAqJv-0jOK_Bj66BLX=4iR-D%-#|2-eIrHdKx>^8$$Dkz+Lm{S*S zVBh)M?z37GBr{bm((_!NU_+FH1VK=#mNO)4007+gEqk+DbGWn1V}?XwmA)^6;;>NY zI3jdUNR0uK6M|1$autx!FzS2FCo*dCD>*8G=fKyF4JHMTn{z!h%5wpMkc2WlE_#J{ zpgSYt&Gi`QsR(+~h7RlW(c{qdi`Q)fj2FdgW}bsK)|z(<>Z%_iDa3hbYxX`T@7u|& z9}xOI5w1s+4-?4E#*lI=OnW=B$FRGI>>aJ5cEJfgP8G9U{P6R&>D{ zpd4=t>*LkV(_S|Rych?ENm~nHwd9UeC)k}p`RLU^r;q-}_T5FEd_boH8A-`6qR8ot z6U0R14@5t>&IA#gYjC)!Sbe7Wxw53^=Z4K2F((g0?{!dM0gPe|DZ*{ zFlyw)H~u1^tZZVwtH;K^-U2&Gq*O^%X6syytoYNa9KH4PUUMxIPoRa?j%`+3N3tpP znlHvNmYsf&C`qX6o6nZFA@>Uby)Ev|&f3_*d0=sv9aNj3tGFWsh=PO(&qx=Cvg4vw zIQ5=Cn-99q0QG_Vu}Bgw*jD~|JF~KPSMEQnSl4Cfkd0D#7DMUo%whrlynW+QeshgI zB;(-*IsHTCUbPzpAUW5(egQr<-uaj3zy>FnzzYF&t|u?1dnA?opTHn6awXSzfyCRK zIF-1cvS{p4AL$}YUf1SLry27Is<}%^{BtEGZP(xVVkPVn22a4$Fuyuyg^I?a#3Smm zNP8E^%+uJ0;lYG&mZG*g5ke5I4Eh=NlGK*?G#MQ`)X~GsNE9^q$yF6BB7^XrWqo?L zNGeuUmzbOQ8jDbYA8{=unT?!Q?$j18XH36FkeRUrEgBim*Q^{;ZOf^$>Bf`bq8)Zo z)dQsyN)+yk1~+XIofC+h_F31nGm<;1`iaJ^@a#q|$5hX4!F=oMx@^x~L{@_vXvG;o z1Y3;>LFGan>1-L!-K;lOE+YL$-532$<7xOVl(a6zGtCdbMC}pB(?VvTi=O8Tdera8zPQPdV0S?wffqVFo=y<@}C!u7KI7#`%jO`?Z5+Np@8JEg>!9#2F}P1DaP652#BR zg%}AM$cZ+xL(w8w6$DNdU3Ga7q3=7h?D~P6?dqbnCwm|aCbM!?PZvTjaY}ZBYMOHr z;|0m6i#Bt-07$YLxi#_QBsp^xEQ_5jCMH@gK#NF4txG;$b?_4{RrOaWGnt!#xnNL? zGYH6PGKwNe?6=0r_b8C#nj}{<_z^9+TRN&XdAncn&^`edCy})%H24E$gw2XX1JThZ z@Cwp51YSHEO4=2Jmw9sTr%>e<^K7Sn$bx#p%kv{^zCXqA&{*QTI*NXrr^JB&f_U)W zL*JAEqQP}~2WADX$s_Tv)2IE0AtMm^Tt=K-in#&2w(Wnqs?Ui#WrH%^6*yT-YI_iv z?_IJ49`SsygmE>*{Us5Rcp7xMutH=OZG=9s7MZD=@YdqUsfjylt%A>~hvjD1=~}^t z6Vu}WM6eGe&YEG=_G<6RBOPs$oux}Vh-*J%QCe6sj}rv071dBhR@TZ;#f`C%;+8bk zX6qS;@S0`0$a{c%G|cGO&N5FMm{__N7eJ^hFx!?38jXnwsRL68=`3cCRN;X%*R+Oe zG8t`fjs5Y~WHI32tmgUv>kT@0*>G)c(r6c#701mS61uGR+WHWQLJ;)m z$Y!Y>EQN_DjtMMdWE>I(UgrDLUT2g7Cu5t7LAI(0$^a0-xGVSgKv>cmlyy5o8v4ja zCwV67a6Gqy&s-FUk-b{*L{T-DR7WzvW!s_qPNRW zkFr#hXk5GbR5ZI#8ph)phbNYj5msProfb&aY`fibz_(!*QY$6RQV|bFM+(Kff7OJt z6KRu9xOlWL4YRM7GSq6keaq}SVQjN4f=|sVMLeXhzDxaD_OvXspD`lFwPv+}Gn=bN zHBFolQ1C03{!G=Q4JwmTIqq>(ah1N_)#TNnMA`ZfKyzKgM318q(&G_))_ZDwt-D65%vB!d#nr$-Eb1#zceUG3OvDlJrM*!H;-Q-XcJ(Noebx2!)e8cFQ z$LLnfD=lt2YOGR293oOZ^E(5eC&>9*V@$ZmO&!tIsW@LmAImot=0!JF@XCK}xPkk1 zC{sx10u<7r%V6X~-jH)9A_|?^FzPT^ih49u=BKp#IckzrY{MEED0#YnB2v}qG5>b$ zsty*tZrcD@gK{L5t@U95_t(XPCKjK0;KZ+nPTmT%XbO*xMhe(9*Rp5w0bCQcz5X@C zOS?*u=}iU9Zrc8%T%1F()AOW_huMLIp=wY1!_SOCQpUk_mFlG$j5zw%MNci|W=kv4 zwU7lufeow+w#52yj`a;QSyC1?S!t}4-ZciuW$_!8X56F z1g3KjoUa(@M^sNsy``LfTgl8UKGseO-+->_3|ADD3s7UOe)dD4y@u5h$38y}yXGVq7gC!bcD#UiPGm8~LKQk`qxC6id|~Zj z*R!TX!H_cYJQHm-6ygH_WJv-aDO~^(SKpUGw8B@4Rem*o%i5WkRAnvEREA87D%*+j zkgDHpcp&VYNdnfb$P_(XrkKQHe&Zcb_}*WhQ@#&m7AX)#BYcC?SE=>7=<#^TQ_Z58$RahVq9exK>PqF_1dp z_pO8l5A?dt?!H*imk(huG2p`2KZrN4y1&+;yFr1k!hdeks%WJ%-BJw~=-XVM7`wYU z8x#K|k1C7aez)@f0)i5K?bkzDTE(g`0ApmST}TcD)QWk)d=PE?D)=NxD7ht%tgs}x zpU!P0Zl?X=Io9X*LI4FVu-AFVuoiH#8KxhcR?jodec6;ZzP7{-C|N2?bmsAnf5%qf z%VTWP(*_ zowj`vWu0RNDsflpeCv!%{B~#EG;#)gCLb(>5_V5Wv#6nm8y5X;*k8qWH|_gD#vS0+$fsvo`%{>CZJhS&4dkQ zRm>Z^=Y9_<+PvPj9tC?;;=i>I+-kv$W=(-pslshwdqU8wT;^)tE$xg@4S7!Tikw8~ z*vAiqPSBeQpKjISbaPZ3*t%0a(&NBw#s=r+?gq!&>)n!IEI@ZVgX1zycxp`#_+&+f&2RUGRp@*U$vKA4=*tgex3+X-25gb}&O0GZ)?z<~9Vdzm_+g*u9wQu~V zd{vRT{}yZgl0Hn#~PGxcDL-gCTkl+5SiU z3q51U`g1G^7ibvCdBwCiEv9Sua!u!ogO^3lQf8O-ebZ!lpvO57_(ExZ<@>39ziU*> zr8!n0FaQNpofHB8x$fojX&`j0Tp6ip(lKxBczqopDI{<(PQHN+S$6Of#&loaXE;JW&C0)po0D<)a{5|O5L4XW_gQ*iskf_9$d@iLH zLQDPjexuNQ96WxQX-$`}iAJWjihY+M=|}eI3IFrbv;`lEnA_rR5$m1#qg&whudU{U zP*p&lsz@LJ0W0I{P&lAYDXbTWt~Q&*hg+kaLb)fjQOre_&l=bUEPOa%ZaU=B>C9l_ zQeiv-aOhguQ_>=-#!euy*YOm~6s;m=6Wgv7apc$l0DN}7Zy8DSbuw-IexB;=0cohM zG8(X?n#>dla{RZ3TmlNw_v@8N8f$kCI8Wa+IChfJV6@#~*t%gXJPDG457?&{?*2&4 zu7+s)eFIOcOogf7GA+xue@LCI4Ruz4NP_!ZU#|XJ7{=pwpGU5NXQJfoJ0jdHpa%izJ0mv?9iq3M%0n2mLSB>Ryw?Fh zuYlkf_Az%+zf<5)0DkbLJ+I+j21oR>zu$ILUWerv6H%G~mMmgkfCqeHerxN2LYCj9 zmvy1_uQ_|sO(E$pT7@qlp(YVgWYbE$0$P!IfGV<}25Oom)2yK+LE)Z&W;;(89|`1D zrXZrn#VeGx=j>YoW>wROeP86}wl*uCKG?~JViwMe1v0<#XC{zJ>!Li<=_zXf08$S2 zU8w#73|0BhlLfj>2W9v*)W~5RSeo!l3B>44| z+ceuQ$)jYovip70U!k@6$hhy4be!@m8G7~b6w`2J_(!@BIxM+c^4y6?%9Y>B7n=YV zcA32V4EI9qX87wCqc4e!W`h&pQ(3b#e7BZgZ3$bhZy8Cgtce!K&NU{`KhYpc#N0PT z7C12gxj_vr{@Y*(e(32# z761SN4Kph}>#bID?wHzA=kM;Qww{q6wNuCBn-1{AOX zH9a?=GTLU)T43XD9forzAS@7?N5Zr*D#r_E*}8S!>x7*2Sb);X%B$j6MKk>j_p`m%t~%X zZ~u&soCDG|gZQ61Hi&d%P+#@KZkXUITFjz2Bzxd4uZMq|We7M;Jb2A|8Au{|L7{tf z6MePXnTz1+Ko*pc1A})2@k8N2V2?e#!ILKSRMPi$}k({1jKUi1uuXa1TL~)Ayk7JADeGUv9OWAkwgQ>3gQMB=8GULI4@(?RGs*k z*w{j(QZ?V)zyoNteCcdk7!HU7Ls3qHnIAld`y|zQWabB!z)3HWa~*tOm=Ye1R(s>x zo`48+@hC{lMDifJiD$hqRS5__v$<}b)b3&EQ+@L3z*2bNPmD%JSeC@MHC( zW!)4qJ-6J+*5C=cL2E)u7Ingrh!$ei29Kz$fCvx#GIjDw7ygll3^{7>%Fv~WwlZp1 zh6sGE1UujSz)a<{ZngkiCF44Pyj8^yNj-{?%A`LKS@A^5rK~atDGuF#h6|^dY|A?a zE1+!>VgLXGJ)$!n(Ye}vgJr~kfTQCJNHex2e!^&^$P{5vEx1`AInlVT+*9PRfE>{x zHo!|Vk^%uRYzCOT#T=;tx!TM_41y7;4ZI@x=n)#dYh0h>Uj!5DOqDQ$##ke8Y8I;u ziT*+A34+rKcC4pUWq!PHGYe7ust4ef%|eU~&n4o8aMVDjDNdXcq%6Guf|wM_c^8Da zl)V6G4c~uD8_f^(!>B`7Oq;S(9x!9vZ@onzy`xoQacT}h5g&M@I2-3X26d;|_h6A{ z_l6Cg?cgo9eI5~8X0CvSw(e^1OuWty;JZ7gnfsW@ooApqJ>O(+c+99)yL@jyV~0cs`yOeLOJwcwzML!|CCN)58y^h96Pt$pB6= zE_{n}2@$T=Hv_t=cmH#}4ZAF`d%biqx^~L@a2$PGR)LipLkb z+Vrrt=!;~?3Bl+yX;sbdz>1NOXOHm4^KiHQ5U%A6f?;2i^dNnE#aG`73s{Gk+hsLD zE`Z69v8w5ULQ?4!!#&mok{>!@q+$^rG!)~a{f~z06{o!MOv&8XJDYc19{ml?I>~|1 zjX0i>rhM^rEN_7-LM88JXt(R!(kB|^CwU#YOe-3F2sq1RyV&i>9RSWZde;2kHX7Gq zbxF_h;PSl4XH|e2C6JUXdm(X#39{{?|*E~E;fPtdHugS|6Ot*@UXLAEmK;Oo#!Bu{c} zTxRcd`MvmIWkrLaXo8Dwr-9?IFm0l+=d$pLE&&1fZsvW#Ei9MtH$VM@@c9#du1W^c~o3&+<=^r!N~> z>J}sUrM@5O!&qF_Y915me>eWg*orZ7B$9)cc3 zN52gP)?>kIzD#{&Udk(4A>QWWA%qfLUk4s%^co=O7>OGWx!j)#zH$-Cp32HP??*${ z;8|3^4~I{CL4}?9%OgdUCi~6FogNFrqA9-(u8THwUq8x6ry%$tu6CQKEBR*+9DSBo z4}7a*{bVx4ijgvwf4o`kt}n+8c6Y*2I_q{z z3txD>GT>csrX$$$hgYc0IA3?asyGp-JaI3Y5r$Z*M|WPNvi&h3BKQl*4m%cc=)Y$NkQlBG=K z71trvWGC{Mz4}j5o*Tr2b~m7yf`n{CGu|MXfpHbu1)v46*>4S^xS7gtI{gf#k z!otM-^s0u=JU98A=J-u$eskF2Yyl@+r6cv(8|A(;8Gd8Dn129qDN9li;RLcshn`zUrK*%FzBKTex}dL@E^ll8b@27w`PakpKqnI< z?fjg#wIJ9?{GG1PXHe)fCKo2*%%LQ&9zE4&-RUo4!d0jKw?w2xz&|=#l~3gYBco9) z?An~Ks7GJ9<+ub%eK;FA>2JHKiH*R;4o}M zKNs~BYw;1dIG{=GIa^xv*E3xkaHK@hpM7$m9fo`#MHGmAk$i3;2mL{4@XUWpdJ6?gQ&qd`^9EY@Iq;8?9NpNXoCU=42s2AtudghPf>RK%^d|zW^O-<}rX^aIay%AfWM62J8`+$`a5}A&c!L z|9KXFSjuJQeo0^u?0{AC81!o&LBxD`tI$MJecQ<#A8cFS{nP?mc*Z!>m^&@wTv4v8 zwIi4S00uyY+Ye%j4;`}01PONA%ai~w2EUJHli5(<+sVch6G==}s73oQRPv9m)10Cx zyeak0*MKg)L$n%y?Bn5s38+#Uf`@VXb_JIs;Uzesk&o|1kmC*|YF$B761vWywdBJN zLlcU4K=9~$!_*awtQOTadZP40L#!Y`$ly|by&&6uFcE-6!YX?$dhG z`|*~vrBbPOX^gqX{N~c$iV~utr?dcon#gB)Re4ULt=~RZ2Z3aPQ1e2TgMP}A&66qk zPD(;l&skiJ8g5~8n2SIU#r&SqpEK7*!VCF+_ck}EH`rU%1;2dweg^mV%reFYxqr33MR9q&&s(U-_iVmE~6{A)m)4rHGXuH)yr`kk}h zAKw`s`N#Am2%msM&yi14k6q92TZH5M<-oza$k(R8i%6fPR}f!8Anx(V8~?lQUCxQG zdq>+F2XN?(q1*PB;XLPwfAGcm1?6oM2t2=f@ddt;@@}XeNL6Nxu8la)xof4-x7yM; zk}t~a+Zeb0Y_Awk(cwsHi9ad4ZerGP`v2vpEvvY++F{{<-H00JIhT2can2VPO3{n6 zgTGaoI0c6xnWw1;?=_BH81-oK*=SC3I$C}H;<`CT^ei+%0K>gvENI4I@#Xb4k(Ykoa{# z(=N+KP0m)%bw(1{MDRC#_L`q^Z?M@Xkq&=X!?K!D(^m6AL(mDK^4^WTw^V~wKTd9M z#!upvXUR2^KiBuL;i{`z*MTNOF1wA8$l|C+Ck%UpYwf!M?z&1BGBOB?2O-xDWOvNl zZL;-`D^1dFWc#FM6Y})&{+~oJoSP*v9@@P_shczZezT)ENFVA%Mp%2|&|Cg477{Hw zOCGkq|4)|B(1oPUACa7;=m*zF;pl+F9p;ny+pCfpi^aab?n)*I(DYv^b`zG=$M}y? zjwK;yg!|{lsO+cxP28!k$N%URSF{`f;X;sqN&R2l(-t9@OQQ5oCE|UXZy+eC5Px0D z?*rwnz!TlgJQoL{`08E zK7s#tM)qxfG5i>g!XuiD!DbcF?+Ork2HYHXN*EoA-hbdh zlmPfgBK}8#+F-L)FT2r|xhS>w&;K>4gI6>WFRqyWA1#JPx(kcXNYlV)(0{T~m;0YI z{XI(m@l0T)kI^bmySmN_*XXEsBKtzq{e`FpDW&`xK1a z7>H)FNg_lZ888v?%g>#aCXr_J_3TFW|u^F8S2Ou{d_f)l~{{GELu%}p1}!t|4jB8 zm$NYVEI^M<3LIwF046-BXv~eOT*y-veaBWNEUsU|MdFUy8#2@Q=&-+~W_zL;`)Ozy zpm!o(aR3p_ksu=icpg{1pbZ!%8hbu(QBk~rJ#fT-m@s^-p|>Os`g$zk-4?O)2eAL( z7g}emM~f(oShcz!C_D`Wb987yu5r*9=B3#unJO=oAjJF6ehl`TQe^-Ez4GUC_Hj_NrJmnwc7IDC0?cf}=_>4P|rVv)ixi zNjNm%)%$J4AqCvh+(?G|1V{~aeh56^hZMjI3oBWXR=^V*l9zbd}m`KP0)l zY?wmIB%pEL7E1-%!dc^6i=y$UomREqe;)IHJ_P<_kpE@^|2rK1cS-;I$m|Dr2W|xb zeqW#gNCts>6EtlJH)5)uq-OSnJVOCPa*zcWn+l9InOgA|R3aza?$XTA6vs@iF-QC> zsUtLa_?40&&pGAC5p81DBzD8*B;{%e8v40sDxhDXH4D1}5M!O|n4Gpf+wCg`((w2PxvpD-WG=-DGuIVL8G;5A!4h^G_mfNoq^RI z2HmeRBUNOe>v-b-YdDBMii9uo@I%*|4M#G$m#MkQo~9tZoDITRdLKWXe4{(|7g%A6 z|8{&jpwyXYmNn@!tRShzk#zbAa88rw$D3+wIW2j(G zjz0yB`2~9p^{l)*)EP@znmvJsnmy!i7()Tfyqk1LWevJLPhe0Od9T8@?T_9*tKgk_ z7%ksAb}A<|;H+89B8Yb}KDoDuV$5!5aGu{A&WvrOdntCg!5Sk>BAY37e37+?h;lH9Df-u z($VME9<86|GiMF;8|mgGaZ2w(BKIB_XEB~U)9S1@Q-oLS%#qb3RlUm${gKGBK_?=_ zlTBnz)sDO|pr7hODxV5dJBBffkf2EbmY?UHbgzOb2~Jdxa!2Ea+;k=9!OkZg+*_|M ztm%E?qsCCFflHlp|HHa(3-X5S7FDSR_uFdL`ez=*HoJiYChQ{Z1`ved5UcLu zP{g8&#Y9}}-07a8a346b3el!dF~oc``71L2BSCgYRRgN1CTMx9ufpV;TMR~kU zLS(esEv+Q9qP@t;*`R8z7Dea0C}BY}VJp=Wu^6j*Y|8t+QxdTDX374^uYzc(s!MBy z&kW|nu<*~fD=wk6c%jvsZciWY_YXAaIHkhsBQG1Cluoep{Q`v&GQDnl;i^)02k$GN zbuQPoKPC4%<_3gqqZqmLFlZ{xP7-v}7{-lc;H=$*wKOTVr zyQ)*WWpF8HTiL$(Ed{(6nWgNFz4@;90PN;0%Es-Pgg|Ilz&gTP*-e#|_T#)_;fAZ6 zj=6|&zY)|c!iVb8`Ha4HrEqN6RtAEDWubju^HjYNL}8xptaa*=g(ZlC$Vgao4RJ|J zV;E=LJdo@5ecdPG93@XWIR4YyAr>Jnq}~@2FGM`T<-Lp7lU_T(Sow`kvB0FgyiQ39 zW(_1H?wQ(e2xAcjX}s8u73Ni)oyIXX1}ZS3lM$)$-GL)^FC z*9oEh0O{A9sB@zK)z5_9!TwHU9AcSa;VUCZ{UoyNfcF|ZgWqhP zaw>gsY4TXRTNtl42ASmccg(VIGJGxv|5wvfdCn6E;p9OV zV~DwhiXBI{Y5C0yLozZGgYx0ki7rIHq@^As_(IlJ9B)NX)XgdcDnna;7syy7FTR_n z04)r+F7!!Y*w#$A56}t$G*`u^={S!g15;2m-Z*Z7N+w24EJRr4am<0^ypzYW5G9xB zkPhU8a0OUkd53#$9gw^g-l`P)9}X@?F?0*|32B)^M3Jv-v$Lc2Sw;>cJtV3!)~RMd zvjfH~^H~LEU~4Wb zOTc6oF;-CFrdl});@lyxLD%GjRYt+>AL9^2V*m1;T>s#k@$eAtotuxeupj_XNhP{b zOAP0m%{kF7=u}&)b(`S&wcRorYJb!enelUmEVWaFATEg?=zMf=g6-+^fnVde*&-C0 z8iI04ydOA8{Bif;4+y`1{Qv*u0twnKXI8ebC%fJu=1S7zoM32nJj`pAFDYy3!dNip z@8o!FgYbMt1{UO> zqfQx|U;dcmfr6uYf|Ld=CxE$TBq+vq8R_=qU#tq=2E_cyWNr|xy5K7c+?->l8SqNL^Ob5ger+7= zCL({m5D%>O_!gJKc}R>>ubGLb&T6^W;32s+!QUVe-sZ4u;uI`uEeaqU@t7(*Wd__y zrnRAPLMz3SQ^@Ir*du2l>PfT)ybnN}{^Z-Jq{wDaE-d3h`O=6AaanR^-3{e^(g{We z(y!7qQo08)t{eScdvtX^t2mM1wB2n$8sHQ-ML_=im6jwvq>AZBmB43mA>@dVW{Fp= z_QWw0p*Yu0(pYVBZrPAMXBS5)J*%kUQ+B0QXQYhxL*LC661AjqXC=9_T!&?v_Lm8k zEjoz$k8j@8!PZn(IGfW3U|wi?K(sOgXcws9XqSW;G zDaTADqpjgI%~lZs9aMzTbQ?>Zz3qzOri*Cqt7I z;@>9dS${Aad^D!f+ej&ZI1UuRK*!u8iRuMA>$A53(nYDleXV-}4T~)koS~^@ukymU zOSBp=@~daP*PhjImo7KlR|vn~Npw%v9g7yla!@T6h(u%{a7o#jmZP#jmT)@cBcQwh z*-w;|yYqL9aFW?2^aC_d_&nQ687esLN%YUSgNLb&Y0_*P;*bUehxE%J+<`V>nMUvS z(X;qp@b-2;9ZVL*tR^zuBZ1@eT$X;QE2U&OUK6*$6r4J9s0m z-vIZ~7Ay}jY_lqE@vxT}%YT;+|0c)Jv9g;@q!2+LVO)ecAWc9XyPj9S`M9_B*~b^i zVnW=hk@J%`ZJ)W+;YR+HX{|-lc0nK@DrahkZz1n!rSwVtn}IbJSPoQ)>2M zq=M@7Q(VW+95V2e=q`BuPl*&HX)bp9mV&|~sx&D2U6j3z+OuuRNq&}3MK0-q#k83L z=?E%9Hcn<=WjPCQ={LHkL~+0khTJ8$hS_% zKrMW}^3H`pK)#&d%1o@~m8}_F_|G-1etGS1HBudy_CyH>%vXzz4cV-XET&N!G!BmV zXVvJ(%S~b&UK)G%NR2}>yY%%(VI_afftggQRql=#1Z^|#}*}T zmWO4t4W2n+XWJ1bsL_U}dnE4LJ?3!z*j9U7q;9DY*(?HNBqHU)Qx60`!;}EKd`nb2IgYz@Um&nm0-XIZd@ zh>l>^CdWLTembN@cWJ}ToXn(OI4i)#6gEeD@oCQcSo2b?6xdojhQHDaKJoy)%>-J4 zOoeXOz^<@zp3vI8rOFp>!K)i^@wNp*EDL$Swt9wMFXin5_+csapej69q{(?^G5{)f zY+uEEYQVfnPd^461kHt#EphtuPh`1~VS z03cNh9E@k9{+lNJPy@*0m*d(JWut2nfBozepA^!ojH1_fp@irAZ=@QS^5@R0k{$rvF; z#oD(#UH;UZ1)~;qyWk;vZB^Ju$qmbcM<<86g9i19iT;~D>X;n3V7x;JjcD-_=79O0 zDUtLz{M3{kmNDo_r&K2HE}Tv!DTDwDva?$9LlDD=Tyk-JlfCw_fqT)|GQvRal0USzuY8#_PwqFUoomxKBE=1XEvGv-KJN>^tr|EhkGL|Inh1tJ%Up1Soe0jkcY36oY=L8&w3J<>66j zQstkPfv89(9F9pn(-y$krt_6WKidonC1-2>_PA)zWGm1}Vq%xjFnXO`SdI5cFl72$ zebKpNefC>AAx<0e&4JdUNhn`g?$Lnp|9FdLjFx?@1P~(uYJ9L+`rW59Zuw9y-!Yr?x#OSFRfIeDDLi^Th`_^}Z2^%2ZH& zRaT#a>03P7lMCJ%-$y}{VZNS*D1RB|cG_=<8`{RMw0kRe9JtrYtc8*|n5?1$aS}G< zEq^l=NBGf;g-w`gZ-JS(^RT*aquz9FYjQYRPyvn2$w%fg63Lu7N^%uy7ikggmLz;l z&Lh>Sx1EvHjm$C!Jy)tw<2RuVykkD5d{YQ>+-~8I$aHObuqMTW^dbp|NR*Z`u6T+| zPNh2#Xl^_T{hm->(zWZO!cqfX%M!A>vrNf)Pp`X;(o9YzbDf{8ta8Eh0L?Gv9($p6 z&k%Rv7V=V>H(Y57cU`DQK+nulY{G(Z&Us8;HSU2uGhI6ssDVh?mE>KSmEk2NEPMZ?o}5)Z zXp2QP6E`2h3|?+0(^KqRN9r$F1tw+`xg;j_=H!^C63=&zO5x6zj+`1OAzC)%iyXb( z;*FUZQ3N-2nUT?Mpwl8YyTH|l05I!Ti=$>(%d96D6~r+z5U!_Bn2P_BVVJx|h1{G_ zroD_ezBJ-Q?pY%^x5Qkz#@a8052InkYM2&Psg38K09T=zcM6?coMM&DGM0(<(g@a> z=2REfWx(^|P~H-+@$sDL{l1$}&roHCHgfGimBnq&YUdtI7q>QZ1aFn>B*_#EG$|m^ zM;bJhg2@EdfAoI6)r9>U+zHtTa~~6wo%0-NZS>cwVoAp9WwU5%U`EXyYZi|_JEr@5 z;o3MTw=P>-O{ZbxOT#?+bbVO*X*2fs5f$E~=$iu_v{+^L&ZW@C(tVH16&k+MjdnIU zb)9YQ#aD2a-7C+JSR8})Mz#+~b(Alm+2Jm=8`J?4svMPb^>%tc(e4${gMyC$iqd&y z-}AVJ-*-mED-y5^2L*Yc0TY)1cX3P^nU2y&$N}FR5|=3iJerFeV_@^rtwo1FYl98M z7t3W-_+sJBxjdlyQrjUy>5M5QgAzTk9OYY|NGu)P8aR@HIG)H(G!k#1XN7&9uDw)_=NI{S);-s?DEX(Tx zf(JOR()yXIX76AcV7M)m~pWl{6{0m6CTn6P%Xy&i41+80G&Qgm0D;43h)L-ktx zF7var6^Op~v%KDLO1)VdbUYvXjPWbByG-`39jjGbYfaV$AWJseGwrz{4&}XR&~tUi zCd<+s`jwqvLc5>qMXlgbCYb8z6nHwnNr#1wBg9=o#$h+_CeE^R8%YaO5j3>j#V@vtBc$kos=4Cv9qGWo5z^x z6=ZcPy<3#IC$S%g51&C7p2%44YRs9>DIZUGJ=s{rCN)cu2Xh>%426!B*>4;N5?q(! zS8!a@gxe!)ZXgEmy8pL05wzk zi27`+wE+a|L5$yDDm8l~qwgqi$M`F&}&P2`xsY6FSnN zF6SoE&aL1X-Do_ajHjV*rDO#g^h*Fo>LZsCdx8%p_trO#GdK-=Eb1t_7uN$~+?b7d z6Yh|o@SRb7ODZs$td6YW{l)oSBzYX0 zs+Nr|+3ID~al|L_0g003;Qg#AT>9Sc2+qp6Kl~_FH7hSm4H3@8S zGT|(YPWT;wbm2hAC#dYoi!k{1)qEI^Cy{rHRhp^7-_f?dkC}BM=x^LmWGJAGY7#PL zSEvcyE96Kn7L`(;%Zm))BOwH@Jb;+$9Li2Qr_oxsWA>Z7UerP3v)p8A%fFEU$3W7B zd|ePgw-dlQxxaH|22OZ#3mF?(<$e!#YzL`Z>5U&|kJGQW#JU5sjVv*eg2e>;m^W0C znF2pk$d8#$Kd%Y*E{Atq6|8dCANU6UNnPS%E&oRr7U>A$Th*-eD#-KdE*=$oM(;Q5 zwA(M?^li>>b)0H2NIX)hWvB<4rh|zw=HvXvChVuvU=K@0vxp)wK5&-%Yv!d^c^-%F z$U_!YORHBmt92^m?mc0(iLmO#k2Kj8qaG~+WbUKyc3<88)S6se z%M@=}*xCL$mEQ!FzTKvZiuQ&Cfm=Vd7`>xnzjqE}S{VHlPkRRS#0`#F{>Vv8*B--1 zwhi);R(NJErWVopj^f@Q?J}_`)BBW^laF^k2k8^_lhyBVLV(O1iPg6+l*+{1cn{GZ z(gurj1iF?4tf_pTkV`YNdYUX7*GP8H9vj!XuyvT@@CvWFW`-@?2tsmL8;fWy!aqBJ zqz#emv)1Ac<_32^K26>*`$#BXY?a4qMimfJ(E%k-xxAtBdKJL1)JMvI=B2lCiHRdP!CHKG4Q>{7O?e4?B3R2^5?cJ6iXe z{!*Gn4WL1gua?JbuM!x{ap)1c5xdFotL!duda9ms2lGB39OSF;0UsmJ27s4+3^8Bw$xaOA{_qNg7n6Kg0ANQ)g_GNEi=9@v=EVa!HzK8x4#HfDnc zws=Y4s#L{!#E>iR zlJh4e!i7$03HhVWJJZcM>JvB4WSbbg0OA#8_}wGw>f135q_wh5X}CVfrpDM}cMv#p z1KN9z>EGbk&aXcUjC`gbfrQ3&ahF1;@<IO`i(>zlcy>mv)ScM3@yZ^wqp+- z?pZiFUP0*!j=OoV3rjTzZEwC^sp6ebNw zo!JnKX+(dV09D9Rf*P)9pHjj!O_ZTo9mx6Hw}T_%jB<*fQ^!ga+d#m>s$&*PWD{ID zs8u@%X@r*yFi^oy;3YQ(2q(FviDDx)V$HJ2*V$>Op+p6sCPJE;BJWw_C1EAQ%vk(5wf0+DOO*Dv!I$1B=J>8^-ij&Iyy7$4W;$dZtqg%$yM7${#^c}=npn^cJjVxOCCcR=GA z!fPeN_XEYde#Nk0gWjhO5KFVDl%I7?n~9J!U`O;&Kual{ufiYo7$oZ!iQjNSaX}$3 zL$h*$&X`}%GrCLvIM2x@P|vNf(Gea^uv!M^y*U4Kg5U+I>S;ISt7!`RlPI<2*A4;U zRiw8e*98@GK+}4lSE$MwrtLb%50ah`VKbi>S^X?VqEuI`H->dt)`lW_trYI1VZj`P zly9CT>M1gD>C(O4+0LUQvF=oEyx3v~`_ENi-dpr$by4umE?}e|^sTeu_I`WI8m83^oDzy9yNJ@Yaz z-StvyfAvyZ*4q24Qk9XEgr@)iv?N58HI+Y;y^#X|XmAiY5DfgVJ`jRAiUkTK#gr6e z3kZOE%t&j84`IvzKR`uQ!YEJh?#uT#;4NIA{|#yCN9f0w2i6_`_K!uc8K1HJ>r($q zaO5AU=aIF#VSn%UJ}|<49mw$6597`4blSfRJPfAZCw_0s z-!>51^A7N5|HuIozUH<0ANkPuV}ER~Ac01nray%C1lGXS;E@mDebRdTJop8?J27^0kFNMH26NiKCX&8Io2DwxCPw`5-E zXu681qOVPjH{Ybk+cn~F8?ZC%#HRZq(dtV$=B1=8Pty|m9VS{e4ljtQ#6LMNXf4Xdolw*eY)U2x)T0HViNcG(lS7k*{BI~6HOT)r z%1CqL3ICNM@v6^7%mvTJETjM8pVc6^qX23GaoTT=3qx-Wwvy%kzNqswKT()&@k457 z^~02odFpaD^|#>dyBgQ$E)jUL6P2A-GHOEe&?dt)3=~NMNl87io9sB?Kk+m*T1A+R zW8^!8Ix|m&gzGgM6mDvTnRN?xu+_j9dwv4kOulRIIb4CSMhQ3G5u6Tfx){3Cg@6_s z=J;Oo$Zmmixk~Q3>}19ECbFgoJdMk=6fx&%X!6pmhp)b29wfvOO>%c>ars|f6~G2_ zpY(-X{4UBO3helcQ=~aqcvZ@8Z0X)e7XN%L(R`TbUJJ63oBYcBG?w)u&p)8-xYd6*(muN= zFy=IrpQJ}5=2^~o{-1N=i$?*FBi^?1TSe<8b;od}Z6k(WwoPfZnM6{yKkEONN-|y0 zq9dN_>-^2TPYdzkBY=mrGoepXumiB84XYE9p5`KuS$e ze#topioH+*(Sg8)zD^x$?fkDrxGy>&&bo>J)Nv`Wu5zM*!+7SV6%MqBJ*`$ABzFfZ zOn-QBvvxGLl2XL^Gj;ERhq2DKvmNzYB{i@qnu8ARRFjP?@aKh^Q)sP&WSF*c^z}8S zVm6Qewf+t_nAN-g!%D)8K6B6l4T`yuLDS0^Z7wjGk+`3Thn1-V8O7{hn+YK3fKHni z?hEet7^Xex-)Tg)UlvqEgNsSuwNaTmR)r2W)&OSEQ$-bvP zIA@-~FLp!2iDuT*e!MsKU+AFs@YdfHXj(4at2Wc@ugW6i_Rjbx!ump#EcV3 z@JKLN3PG-quptI0gy!tsCCE2f<=u|Gq_Bb`!6)(=??wu#zcKkWwx& z9uZ+P4Beq0inuKxzb=nmTz<-?!jc#nO>DsTsCOy7M2J|x514|1twAjC<0X85eLT8j z&mfM(-Z5cLOISXr>uucYBkpE@WLNaO1Y#DGGqX}>L_8e*&~w$*U%@36=dseJO1TB6 z%ydk$GYZGv;`Z{-=R5P8f<}r+lNx}PPHgK6qpJC3E@r{!ZL(qr>f&P9^vh7jdi@Yd z`8#nAbP*Y-cIWB~ICn=YQS;P`rQE)4NhuWW@3kQHD^lTE)HvsY{SZ(E=qFfKO1=}^PAcd_0daEy8-a0syRz` zobM~vA2}1%%t2>7)BKspE91n7 zs;0bt%Zl`;=`>P2Xg@OpPY@O!`kz?yxQDU!rm!!lJdZAC(%^|B1e0U$O$qk1X4V-} z#*-72?y;>2b`dk~MM*6)Bs_eyUiInj+OgHyy{9|_H)jJIM(u0_CE1KIX2}*8*&mhb zBVal9ZL<~;wQbpu@Ys@4d%wcYb<2a)#3+$`96II&1qKEGm`G8^V+KdDtZL-KQTjnM zYVr}F*gY1+TQ7&H6gzNsl8a$lFW8h6f0=2IXxeDgZB?t!(ID|%Z7n~o{Zyu^G#jgNYY2QKD2iJY8G8mZkH(fnnOH|d3IhiJMztf zptn@xZpwm(6FQCm*mQ^AY4GIwzIMYOOZw2e%77RstL0Y?;+^&2==? z6qtPZ?*7qW<7XBJuQhdb7Iq9GEC6F|dLeN)d-$P{|8YzsV=oSz)gRl)dDLcyHgekoXQ(vJ#jN}5Ch7WB3lHkIncTpAS>!02_>oA9 zQQFdaqbTg;c%WGIu-3vNNH12K+{kz4dbsoe$vr!#Zib8bm{C z7C+JZ?j)l*Vnw`K_QgxwYG<#J-8{Fn@#R%sgZTyb`rgFH5+&QiQ;Spg_r=*|`%**> z5Go>&#U*-op4Zar3@t_E#+r6l;T*{Mu*7xIhIjt{C7<>?%7vQl8}HaR>n&)h*&oXc zarg?BW%hWl`o*#1`-40fL-i%w{&*8z8-4DkifuLtUg=ugq#$oKy|Ob5E!Re|x`oyc zw&rbm#3n+wl}iy&-q<~1n8Ddm*TUx6u z{Q(K$Rt7qr67)!ualN1iNws8hvB>`6o&KjD#CP?b&N4~0uwZig;K_-ygt2$Q@+T9w zKO2g^QM|h|!ooHWPJ3G;%*Wm4!>G3_la{d0E^y#Nd zA#5~if!o96Lvwo1OG&7G+-MFa26WG3Ep9DeM`6?2X6+qBXHwQB?{fkxziqA#Lse*X z^le?Qe6K(=$;xH<^=J@w16$l%_11o0SJZK;=&!s81WydE$x}&ZBiVMboZwK7Py`6Fcl|UfjwoOT3W{NU4fLPovANqwbj2yonV9 z8V22Uw6K}9Hf9pLg=V@HfG)`5H=0CI_9&&N2&o(UVWng8x(QEQmLhJMa|A_@~3oKR-_8K>|p;fCuy>mZAQmgjgC3s~9tKONS#|G`}BDHAbbb)PUw{BX2<#Zt>^1$GV94nt3fdO3fT5ImTY>N|x44lT5w-6^UtURH z6sEPP7r~>)A9=N-`XyKRgRYamI#oW}E*PX+k5x7Z%tgAKtn0MBgpEZnV`Z8yxhwpa zO#>`wPWu3!Ne=~In7nRG!#CuG51=p=KTs20kf%ik1~YPy2aIC6EiMq=yceu;n3$yK zKVO`wQ{h+xQWp%=%a|r5a)R0FvAA@;y39;7BMm_o=>>;|kC1+)(S(@OZg(=qA9@QW zI>QtIxG_DSxPCD8tItY%zV$o_R=(7kZ_VqG!*`n>!SgwlbhK4_p{U7nc)e=Ee-ApF zM96ZX+1pOR9LB*do6=0$y=t}^lg4ost=fSE5G9DKH2gSdy#W zn>f@spL-N!^g&6FIA?;Y7=HP6=aeM1R)Ri6jn;%Vu0-tPAuv#Yvw$Sa?Jzs5yy|)O z_%wrN3)hRx{d-rh&^S4l@A<|%T$H&SC)s9AJ{zafKNJB)m#)l=$-OKjT0oace+o3S z1EnTfOXTnhui48DACxEeLkY-TmeRzgTk(NK#cfrXlWZ?UFQqhqIeA7`5)UUgGn`&j z+AY2DzNhVk$DNJ~%QBg=(2L0q_3J4;8J)z;nQ&Fd{ECV`E8r40fPC)=sK!48%sfN_ z#Z`rPIN#T8-`a+h!+kgtQ>ljVNka%Mi)0LT!vR2u89)bO*M;5k7^%jkvvq2%c6h~V zfXPPG`pq2@V`;3)Lu@PKESJ=$;~tS|++$Zg0W!9y9rY6?5wQi_4%7HQ16!gt#Lr~v zXl#e1f_AAmBrm-00ns?Ssb|g^l=!TIQTFefrn(C;L|*}{PM>$S3+=ws z)<(&v>czCB;#`lkV#8O1ZFeM~rdULufwZ%zem1KGn~U9Vpym2so+z0+ot4`Z5aZYBe0Z}u_lmfhHrFP`xdZcQrQ9a0DMa6^WS%uc}v{dPFz! zZq2(@Pi#1|CUnBN(vDU*6cf1f%@{4>X5}_K%0XHM1ppWw zWAy!6XUGL#_?~=RUwP|awv`P1=_y(9(zzI~MXUD=Jql{dWWU2qx*ZZ`4}D%jG{+)w z{iGq(uUvynwzbw;vGJ6%WpOP#wldOql$q%jED@91u?MqtLe_5 z0+<_4%(*R8(c@Q9c7vz(m5aYzAb0{lDDXuGDtHhb9jiZGc8M3<3W|TLNkvvxGUD}u z6$*A9cnOP!ioWe4DE9k~KWSNCK5}F|iexhjhEw)o_y!8Kt^#8lWi%hdg7YuE&=NeN zapjh7VwGUAZ$5!bCrb&jD&fw`m`+j-8?U8*KXXvKRtPRF<$2*xSZXXYME8yVCe}UK zK9DmRHjfIqg*m%Ptr*8=Me-6W>aeQH(XPK8jyPM|b#@lYk#IgHmKaC#TMF%6>7UY+ z>#T9j)BQB$TX#FN#pVz8y#=BCnBmHE;mc5r)c-R4$uxB+2H(iCNxKvmL5Pfo`XAUONNn}kdJ)GnW zYIWJ{hV-}=%pChVbya1XKwhRPweOWi;{4aMRS!J(U@I?tGd)^K40J<_$ zP|1KcMj}=-a=zx4%C#$pu0QQi@!NfX^;Y<7obS;8K3lDEyE>Y|?q5@`_3 zb)?CMR>vFf%73t088I+*`pp4dO5s-a*E!Lv{2Qn6p*fyOHAN_Xe>z^zEV8?B@V-I8 z4~n`Qe+n7k{l3tZ&--WKN^OEE(^P}p;|~=CcIRxFz`ZOwH1k(9#EQwbVR)d?YpL=h zURAXFEad`wH08QH#xPxX;-E9=gp>>dRrWMw8-v%c)l6&Um*Um@*_f#LS;ugCl#*jo zyqo5&!sEum-YzAkjkixipermdc~KQaO^N@LbtJPzcE@8=ff*8O(Kh9Xhuf&j#Ecm>bnxVu2L1_zW=G)&t4{>e8QAjiIw=?Wv^SmP!ly zrq>ea`7e&_xZu3cOY7C!Qr4-Yl3Zf#B=#w=*Ic|H{MItO>AXsk5Fe zMJ}+%*Q=jW7)UEGcG&?SM(R}FVfw{d1)3c3_nGU^p#twif`S}mHe!Y^7=p9b@zm&~ z({oQkvU%#48af>@vw9srP5GQVjI(O`6aZ|(Br@&cBpsBn3*=>*H& z@E2hayZs#2VyL@LA z*IR-38LlO9P*jyH76RwKwbqSxY)(Hf+CnqFk8atX=@nWv{kSOk>^sY%W3Pf=J)bFe zsjYIEpo8kGopbhr)Cu?3d=1kC%Ghis;XK1u&`QQkkh1BznE9*kw;=fx>iEk|6YH;E z%B>w0(Yv{Ysq6G$e@&a-dXbV<(uVvw5x1*|U>*#c?O9 zk188EBT1QO!C10Y)xce)f0v)Av;xTR4j{Oa|jGC}D}c30aZ(gHkbzz}o|2 zzTgu{=*g+fcT;R5V)*B?YqXrwiU{I_Ty%suM}ye+<^ZZA!8>X>T{qTj{0OOj)Ewe& z47wHIyG`1`7yM7mdC{Q=XuTrC(+H9-q)!U`m19OdlNWt_E-fV4M&)FpcCaExy050t z=784`zwr~9B|EhQu7Q()nQRcPltP=H16G$29~lq3 zLhHb&uJ!oGDZK9K0hnSWbu-yLEY7MRyOsK_e4kggPuw<8HoTRvF;ZBEBkJuhJDP}?_Dw9MjA8S+~cdT{G<^l^(9l| z&o=&vZ^}k>n$Q`h>^{I|Y)7_PK(@YrjGdLir$lz<@R#cc;fCTjsRkX<0mELnb_Ry1 z@ikAAo-J|4f#&(R9{7*lAXBMAWWbGCjtkmn!pB)|EVKzAzueU#ZBzmZBnN~)^DgO% z1H+0MBN0N=np*7 zRP3zvopnnisHvJ&b0bUbsLyfr@^|D96o=ozb5%WW-gcKgX8U}=xkW-$Y*bwRuK;L* zMZGVRKj}uUd$!|9lpW!y4!n3v<=pMvYcTGQG1-z-$LJ54#hu;kxC~L45%;pbwH2*& zu_#d*i3&*AqH$v7y*(8skRnt5a1fz#c_v>NavBA!!x7w}4lL4{7VL?eVF#xm={sf8 zA`@97bvX+~2cJjhw|NH~FNV}DLE_xG$3>MTIIki0@^~l?!KZ#;g=~dtn#gA{U(NUs zFh|T%Z950H-5gtCCW`o?v&i&Ll^~9XpilbjO_;bVOxdojWcR8>cr1Pk{S8du`XkPC zM^E)9e0UdC#%wm9>TAcmDFFmLUH`z=>WP%PV=Z#-p|MjPNp_#%Pm}{ zysyP*!y6dn^jl-@Sfcnnz5-$O1qs~F*#X2%_Z?6caW?8z_f(FQ9 zj8yWwk1Gr&iLj9cxFozwfkTy>wcM0)|=|S#b?Lt2>bn-*(1io=D&Qy+FKCZ3cLC zj?glA=<^Q%pE{Mp2+%YR;imM-9o|ci18cl6{=uPjK*LiqNSriZthBk4!p&p&@@mTI zL-Az!h+0Yq7NFD1B^*nt6|pBax;)#0Jf6sjUB{mMGA+Qj=H2-Nlo{;eEtvz&_`?Aa z?DwpqfxT2^`sjm0ep5(?B(h}tXXHY7OVd=sGN{~80`HR7tt>Ma#V=$%!4-q_yPM8M zMD;V#DDe-0-ceYoxiqQ@QBR>ve{u|ErkVh!a2IzuJac6KC3M5&lOkP+MYP8Y;(=R8 zTN-7&XT}_@>u8B=j$QX5Wh{Cm4`GBNnfR3Vs)vPnJ_Z+M>SJ~}0|@(Yr@m<^l}~NPz9~m0(%6kdU30Iivh0G8yWF4c9;@|@-(%@0Z~wrMKiD?B zO_w*Lf+~&AvpT!*{P`JiE#lK2|Ii;g;IVe0B6F0p_XDPI1ANH;cMna{c4$Ei>VTi z9u53JZ1cfN-tiidN3fkV5-yVSVgzA-{x;OUQ%YQ Zv;EO~HtDPqI5H42DQwGseAE2<{%_-p!Ug~U literal 0 HcmV?d00001 diff --git a/docs/public/images/examples/ask-a-user-for-an-address.webp b/docs/public/images/examples/ask-a-user-for-an-address.webp new file mode 100644 index 0000000000000000000000000000000000000000..325ff3d0f9b836003ed30df624d034700e05926a GIT binary patch literal 24160 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

    ~&!5#^;Xu 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 literal 0 HcmV?d00001 diff --git a/docs/public/images/examples/ask-a-user-for-dollar-amounts.webp b/docs/public/images/examples/ask-a-user-for-dollar-amounts.webp new file mode 100644 index 0000000000000000000000000000000000000000..ebe3e7a2999ea8727a12c6791aa07bb8a54b64e9 GIT binary patch literal 9400 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 P000000000000000L?T4% literal 0 HcmV?d00001 diff --git a/docs/public/images/examples/basic-page-layout.webp b/docs/public/images/examples/basic-page-layout.webp new file mode 100644 index 0000000000000000000000000000000000000000..9020347b71951919b11f5d31501affacb9da136f GIT binary patch literal 8182 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 literal 0 HcmV?d00001 diff --git a/docs/public/images/examples/button-with-icon.webp b/docs/public/images/examples/button-with-icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..a2f49fe17a97fcc64b73e5afc48fc6bb54c3aa4e GIT binary patch literal 6628 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 A$a?#jFYDmEc5*z%cd{z6nO2qsDw_fmS` z<{u5Niz)rl{&cs?;nZnwz5KW~QgL~T^a1BM+8zhKrm|&+rBramFna_zk7#{hn`^`OH3XgQMau zQ0Uh#&tDO`A$b0pJ*9y3w5fLkp?{isqGD#>iznmR;D7y7hFZ!+%X93+`<$gUtU_&f z+KUbAmy?yY4=Kh&thN2?Z_~|X(O(-$QO;jZ_)blN>g|?G8a-@ZY5jaiuSQhg_n0NR zkAB0i9XFOYBtr-U!D+o!$DR5h5u0@*FdLGYIQ&n-rg&SWR6=(1m>+{k`o@rWJ;$9v zPwuGeMV`$$n?^ULB>3rcDIWBGT})kvlHaveA=7jvs-AjD6C#00eHxvIOFz$Y71YLq zwW}APUhNQ<7UTaK3Tf&Ca}1c97ff|d7Yjd%ps-59k@E7l^rIT=_;BYr#q93o%FREg z$@X7V1U6;4lYM1r|BC+`mm-aj|0aD;@ENxnfOjW$B)S}+{y{Qi>4c|wB$H{x6LKh6 zxE|t%{XewWOEh`a^CO%x=PW7c9r{hpu_PU{x%JR}{ez(SmH{?MrZp Tn+2LC`hzv;-uz#s{P*=A{p$z- literal 0 HcmV?d00001 diff --git a/docs/public/images/examples/card-grid.webp b/docs/public/images/examples/card-grid.webp new file mode 100644 index 0000000000000000000000000000000000000000..8adab9e26ab58206e93693040bcedd34a3d60ab5 GIT binary patch literal 99340 zcmd3NRa7O*wj~Y)Md5`z6z=Zs4h0nM?(XjH?p`>BySux)ySweC&b{y5bMHB$`}G+8 z(fO4-BQi2~#EP}noNK1Mn6NOIKQNH85WlRFEGyolA25(?2Sf%iIVZ$BICqA0j$}bT zVJ-m^S!Weeh>_*1G^<;3!s{abrc0{x=>okoJoor}r$_u8o?~mrBEaM_cG45+W#hqX zA z3_!6db2o7dsMETC=k==gssp^8r2!;<_w=b;*8%|E-amOceEd4RUwAtN>|OtQD}DDm z2fRPGvw~O9JL+u544?-v2Y`8xdcZsdeM-8gdG^}kssKm<(%zIW z0Qp+GJPUwz0Lvx#>%=SSyVZ5aNr!`HYDX1d?Y-vh;ykN9YMN&ZZ~~Be-+6#JWqEpd z;Cac~ZENrX0QMhgUdjQ0cT_+}0`3YN0C3X*2$w~$)W!j!8U^hXYVvl5YM_M!{<;sm zNwC_<38t0|=^bVVbou{zm)*pUy9l38igu%22Cv3lU@W@6n7{a77qbITWd$5b@mrAL z*FvEz`~KD73t>6Y&tpw`ISWvY!txA<|NCx#xnCixJS`ivy)N3?uM-WlJpv8yFJ1or z*+oFUa;gN*VKh6!P=E72e>X~T6u)AScbI+P->iv!fKZ`eWIG zAsej!vX&8q(BS$;lRYbq|F*J7vujfM$V@izo$uV=7-62VgbQ z{(bo0;|hYVG?EnOWRRa%nBnwNzIN|5Zg}DK5IRZoH!UXvNi!`-e60h=b2+x$JPY-w zX7Ou)%hY*Jpb!eBCKZh9Mu#gnT@yc4RYnD?b`%%!;CF_qPo^4xv$OP{WQr!RpZ zCcJ6=RW3Vq={p-BjIUdP_5Xsg$2lHwL$YGNhE5>kKnB~B63p{spo ze$4_fup9Pui|TqeD`oEU*rY^tuN)g1O#k~+z}Vz5>%TWoz3{IW>YggU-Pw6nTf zy~aF$2#UKc56-y6gN8-MDG%ESSS0_UP}-ft{l@`0loP{>qi|LNVnT{+iiEvFk1Eyd z>yeY9t_oK%GBjq=v&G}L&s;6ORMU!Z=xW|v0Oy~OT;mmGkkKd9{Tuj6n<8AMIrWAHB6irjH>k?)k3xyJ3%OZ&E-TXv;KFA>e zTb11}9y-RZP|9aQh_aC)y5&0;q?%spO}kBvjm^riDeq-u=kDiqN=$)LdDCl6KGNL6 zsx{bJquqwl%{)J`Hb|2XVA)GSjrs6r%-S{%wsl4IvBw*$P2X1PP^XgWTunQ~^_IAq zT5ANH9Z&&!g+%~BLa}^F5nyv;dtd84S$vU!iN{KM^UX%WnXL}+o~HP28V-0~a)<%| z?m!eXYjFV!h=d-HiL(rOWmUx{jx>b!%NkgUcfeMFd#J^ES1mx|k3MPol_p^8Q)64l ziY>qyFHatgMoyWA+v0EE`iD&(UI`LpPxm@F#$ZwE*C7|z!h)%1_If?v>%&r!dn6D} z4ZPPoi9SnQK0N+5YX!R-86e{{UA$UNUU!cCnhj=<6I1EpmcQno@= z4?hLGWM`mnyu}&~TLGSngsVR@g~|5VjdzIBF|^KEw}>I}*mJ!}BM+tsue?t^ty$?i zpKjC$ym;mWHCWGfdJ5wyb2f2jNJ#(lgy)Y~0)lJeZA_61ZrAey*-{JtS$cz3B`of7 zKRN1WR;Luna%cHR@EP=WbNY+78JwogRucC3!zlk8pSYw}5p2l2{u-uigrnWE|Kj?< z)beSCntW816LS3;G%Gnu43bH2;Lr=Q$<~7>iIajRccH*wrt%BPs879i9okY%>*ZA5 z6nnR^pW^y_yM!Nev0+z&sCW#}T0v1#QEV?Cosid7*w_QLoAS2gC6^dYcNaNKyabux z3R|@d7JDriD<%nUvmj*HYJK$cCpk|RB;9f-Sp_kk26V=RrVJA}<1?7lrw#`~vw;AX zoByx@ELMl7+{2k~yR6d*RqjGCT2aMDNY)rJ_+c5qvlN6Cn*~qdjbUn^+axaF1UmRW zaj5LhNRp?>D8+os@e)J;M(&fyRI{s4X{XG?jETqz!%vW0c<}rQUG!jiv)}mYf8!@* zH~`Xc9vl&>cKz*{LbiL%9(tvuVSJ$wK7x2^t_h$aYUjJ7xD>B-7p#@#OT2~_IRq<# zje5unEhhPo*=E*uH4IvVM4>7m@WFH?xt^GUXkUz{-Vn#xLlb}r(4VhMX|8mPG_bdA z=$?o-56oRfzxkri_@y{vk@V+TaXO)ZI$54ha6E4iA?J3{A~#2;{+?W;xL^nPEqx2@ zsZU`6;+4fI(^3JeiZ<+*DKx6lGR(yk;@t~zeXh(ej@4%SahgeFqFn9wwTveu(n%E^ zP&3ErfmWhr5s^A4LS-LG%XS3b123*@Gic@VHHXlP*#O#3H%!d1YR(}k4TEKy^6?f= z0`NU8Ys@XTb*v6&(AS(Se@|)hYgsy*_FFS@Rl(1{0_!Sd0@a4pf7Dy*h;A*`6Kc>z z)!9nHBz-33p^V><6K9Vaxq-eiOc5ib@o}Io@=4Sm=V9K!6incgF7N<4g=saJa$L^nJam zhTLAOaa}c2R@i@;n33g1`){^z!H`JRO23otXR~~JdAU!>((5P11EZ@+jN{gu&fam|SFQ5_ zj<20jp49O3W!fr1MT&dKZ+qH$$}FfbZ^#pL^O?_!Ke)#r;nQ(KSI-CliSTsGKZzGl zRupt|fJDP9R4SiBB(%u0>(v4aqrJSCX$kL;E;?^Y;d*q+hPnA94;6XWrIx#_& z5Y%xfa6sUXm;uq4+;9U%uRqeI)x06mx5gkPrzd3gKy%_{I|SE2dHxH%>2s5uGB1E^ zZvz{Q6Nwj&?Uwfb0z()XdIGNqd4P6KX&nBxwl}L0J*Xd{LJlJI$c?WF-18%?l@dz1 zrK?NJ)?w@!g#_nTx%}fuIxm--*-jsMel#_L`9eqagW!A3QAbNB5 ze%Ho|5Qg$BD%7sE0Fw*WNik5*<95?j(DcCYx9# z|JM^4@_O)(4099)Locub?Q&{kFXI#4>f;;TW8V{4XijeVf%x&tN_4auj4$e~y2#F%d@fOmN|X%@J#;slvr>zj3}A?Lcbt0W!59p`fk=qST2?{7<#@_Y z#rTbqM@S-$rl$^@ZKjOnyGBU9YK3Ik4o>7m9CUL-(KA<1at|fUnE>d&MHLtfT;!Bp z2S~mo{!VFbKA>1DFIj|#P{rI+5!ZF}cnpW_^0tI{_k9N2&u>Z1PdXA4onJ(}g}}3d zl%H@OmlR(FDl4Q&44INiTYLY6%<=D&A$$$lZC;gm$|E#qxac-4nBy{DFa2b$iF>(4 za8OP1F#S_QeVydjY&Xa4P|@Qa$_|8T=A2Yr_yO{?BN_+2{>u`Op$(NqjRnzNK|4o9L0bM*85eO{_ zWB?QrOOiJx)wd3QX|h+2ycx$s_y_SPEFpRjtOFc2bgI%CCO8QMwf;Y)bUu2L)^q*s z2%>ztLEJ;|Sh<5gg)W?bEIaM} zImYk2z5V>Jp!|0tM*u=?^xFqg-U$9Tk+O#WG5R0C{67=iKX$>`>R-S&0r1%>OejsH z!slnS|4fT1IVNhkbr-e2_XL*P{S8y2tM`)5^I=H_Zhi>B5Ho++n44J=F{G#~tFCK^s`c%6%nR zS@<(L?#$nhM^q{R7o;)QfBSdsgdel^*XjBbYw`btddjC)@xq|}-?BdcVp)DvsUq(b zk1sb%6n|q6QQYYNA22`!UrBzj!yJ69m)6(XU)cXMqUrY|?JLYGYQ9PKnsJntM6Vo9 z`TiRf^{$e6*6Ep?x2o#o^0`oUm8hzEmU{(DFLbGZ8<33j7~;sB#9?KUQUH#uar zg5_1g{vM_hn7a-pRKhl#e2}?%4ix{VsSDtWD9c5w%2~#>R&?nN ziNM9e+L76$k$-Gw*R%%{<5SSQ$L+jxrMH8npY2g}vGzZdN`8+go6_3&HQ{8`j>{`Fapb z&>JiF5v^vrwalaaa@7hrEFU-*L}gq4KB(DZ+FR|@ChwXn*o z^)OqE3{)eL^9KUJ)c8-+&0m!$*K+xxr8(zZ!N(mghg)syuHj$HK~G? zlT^XmPBZFH_<^yU@|8Ty{OWR?z|z%FPTK1fo`orYus)7ly{w$ou67``XDu#BgjIeh zsY!%#H_Jr?#IOQD=E$V>2t}uoW`Rb-yMYl9`j3t9o7{APhj!vgAs42giZj>-yF<$Y zLqG%pC;D9IwlA#RoPkeB;kqZHxkYgKvI6>4y!4x3y!vgY6Ell{bcG551{3u5CE(>l zz{3lUh8Ls$L zIiq_)`xQ1Vcln3YdO7A}k=4F+y@JBlY?(q7ggmv?42MqFi$BaWaDdKLQV>qJkwgSa zO~)Pbha!a2Ni`sD*ur<2Ds)z!J`V)h%EiiB*@>d|9>14PSCDdIRqXlRx;QP75XIVd zVCOsM7@tgfdwmZ+4KfenrWU|7)2zz}VzSP%`f+FN&Gaw{VOO&l9EErzGLB5O@s5cz zX4<9hQ*3wQ*D3VD^}kTA(QttJr-PJwrTqsLVGZU5*V>x^O2_5#~Pa$l$0;|9BYy!&A&ifaj0Fzn9Y z9KJMu>}*&`&`x13JG&q|7d2L6O1~Z6GWCHK8cF-CV5M-_%fi+P%;3PnO76P1v9*d` zvqNW8N+mZt4}!hR;AF*~eTsPq8?Ql?tQ60ALC&B-zBL%@X>!{eXFNGhqx!12)AxhJ zuhR1nwGym|4Ull1#|4C+FPnxiXV1~x*@u<)Bxz`x8L26X!`P9zNmfi#MjBU1m^rrg z9Z0pVSkt~3uZ}Bv9g--!?!yk^J&49b3c!E625-~2+-4XiYp_lH2{@}@!OlgmKvmmS0iIVK;{#|tsA$)K!(MD34=y%f;o9mGE-Q0$?Z2)n9D zV9YgX-2h$an@*EVfa*Kidct#xBt}0r%3uw~zfFuJU}#$z1%+>5eot%5GbDmj@Tp&S zhDKg8<_-)mLzUG-lQq!EGL$uL6=HK)pwJ(DyVJ{0lD-@Tevy|{q!TH97!W0sN`IPL zxvOJzzZp)z=e}biN0D%}8tmFM1FqMDs4CmH zMATF!jrobX&p(@|X)smZFiPorU^1(SfWENPVp$mR_eCWKJ2>~l^n*8QSWOX>4ICcJ z=T%MDfWXPs9bG6t1SOmWyiIMV`mE-j^rooI7JrJ&`GifhRWiW5I--v7kpcbT+m-wq z!%I;)f4gT8)?K}K0ic3TLWrsv)aZekN;^cpA(WD9=VwceqwwW4rioY@k1Z$cQATGA0yCyv z_Px3Yh2?xB5)5*W|Bk>5+8KRFHx}!L8YZ*j?9r~Y*txpv`+PKE(*tNr{I=kMa#UH) z1D>q3IpO5_XSFZ8G`oDsTWqjxl4JYzwX`8R#;FaLa{i#JkBi%jUBP>50fh~bY*WRt z3lJ}oCP-f#ph-xX+1EZ3Jh!Hgo`K) zwuUuEI^e%=p&S?5aAIl>%lF#Ed_K0YLKp$Ltad4JSN8J<>pgLyf%i`04Y| zi9Q39GEb^SiOj;K1Hw47AP&k?9;DU@i;XTKKPM-?sueP=0lOIs45!@hSyBGV2e1eB z7`!9>kFfNc84G`(uE9KmjXQpy2ivP((RQ6aPN51)LB}t1hp8LHyC+lS6wo`z>pPu- zW=0L*UgD=vC)xk0Om=cigdmY&JZ!Y+37#G#%KQ`7BX*cC4QX8b`K3Z3NGauIsK9}+ zXK#$3IL7eGhnQ|m99Xr4cD_gqo}p04T&4o8jx{JNt${Qb}BOYv)ps<&03@j z($^zO5|5eIf4en6ppl;`j8T8PzHrGjRKEn-@&LrGC_v%Y84;@W0+QJK(6!jf` z_h!aAAE{H)+Ky=LA=iK5j^%^Xe}ItQ(to;?zi1bh0uAo|1E>53C?Anz6pa0EKo1!A z4AA7?)SEyRJ`@l%wmnGcs~>^+_q+T_F=5vfq)mY{9-lJ|m=&-42e6Wxy?L;cg? zL&(s2vuFphi}&3nnX==5AjN2w6$`doosvGa?Eb&F$#uHFn@W6e;*2unS8NX8yrwD=%F8M!s9U{z2_}`4+?*javYn>lO&Rt$UOzIEX;ZIig z+t$DIF!1yl>q5@|6#@JaF>3!xyCixyYc*JZWI=m!-xf0ruwIgjLW%3mNT4u}zd=!~ zVzzg1elm;Mf*;J4DQrZf1}@ks-6$>B>2ZAX#ko4$b0mqZOPeu+@l`6BJ-K-R&Nv*> z{%p~@8%ZNCUxV`=Cf}l3?Xk!2(JZQP(=`${H;_nw??Co|ZPsW%F7s{Ipw2y%)Low+ z!mcF|%cz|Lo9QhKWK0{!775V ziWcVnOtky!HcwY+l{H;sO>}Cm1tDPn5%saef${OHc~EwF^zii3=c<>N$ph02Jo<8Z z;$nRC&?_|lnRDXzm@m)OM%m9io_7bEM`Z1doRvQ+2Tmw6j{|ArG+S=#cCIhr}52&B45NldrD*oM#1%%_)-xs;F6-NC#V_b}6=*{koD` zO+h!k4f!@qs^IoHImpztK9cF3>Sa0kw-c86f`QsT93^fdsc@q5onbLn^$Pq^#2z5DTZUhmiG z!Kq|b94EVka|9)1OVP*%s)AiJ#t`$fU+kW|3z?IdY2++)tBm9(LJS>dx+zck6fIp9 zeHw4aLPDbh9BZYT#e+C3rr$Z8w=lny$k7-57}n?8FhYG4D<@F*r;h^1!Q_ z4>}Ey7z4C9Hlk|{Hhu}f_Ky~BPlVF4HiV&o=+z8(T(06a zWHsWMSLHFItmKkae3d_amFhb}9nJKt%t~fB)F2-B%Ej$-2!}f10|D}|La2M-H-*{P zib!ovpy`_zlw1Tc{`FXpZm(I4ytdsq%(L76Ew4xTE~Wua)spzNZVH*+WtrQx%YE{C z*?$xkxBf?o>!ZE>Q`RJk=1xP%k>z4QM6FiT7*7Iav+WhZNlU3cEunW z9553r zsA#fhgX=R_D@aS0L`}mPNZtDiA$OoM5%0hJ3tIc1^I1%DJD{@urbDuDF=jnL2O z;H2=wf4SeBOS*%^s2N|h_9pd()qabMm56AxT?%Jpz#z&d4l$*c*4;qrvQNRyC|zFw znBi^M$IY^v7`pO(2A_N5Nx^WE>R7?PmcOXWkfbZUt&UkObw7sIh{n`Z;Ry5W{tb6) zNKp)`iG*HuK9Bo4#!Z%Jf8HHaZOLiI=}%pYJq*AM+Bx&p$X)M39CQ zdd6f^fOOodG29f95po%ShZd6MI!AM(W3J~w4*eyT?&_X1DSh3rUYUA1srg((J!J6n z2qomKlY*ZSF0Y2T1?4D%Sw>)G=?C~gbAR6amRM5BUSU`T4qUv3TkdFJ7 zX&c%aa0a6-hS8MY@EH`^fEb8+$#L)|ds{r``mO5(tA1D)5Fm2z)pipG4B74@WLcfF z(w(2fbgOEAX{vhNX_k^iwKZHqz=OJ*Djw@6!#pVx;|`atP>IDOdSpWmsAfgEemXrd zxvZ$*r^|y~7K0r9ekPMfED#D_yO~>{3)je2VedIN6KpU7%ut1J$iUAf`{Xbr`PqY@ zg^#5!7K@MCB=PjSwE2&3fvpAr#A>a+Sd)*k0hiQEZE1Qe6wP_J8v1Dl?kOLt8&GK# zzcsmOw)TnXdN7{8q=1^hMHp-%GdAOOtG}7O3fBl(unqV$s_AteY?ieQYO5HC*H<~Q zcD9KS#xkYhOCTU@xkdqcpftB1qsny#lM#;ioI)>;+biCe(Uo6IAc~CW+~m3pyFOS}HgK3DUC=cRuh}5vdn!0FDD?E z#NPB5PN#Z7IIyH54#DIaT*gsZ$RqZkD6vSXvgBe$7Ocd)QVzkgcv0!lhj{2d(Ey}u z*ey_E*OsLV&XG4qHr<28tlZPZT76}~o>CnkG6QqJF6tQ-lhjS`wbw8?NDF(V?|GSy zTm~)cruejq_xX@csk!e_VDDaTCzV2jyF~F19$eTq++N=8Zm^}7P_@r%VNPUQFnv^K zp|NQNK!s=a<+im4*we$ysAx^8r#zek7i8pO?`Bdl-b%x4gv~wMji3HgPZ%C5teYHH z?+)G7dNaXqkd)QrZA?5SM|?VUi<3q*=q&>^WpO~7nQ7p_JxNS@x0OERIQE=XfQdWq z+)pX~gXn~E9L}?_r{F72GltaI(X%!mG5q}|27W=8+m=n74v`8gl0tp;n2X6~a?|T66sIfke)F0ec2ZZg~Q7cu9to1gh*+VO$OclzuOy9gt zS*a)?BN!YLsA}Y;blAI2oi3ESvA5WMD)Q?*&ubY~G@4bDXHaei{Zp$4@WrDx%K1I* zHyOe8j^r1v=%>-jC9L$aD>t=~9Smqj(935n6%jpkj{7k|$zqH-Z&58AtSaLQG53p4 zUz>r4%?mEHr1rM%DEf-1XH|Ze(}HnTEfh5cCWA~nh)g04Se2kM2%jAD8!UU~BjH{` zhA1tJE`P)!-6uk9$!Qh5lYmRM+N^LQb8 zdgBr9cTt$G=JUu2d}NBIV8oS7>ib}G9A4*S2sRL#fO%sU2?1CbQss*X!?egR&fBS! z>W&UGXm($D0@g7g+aFke6!dK;Q6>J6csXEM^Fk+_){b!cRz*$8E5h(0pjc33n+7S8 zelUp@IILVzKIEoJG%qnqc_ zdI{>omHOot=O+@v=_S>YXR%4Akg}*2{+$}=Erl&mA^}{8n3BIcc0wZXP`5h}nlHE!Jk0|Qe_6SA7wt$k2w7JWiL1%v<||TiF!WJtb>i$vpST?Ob;u3mX&|iLh{2{ zuKsBv|JOgn3I8aw#{#Z?@3F=nC&G0qjN~Ot5s6g>Y9QUhmNIejeH-Csn%U-yAV#|^OW zKJO?}!BGAA;s5+nB?jpJ9I~8QMi+`>;w}F}g)ec6c7JF6a3FV*-6R2Ua%fPCUq~t+!UBEX>s~ zu;>4|X*Y1%3OfP1e2m-*j?ipUnOSx{P2y{l^$wK=%R!=lB7R&2I$rW; zFd`xiP!@lX?F!(@FVfv^M>hb1KE4{>*6KOqV>UY#3P@Qefq*?p|9fh`H06wn(hR#p zM<|0{ajl<319uQ^gX4L;3IQe0U2K{_$J6s++#oxTFS}U_L&$h7mRoTle$7&Ql;Vbo z^!((dGf=@TUhB!L5#n14?^ia+leMr#;>j^_*P<|8Bw1tR3Msr_!G@>0f_@n3e73fA zw-S0b)s!4GCzS)bJM{(&RmGyGyU5~Fk?lHw1oaf*F)z>ITzW%|li|L$XO~Fp?@)|k zr+s9#T3l{g2aFH4AfBAVok`91&N|=?CLVI_Co;EeChANb7)a=7ha|FED(D6up+E2~ zztS#)xbl>(Y&PPG#6mu5k*-m8grW$ObQ}?~zj{-=8iK9NFkMzShWk^iuCYvY!1}4N zUH+JRNzjyP^cSE}tW9*AdbIv`F zCMakwip4|AB{ehdJJNC^-zP5hJ@SKwsSk3(`kGaJ9?2;k6ch`(FjV>cR_rN44Gl+I zATk5wZhsiK$)*EwiH)U=k%l}b(0hMaI+K97F3M4Eov_+|7>ET}m+jN&Vtq_~y zdb^eSp^VD5EICu&iiymvJB3QBZkB(%E~b6h#1@{$VF19>QHrhmuPa#sZe#rd~d zFn2ZtTmcxna^F;yV0(FiWx{*8ajGxh8H$oZ-K~4Z6zhKZ_Y>FT(*YG&N7d-%5D8t& zbqddSoFE>G;!=-rfY2g&{Mf>(TadaHInFE_`t&Ik>PqLiq}ToO5DBFbh5LRv>}_?` zi63&UtlB+T5=oZ<$<(y;40SY)fx+2xO=K<^j2EmCk26WDmFD!ZTnjmy#8heaD_jnY@>U zG{0p3i!hyitnC--NE)QQG|k`&){op`e-TCQ*Ex@=NhULUQnBP_5wBKJaU`Y((eHRU zvjNUEM|QE$&eV?2X%)}((Qmtw!w>}3K-zAQHhfuiZHn9^d|wgYE)!D&;&0&G8kfJL zoSV5Gqq9z@&blB@madkl<5sB-bx-<;VOM~+LS`01XAxWc%#Ly50dnZR814e``2ppM zu~zze;Dnd2b}e*+q85L*l+FyCSdP9!72Sa)iaY-{SlER zOzXZ}IgS6Sc-s30jy#CC;{QqZ#`FOu%l}kpk_s`iT#{$-d&6v!>ksGWgE}iOil8Sr zov_ShE*sFc;^y&AKHDzgnVh7OPSArO%-R*&XnKk+<#NpAeBQ&Gf`#N4U+1=2!Gys?3x22;S zaAI12VsF$&7bG1B`&o}02;$4Jd-Hv_73{LnC8xejM!+v4U@OiY0F4&T*bkbMtJs3P z;#Z`7T*WB*mdfwbE%$iC;}(oODA79<{BJ9g+}ef`C9~zO+K{;h;Xi}tZtu(UGHBeI zzwfnJKa&rydI6 z&)GULgKkaA=LRBuc9rBo3=^*&$pcS&ur%3)8R+d9#D@hc8Y*UZNL+&na*?T;zNJ45il^CNFLAV;{O5VDN zv^XpEFOmOXLO?}V`K5N;)Nl<$m2sx%UIFYu2g4ON03x%^+}y;{GflLUTBXYhSsSOJ zvMVOk?S(z+NYZ_8Nj^G!&pUI;_GEsq1c=1Xo{!_ex_Au!>Cki_y-q0>5XZo@1c2J8 zZdV5?xw}-xSX`$>w7dre4(ut0#Ec&n9TiXf>FSd|TwDqQ%jVO}ZmTK{%~FMrzd0Xm zOCqzELeB-xbFAlFCDvk+@IzzdwM-W4((*c9x@zUL93od6C`X&h?+UGTz)uA@i#JDR z#O|KIbw3sW^7_Nfp>?SQvwxjq(xPoIGbqLNAqqZHx&PWQOhy_=Qv}z|3MYXZhJ~ag zoUa5UPr>*o-c@>N)*P>)2z=U*GW|0e&=>Qp%Ip`Zn_wyxC0&jSlE*V>28JtpoFaw3 zIE+1<5q=wtg$F_gOKzFMdF*_xZWpLsU}iMA<|@An2KUS|Iw}0mlpX})`)TM! zLsj=lX1eLBz@u}u!Z=}^V9m3@f;KE*IrPBCvFbP%@^KP&{>mnIM>jLVzNTr?X?2>x z3|dqWCMqdcrWkB_F%xJzWj|&3R+P76xvXYsd$LX9XNHX1km}XsyAXGV>~-LIw{f%C>}oMvv1%pQBChQW3x&di$0-T(&X&B*=!e znF=)*&gIx=gbgS3LPg!S<~~@1fU{|)pmkP7L# zMU~egH8J!lHV*4kk3;yXrmCg*I%pC}8~11#zaQc-5iT9LLse$;`G6U1kk{Gkd5}9V*QYqL4;@b(lH5Ey$+(<9%N+x}??dU4>SmoNHrw0r96807 zRX=q>uPUUgs-YTS>vjp6h@k>~Gm*xaAg~(Ema4;!3bq7NYWw2NWWmoucbfj~dL!)H zr)NFQjMSsrPQ+Iw48<@)B$k_1F?#Y|iz=$vLKl9?A9cRsJe_5tyQ7OGUise*92Z56 zH#W3d@)~lufrhvXl@;7cJfNxzKq?|pcl2Tgs`AbQm3F|!iF89)$GLza;k!3pf`;tB zVfXtz<4L!Ygi>}epdK7>jbW0juWkuVU2{w16bIXG;ggUH68 zs7#EVU=ksk=m~>KS%W8;Bv+4fLH2k3T;<%CeRsWfXvN#n@Dy(5b-~!JXrx{J8HNoA zRnY>MvJ_I9&# z!s{oDn8HukBUV7KC?`T$1<+M~t^)#kiX4gBGPWl3UJW;Vsff@4KLuI4_-1GkQmM8r z@kRH^di{KiA?B77lO37X9hEXla+$h@yPZKzItWB{EOm?(4JYk1?$?Q80nUDX1w#64 z1iMo@C(oF=*K;#YlS+&>9ax>Zdv{p`v4X^ABh6lFTMQ%kxfmz2ChRYJ&SobOZ1o+V z@1Ru1zV|Od=xKhlIca>m1sNp*z9qI_Q45*3NRHz8cU?J52%JM7NZpK>rA)1vQfckF zFBfp$cD6~JbmIca%`I;m%=&l}Y^NtD$_yW<*aCa$$&HAKnoE8CG*V5p zDz@Pa)P7goWDP81eTb6}=4aDiab1Rm6N3n}?3jx|GLiVA9|an;dPqa)D;M3ny$y9U z@x>b#KU(8RVWPl0!r+W!UiM0pGyRu(pgiN`TU76-`DF*eBZTvYlKH5@B+}=zhQ{E? z{uyC86g1bPJDptQ{oD~G9h09IHlXGNS}OJ%eVE`T_uFVs*$!|w#`KBw=7h%HLa?; ztRFUT3{sI5LWmAQ5+R9$hl{xoIyu-+cHfYG@AE zyZ3IQwOSWTPc#TNiR2rzs!)zCyaU@jxP*EIi!}2Hdl%g?c83hvikW~L8nkl-_On3R5xvwXBZCx zNCljl1&v34xP3yxz$D1#Gb-rtCjJ^cT55}axaduxP3=28+#tzk56=E-TqhU9C!n`r z4WZQQ^JvOfx*LjP`#enj!)8tWAt6h_9}e@dcVYb{wOdB;b_8K_aRCQchPklTVjO1wyu%xDP#h zW+>i*tIe-yx&H8Qj>bPVWVn)}7(mTgV3-?J`JI2lTXZs3bF8$DP_TN{I#HM;Cu_ zIAnYT+B!)hn;Q!qtOt-{-D$*XdOv zK_-Vm{bQ$KY?t2)?u>Cv9QV&^kOZW4i|TaArU0CPu(dR7EXAI(?oj-4XbLU&7%D6` zg-O&^-X6sz+ng-QDHioMpSFZ)!5%yUl20`>V^u1?4BIE79{LyS;U~3X$+Hh{!_$~X ze0EsCsAQ7bjs=s%aTs#pPZ-jlO+;a4WRGP}Xs~+yE|)hVC#%h_QsUZyjB^MesAKEE ztKk`S0fQ>Qn^Q&H?6-lWpulOdsM?zi3CIG6R}?R<;$-7>0|HcFX}{Q?aZ+QNKc2HD z`2B~2=YHpRjCzj&f})=P1#v)*zeU&137f_ANhi~-IIpz&ZXdRKIs6$6qz>5FpQypW zqLmO$63bIEuooz84j~iC)T%LElxT`qH5y9{@i?&<`t5d0RKDR&Mh`d1j^Pw1Sy<8r zuj0iCAAE~+ab{ZgXXzn1=s%A`D*4hZ7?YO;ML)hh&LUGY6G-44_M4KvVGU>%KTdeU z%F}vbon^&l`?|(Z>ry0f)r#`iRI6-l{E9c=)itd-OOzSDzuWm# zx#!E;;Z2GpXZ!lTqgc3ZskUJppuTiQ+J0qQ2oa7)41_RcO)E%7I2+5cSU(XwU7w7jcGWj{?01Bx4&-yd%&*H*YXV8zz)+5WG$dzC_FiCkOG5KY&1*@EmYB7t z<~`+!LJ)E_&l&wdLuE5%Ac+!=ya76^E|de^XLkn7wKl*``v&4&hA=Z7_%D`joF4ob zys_rj5xY$WBL7rv?0>Y1dc&wLft(`WsY5E<=RwBwfsPs$4wq%)An zdMFX7096JlNGh`*%F&>dDQ$r%aZcA=oAB~gdo@OJy>z=S4L=7I=~Yhd!YDQv0ECaA zCaQT6o&o$i2VYgH#5^ckN5F?Qx>RvS+ zwZ6<_`nz4V%)B1t$he_@FGTTVh{h&r#PunmVM`mID>hwIBUZWIPF0#$C;^gr3j@(VhSHGoSxm2f>Zcd%d0#d>OtITos#Lib=> z?YQra{SEWk-KPldWUX2ex@8Tzo&FA;`OPB?i{g8w>tj4e>OGA?0Tb0Icg50Y1q1B^ z^bexQ+~N=08p^GZWU|+Lcx%Cjj${wQZ%C&79d@8Xm$l7Y5_j5<2pHwMgJ2?^g=S}P$$>D6QJO@ znUh$5scG#KQ%?fG-1T##&%?^jF5x-VHbZ>)Wec&kUi;_0p%Sh?;p_#w72EfCbj-&?ze{Q@3~>L^`}++i(uePY z*CqS~C}N(zEF5#JNx!NDZLDzto`^JhL_D-f)7ICBwR-vOQqkfyEFeaY9&T4A-0O&G zhi{Ps?^DTICffKFq06zi?9lVY9pFA%9=9$ADRnP+9dP2OH_|Ar6rX;H(x-1dWcQxAyH(8vPjw)yPZ^qIo-lDmcr-7pC;TZ=OE@>)iTAFVxH#g%lbQ>d_9!o7>98lTFlk!Z6)(m74W(j;AxChj^!kUro7SFUJ7uy~hDX`+nt zLRSrx344r5%)g8~L?VfCA)$pqn>XQ#GvY|(2x8{aJ^N#E8yp&iG*m-(TJ^$I{mj0z zN_)$3Se#<`x7f%}?5gf10n?nR@YfLYIrSpPN#@coP6{Sh>hzatn^OF#4{Vv_k%)s> ze3i;V{aK)?ao_tDdfLYm@R-Rbc&Qu+6_rO!0daIE6GL!-OQhpyb^|VC3427Pvak1J z0XiN2U`%g9L0XGy5*>6pmNS`-pfGb2j95pi9#b?x%RCoAC&WrpfH=FP?lOtr@7BR16khP9oAz_x$K zR7fekGVpp^$QGtb%=7*^FS_;a9(aLI(bO6TzweYt=q;=9o&x@mr^{u+YI+aLXxg?C zCpG*J7|CQJ>|EDDH-@h6j87l+MC~6n>}t{kV}$w>dNf-Z{()B5iW8YNdU(Fi!vit6 zr`tgQ{Lj8DSdAn17LU80Q6M`LzrJSeIqyNLq6Fk|(M@=majSqkoHt!K211V{Ba zNMBHy58iRjT4!eBGYnri`XlB@UVaZ%`OfiWtj7vFwZ63U*1BO`UV*7-1pEtvHUC0C zyqN|W&sLy!W{Xb_8DZNkyHyOp*81gYP3M^yHn-?L)AThOmoAHrc(f)_^9N6eJ;lU9 zPvEn6V$aW?6LSU;v3!5MQE-v8o4#C=LC>C9_l;UVBR&%Ng0>o9K2YJGyBOTn3YE+i zk8%I%%q;|1e!8&6t>3)30c2%BC(CXb@ok%z#Vr?Lxh^d6a6 zPXHLK2*vPTmJkb>%|pMr^AM9T&E0LI19JOc@xRa{cIaY|fEVsZLJ~#k&iD4Z9?ckA zlN$5jpczuYMLO55pmrP@=(Ev2-xHnxrE643ITpwf;NWBVI!N5ZG#E!6(%`m%>_*Gq z44bP?m0yYuOFEy`)}FepMHIzmMH)sWtSRp?o7ruu@VRN1OXNEktgyB5}+XE zT=lWlGL_|ZmSO@|vPWW|Cz@8FOp`Y=a7&E^dHij(hcYd{FOSY_CDJy!T-s7P=O@X!QX4SC zP+t?zg_u0aO-s$8j^#Np9oNzC7gVuAtP*xL8VAah;M1N)gc>I}S$7%WdZDJ+`L;d* zj>F6U7$Pe&gE(mWh%OFaBTrn8NlU`=ljX&almNhlRib#DV)_F{ORr$y;L zhJ^)Dez0cK99hOZ^l90@rSZBQBeWpu)U#)ap1*?m!{CYsqy-yO;<($m^zu>%(JPK( z=+lkY2591|JqzfD9|b>?alSKwq7vZ{;?f#9t zQ4X}!!8B%R;v6~EQsg5{8a|43Egczyx+8Uu%2er2hbC3j_H-+a}706J$tpe^bqW;t z*E_;w;#GkadR`5Gv_#!$=D88Oz!7wUjk50R?0_WBM_q!m?V{E|Dc5~|`b?;a05aj@ z4E*^Xl#?FRpXK!4#fxh;vp4~DT5A#~MCKuuaxE8KThN^Yu9QrG%VEPjX~?>0zvf9E zyksxk^3xKiz$%u?cAzI~6gnx!cAQ&06ZIujzO8h}A6I9c43?)gbGv=PJTrFViLXQ? z*O8UQ3*{u_i%71IIDsqy?)EiZ&t?Tl6M5XEkWlsD#j$dyYc@l+^Hsu!7$=VFBEzIb zMSqPpx?1{dz~H5-AlR{pY5wBeEEN2te6Jiy%`?7c+~*H^_b+eaD9$$9XSQ?Ji}_lo ze;nZ2GQ>bDx`YYWbW`*gBptL~B`Vs9#aBe7;M0gLL%O|gIeGkTz948&svj!2af0-? zRXaLC8^ugGsI(04XA~o$Sv&OL)qmRmW|aoKLuD|Gpv6ka{ox+5f=?Y@^7p23YYy8D zXg$7I1^Mppab%c|KT<8_(=ZF5Byv|KGz(=W4B{Uua5gR?fM2ZLtl{aK=?Oy1>NX(& z9iV9t&WYdYU)(*+AWx5l3GIEVL`G^5Lf*{Cu`fhZ;afm>knR^kLE`;0kl9rfh-_&F zuPs`uy!uMy&u;X$fhebQv}v#uWWFivGAOEM%22Mz6W0HYZVTZQafJ*jx*_rlu^9&dTD?v`c?VAq7qC_%!Qz0_~6DRl8Zc6xtn(Whkv z<7A-48l#zFY)bR}I)U#8I}rh_M0NIprwFINKmty-Wr;0m4%>57cysITP|MMDzEvx4 zBNT&I}L?tX6y94iBAm%AgD-`UU^A<0)r=3{U6tk)KhSBqg-Woo}Ga z?}B*p%4MRVHdg;OS0El)JS0BF zyjl)G_#Rg@KkH>7KPs$o;!$Y%lZ7*TdZ74fprLub)r14`C1_ilSO&jcaia#TpiN+{ zI(dnPKmY&$00000000000000000<}^EBOi9^ar?v3eQg6c3*xrf4~C6L_#Ax6y!@d z48+N-_YSOCOp9?XlxY%?wdTzN?UQ(5RQ(ixk(K3=-lR@64cRH;kzceAzMq@wT4@Eq zdq0E{qZRE|rI)UzH4yiEl2tOKIc7o-=)~kEb;Jlv0oN0W_ZRYS5`O-o{aFIVs3?Ze zfXO+t&-xX1VP&&DN6^}O9NoTV7vOAfL%%Hw>c2AJ&5J@)xsd0|-#1m$6owJOb?M_# z!dEc%*y0b%Ep~p^htbjIK{>? z_NETS_(h)1*Br3g`5kYealj@RAD#Y&@Yvj*^rt^BLe}}%F~|^_6cJElg2?R&*~1F# zF%BB_xwIO0muVLnOK<41xoXH6gwG*Os>MeyfX1~l-gkf+gsO#K9_6^rHs=YFn3nU% z*#=|9QZT@UKGX$jfObAxIJt_QInyG{gU3ef2lzrAkEl=L@>;S#24uZumka$S7uGlMu&nF`gx&<_ zn~pSf2RwwA(->RwDCEl|y3QbPw(-0O--G?%?)JEI#Z#tiE z&WfFe=bnfH+??h(X@I||Ppd&JJVc+dfZTi%{y>2MIbd28Aho;xGj08BRvwRhxxG(F zxlp{zk8s7BGvoorb&Tx#bVx`1g$S}X$9&2m(@BYeQ28H4pa06#nlO;rkcI2@?8)Aq zN&Csyq#koD>*n?q(<0B@1YohCn6d{AupWiGfb8OVMHpjRN&qJ~MTPVi39^Df3K#Ad z(NnNuthvM8f|LYG2jVAsMJXP&6_6kOOcD9ggyuVZmh(c0Oab!xkkC2RCm*g1o)pL& zk?z6mFfn{xeeO0#$sqRJP)R&kQK_UY`Sv>vJ?}@uz7@oxppO+AQOmtuucL{w&%uHG z8Qb99$1`R;+4WZPNZO7K=j#P3-W67n>O^g0JfuLbPTI6PFv!TitEpakagpz#$FW#khqLS#6QB%+#_Ry zjHu0^RRu6Ix@qXh9>MiGW_qr&P3pt+%s@8w=|hcpZ^YdyQ6Qz!8e*wwvaunJY zjwIWgYU^WIdi-W1nTaD>6|HE!WL4pH(L5cv(f_ykALR|ehyQW6h(47>&x#iErz3mQwO;(JG>A&-eP2_HtPuGZk=nugC5&a@Gi4I8bO`z6bVBnS$vhM(7{S<=GVV5qp3 z?37vM-Ven5lkkc7DUegpF2nB5?jFS_Zldx-rstg*zCOTYg75s%b9ih2WP{QUm%rVH zER^a{YJ2rwW|ygRnIVExO0M?tCNP`GmidRacl}1u?xU_^Zs%5lSa^v)V)G7I7KKR= zRVj#P9eK3H&R84l*oN|re8-SgRngaehO+ik)v5kE+Sj;SnK5KY;hwT6qY+)A=I_Db z4JGZ7H)B75Yj4>2H*GlcJhJJWw^w9ISg6qnjkc7N6;q+h{$m2$R5A;r8Rh4B|Jte( z2W=Tx6kk~RLdxuvRzKR|az2wN_-sMdEP)D;JLhmKb2-G;Ibfa7IG?Lur|2J%awHq3 zR`m`3+AFgi5o||r)KVKC9*xjUw$C)%M&tIe4m5M`0qQ3nsFD#k zt49f3!`ox1TEuZBGuciEdLVwd!YJ<=VCSc)P&eE4%80=%8PEc@@>jV=7L{|Rz8;~~ zj17%_frL(&GiW_Jabhv1x$NNBSCS-zalhpz0D*(oFi;(Z7UGbSuG=Ehy9S)aPb;JM z7hT^L#33c_?Dy$QQ!l0Y!q4<&L_^=JrG1sp#xDo6^V3WnXAhqv$z$d3>Yg#VNU@}t zZQ@kEH?^_{V25hR7A-+UHiQOA&7ObItFr`jApcBV3jr%Qi)T49hi+Z^;GWuf{4_f` zfTi^#JpWsaeeaq5qaHiS^P2zTj;E9d^OeVxL*b9Ym~O^8^#GY3tA!a=s=s~gm>nC; z-s;p1Rd(6!I`G{ywbRnIpb0OJ0+)k{^dgv^0&MhaaeG}s`as}He9PF-Uc)$WJ;`BS z#z4o0<3hn_SVab ziqK0w&yZ#+gpFIAE;+32ti?Y%J@8%If3=in?ttSRd*E4i@)0TFqMBW@bUall{`*Vl zgiFi7E3r!i%!Is|@zMS;ELwt(;#$3_4GZa=lR^Vpan9^YtqkG5c0m<=W2v1BfyE4| z3vI=c1eP4fpom8`$OIR73$Xhr6-YL) z=e)=t(gbebR>Xs9`**B5;RGWvCj)?qn-XQ}WX+4Y!bDPTZ~+CBTzHXsAw>#Rv3V

    tw^E)s*lL9hbD>kGh8P8WPj;9LHuH@qgJalIb~X&+^5_-O-* zv#&uHqMDz-@ezK8wM4kU)$Z6p`!k^$MmBEqw})XF5-GL$t0O*3>)U@d(S}0aiE{II z_k1eZ%;sR&U}vU(RCyS@WAY{Zi%-N^n?kkB_C03OzH^aor4c!e1%r{ebhbjq&_SapdBU{4aff$^%7N7+-48L zZF!^DnzYkae%50yed1+mgQe!4Py@6}KbHL-Qs>h84%?rxXG*5R7`t3;q`O3l>&NpW|DD-(miyrt?IEKaMk=i)ev(1;Z)A!P$ zw&=nOa9C>bIG`+moEs&~z1G{=l#>rDTMr6$2p5j3Rnb5`C?q5K=gN9PX}BygnE^Q) zB1pLh=6_G3{mPE_A)5~B0DF6~Wt@SW=D)?EnIM#3cg?*GH7kgb3B5&+RoYIehaK8F zv21z94-K-FYjDhutx{o$R#KKZCv$YV=aby|Xw?^q9W697e$8BjNzTPrOxxMU>&ME8 zh9f@@WW%V31@5TVjzpws$Fb25ID*ijREVBlT}*Il@{r9dE;Hmc^BoNYy>y?3`;T!W z=Egh63oyVR&VwTBP)W(K^Y|raJNY@>di@B_lAKZsx=vUlxH`K5wrbvN-bz^hFT5d; zPkD#@QyMpZ6NgpvThlp-P#^HZ(aV28N;!WiUrM*Hzy zDzg#Iw**w@val50Cz#ztbY)RxcT{6CkuGtkJtj!G@{b3zeSx?`$ITKAaZ8O`N-ATH zlwR=`ALfWTYS4N_2-swT7EHE}9voIGI*c>W8&t(y8Mh$U&-x7$4#g@EqCh#NgUtWc;E;2z17Q|8 z9tzA--D8C$JEzHo*)&fjUgEqwcLg+C^!MmyALVMB(Y26ClAk?@-Dr6_B;B2kF@$}s z*O*H-{Rl1u4LyiA8AZn!`@g6ZD&2CqQ;+#8&+$Zv2$-F?gxon?#tkPa7keY&Wf>pC zaZ+EVC@edk`Y^19BPi{}|Away4g{ICPR1mP*N&tQF)j3|KQ>$xLO+$)1REJ7o6Z0M zPgeUl*$!AJ#MfWLYJd**8h%i{T&R!2a-QDCK-lj)(KHltGI7Uc&^!i@4(lZ2lD6(u zHu$Qd;11O11?<`QznSS5vw?)|@x#<%!JX&Qdo7_ocieTLDwRQqy!BJGtfPXWWBB z+{Rc);{3)aolIlFvOb>qLTPLd{!Iq((HzM`k+#g;dQx!L zIdKPsy`Vlqofe%Y0UI^35r`0{!4nj!r7;#z0zi`s^*fg(e836Q;0+Sr6!G$GJDZX8 z9w|&N_>~J?jPNo1FJ~!9b#KwMa4dK)mI0!|$OxhfZ1XWfj!^KiYq~gQ*0_pE%u7)` zwDQo%)g$HT8!bPlVTe;1c~)lq$}AcW@L{rSh;9%H@RuU2_2r$$dQ)gu_c#cSi~Nje z+jSDKKlTwM#@rMxk<=mY*tM!V`i&I}FM0P1_c1T29T4T+_CMzcUG@6$TGe3@gZIAP zpJl4h(Bx$kzRljC8Ry1}A`&XiFyU@n6}!mB15fZJ(-YV7Bi+JexbjwTxEOakc~K_C|9wu{H+Bpw%{teQO#8uTzpzqgDoI=`&)OPM+~kHk6}yh>-m?FwuH{K zf(^rXh2Di0y)$CJ1`nD{fug%{2zUVC0Epd}6#eQaHtT_P-Q%U}(Z$m)v! zHcrmK?+G0cX>ON74Uznsw+ym5XdiA03Vuw4Z2j!uDnZA8w+_~gf!)H9QGCh{Hl#M2L#a@)%6d6X3J|B? z73AnRo03XD@F(}#NDEwr4f+6M-_lo3#59i&X9#drnifwsi!hdL`XAu#tPuH@Oikh%lFka}2IiLWC@3cbYAL=sZh=RAR|_(&tDxG4)bPf83b!hFLJl zS8?rYM*@5C(F+}5wO zR%KzQ789{cJXh)N)9G*L{257fmwFuuJfiB;2%>qpam}A*e{hCj=3o7KT}}UR^U%u-QL_~8}x@uit_YMgLO4{;F)S_t4zp`e3I`cLo;uPi9F+_+D44BBs zqq!(bAwMZIXmE&_VsJ+?P)aKE&pleWCwFB8jM!QmaK+^31FtOhN)hL4%i<-!)g z*zrQ;%|)B7&juA58!D+6xG3!GZ+E_QzqSuAiJv1)wq-Lo9qc^7LeDJGhE3v1Ws^-E zRlWapB5J4W70!luhEV4Cb&$wfXvPKVA1}0?XE;^03l5Hp+9s;(Y5n}F8PgRp6;a_n zo(O^ckK!g8Qf~ju6JT$AWdOW;wy%Y(;)`uQcJrRch%Q&GDXJDqBfJ677|LQ?@k89$aWsf{TgU`hywZ&FSGPz%_sn7`o0e`hLS-w z44TaAB7Ia{3z}I%!K_in8D>31{g@M;^1bKs8_nmhu~P)+%t2_&KF*jX+mDTv}%7VVF*rL&hiBS=M3Egb%|E2OxiN-#%oFKNRI?R4nEK3~MU zFx}2+n&2BnJuj}0`8L-n3Caa`WJrVCA5(A(o%qncvEnXa_CaMZdIq$`C+0?;9s;=P z^0qbwpE|pc$ot=^V%k%BRgNA5&mIFwy-(Ek{kFy)fZj;p(UXkvF#th+4$<;efZ`_o z&HJdvx4eu3@Gm3)aW;{S4`OJjN3={gDqfzsEt-hz7y2$z$bX9gzwv&u<~2HCriyl;%7u+hQ0utlk=`L6mb^xwuUN*zt+JMO- zyINGt7%R%_i9y9i@N}2@I@M~h1b^2bDY=Q8p+4|?DrnHJkB;1boW9ydX<=}-=E?by z#VwjvAP`JWaMUN`L>nFmCFb7%qKPxzX2U_KCVbOfQx6ze+UYn^FhHSE$5%+!vw6n` zBmeqm6?ag15KxkC5qCz+|5F`4EIq6nF?|`JjiBHA$m<$>e<)^3MRTzBieO03(i26~SxukqRzjQSQ81 zcN2JKXcqIYzf28$>0nwZC-ZK;4OI0*Qh?0~ zZF~Pa+;uwvz#V$P4&9MMa~D7jmynP+vIkjDUlSJy0002)ZI0^XfY(6<)0c_>01eH- zHVb6{EDUzD#tZ=OwGvDpPys{weB;BP?_?7V4I*X#hth>dpRm8qa`hn?ugE3i)La*b z7|i$|ZAU2eP773t(7^YWPXIfSf223N8?3`pV__#5ue; z0POSTvuGU~1JrNJmriaGecVCFlb%P-KESK{whebla^IS zUKM=rvaE8p#?JjJQyxe)T}E}x-makuG(_^K_T^Rr!5D9FwFM`!5y&$Iw~12t-qy$+ zf+3~6nYpPUv~w4ziCN~VQ<~E;8VHT--+Q2|77|+J@^}d`>D5DH(Nj)F3kig(Ai(fJD&~`FxnHZPPQAY8<}R; ztM%<8LvfM3q@i@1AMwgmRLIN_n-JXaz3DLb8|l4qOKZ&^DX^Ja+d5^2e(DIb5G6|9 zmd}ngWa_jHKw!51(@Vl&FExwcsK_H`xyz=FEE!iH#npN(orb=Dx3EaOb83y9$eQTa z;tw)bLg_gOf_^t$tr~xP8d-IvjZA~ID9C!?WJH)%lZi?4zH686-{K%e(3<>;e1Y?G zZ4r9rbBU~QZ=AzE+^&Mle5ehjxhkRl_20q=(&{2(?<3Ea@e)57!}qbOf*)92{BTYH zu7n;Br|#30u`1NB|7w7+l?qdxRDE*;j29t`{(W2Y0t#)?cLQr{C6)I%>)cZu7?dEB zpsOKQp(;`I<%op0xG@>{dnO%3H-$?m6$U52GAp!P-S|AT8AP*xL#T+;fwrlwH#CWj z&6nC9UWVzznS+b)pKq|9jF3>P%eUkqS;Wl1a&>y_F4|@^l&Gu_2aUS|qzB1rzV3Hn zu&lYuFQ=eMd&m|zpiTH_5HB3=sI|fh4OvKC zsPT>=O4+M)3exF<&@OBc(mi(hxsMLMQKc{Ae~c$r*8KtFV0v4Yop3{g3k48VTUF%G zjT^rS!>ZhdKFF@%xUwdQ7nl`7&+t_y^c}T~sFs=s(c^23s-C5!5{QRGL3)bJVGrEo z&_5^Eru>3((D_u6f(Ok2?#EcSG+D$8*7i`7M7Vrw+w;fkm}}l{895wm)ufHQX{N<_ z6wxj4yoh^=CI(`wqPvW3-LGnrotG*~6UF06cS91H5g(QbAhAQaGrHTSA!BGD*Sl&m z0Sz6`$Y)p=O(ne%xPtJiyl94BG+f{O3wM-w)uw*UHl9@Bd)zqcpqFA}hsT?3h>&R? zq~r8T?J{fePha&!Dn_De#-$IuKrvM=x0Iq1l8XIU1q|8Ar?wCE*anM^TQM9f(eIZ%o_@Xs4iMKnJ4UB+M5B=4eviodEdTyiq|tk; zWkcHoM=8YN-XF=G$7_IZxCp^xK`~?+IvOED^^=M8jc<-x`S)?T+N|>?@5?L)CiIc8 zxx|~W=zqdL=_FC%o3B@F1HVJOA^9bH%%AGldwR1j_9PgbJ6j6~(` z_3zMJ;hyIVuMT@Je=F(!yWhX|Gkh)ed@|BpB<1J~I>Viv8y-pW5fRH(RJz@U1?cy0 zE?yD)1Q_SF&&>dwHi9X?7{R5=BQDg=qGF0X&pMFXtmuHj>e|bKUuOj7kGq(#yANx@ zdWkLDR1cDoFYd!X`6Ia$lDL|R4@|mMdfZU=`kByO4h^`W51p+$UV5fKbA)b=c?GLN z^FVKwD1_PG?BNfdh)tkHJ6Iq6?6Y1!>BjL`PPl^5X;M@}Aa zoN||-Ry!ONl@}n_orDYfgVm#iu3_!5Vy7`tIb%DiItB$EFx2ja3zd*^v}L@J1>KAp z8#5M}sEv0+xy4=Iv^rw5%OcUQybP#eGf^?_$IQ%!&OHuH0lmiP+n-glT-wUV{&MC6 zoR0ubsA=_i#KZT4eMbdO?LdXCWdJM;cC!2P;c8#-{L)hgW8oY7P?*WsSMo8mZ&ul2M4nk+QnYHr-6Sw$`mrIz#k5y4DoPDjc(~8(}03%jk}Q z&Un=#p|nMOki1ljUVRf`oI#yd0sW$W(_V%mH*hbLoVL3o4+ePaEvHz|iO+{FQyN(a zU$QB)Tb#bg2mp1&q)I2{6sWhg1X<0@9N7sdGJS-|F&w}#H}l_N=jn7ah1IGRznMpq?}n%Rf>UA5 zUDhMHhlvx<=mJH3KlNDuDH&xBDxvjIp!aAhGU(AJ~6u=@x} z-e?24*mGx3CQMW7oW?gYGZCsK&?2Ym#iI<>La#wirBHu>2cE=t#y<-v@FQruR8= z;V3)=8vBGsraLTNFF55csS2)HD=GL02ky{XYgcF&2pP>uwco=fEaO-4f#M1IYsMR+hr$mp8@ioYFo&Kd|1JUo7Jmy%A-?Zfk`5|DqPmb%n z+dr{#R2<=4#h>3?21nwrV~~d9TYU3bx+{is2gm5J#Xj9X&n8gV1g;nN(nOxy$-_M<2Pd3DzwTw3q$=*aB$^2uBLCWVK_*d=u=Az{KRf|e-MJ0Xk{$p z8Ykmj4WCNq&Z%u_fwhN}TteTKtCK4>eQyj2cw`2R?#TnWi->e1Ti+i=_($5YNZ0Zq zD(8yCnBw$z9$;av6lQf|evQrgs-1#e>oV}9;BbQ{D^AwS-Y+z%l-BzJ-IF?9axD=S zgcnd^$(;)p3j>qhg@rs=34C7nBhn0iy{UVjMSuah z#C*7$%cpV}m`_$hSm{ry$G4L$T{S-gM9mx0If%}bp`o+NeOj@rHAw6?s&jE!VHw;h z+QJ#Z*CXUBp2~f1BC!umNCKUy?fh*?C?qwQB?dJs9 zzorzpW{QMab21|NF_7Fq|@TyYao$#D*AGf_W?PYWwTkq&K4z)&5iN#BX; z{&5`kuL$_u-~gD}j^#jO4769%c2e)QA~}>MGLh+Vz3i7?N;J?}Qlw`58Q{XBD$MEv zdmE|l#mPXrfO#uiG|mTm4=@n3%QRtbK#+@KhPp{`(y3Ojn`NA%hQ?Sr3yvR8hcRH3 zBPot#@YDGs_HJVgfOd8P0}O7?zaf;<`z{cGz7A+|)DvByZQ9zAl8tZ$cZHZyJ(R!W zI#PBr(*Pj=G~^T=HJO+HUYAo77Lf^SQne=^werG42PrAs{;yl;pWBVRbtdZnk5DrX zn0!RpYo)e(dZL<}mV@VTjU8R#hYDF&wS`fHAUKgxP&4lE&xG)N;j6{?&=^nb8gH(6 z_cOX38s?Gf2ohn!L#fi$MM>g{`>BY~_zx*)^c&tAi9W;>d)t-(3H`=c60M6-<}i2# z@j|UOng1pj9*8O~MTio`WQjiIcAd4&6`n$q7#JG!C2*A69mA@XA96y?Jatj6ZdGIz zGXU1AOG+O~A<8@Hn-hhHaJ(+?7Li7Ym+m&4zw}C1{Ro^lvNKYYV2zsNA&4enay#$@ z&W9jQ1AL!FP0`_BleapUXPk(4J6!k%v6VDURWMgO%J**yB+L$|7Nw*2YHP6b9FY|3i>INZ$y_Y%=mE(y#3F$sAZm0oU)KLjdQnIEfvpE6x8mcg@HS zJy`J8J*+m$QID3)YZ#+WtvSnVY{ZXj>t&6v(#xd^WC zw)FMyMURKkf2NAxWoqiQQhA>Y7F_JeSeSwvA56$I5_5tgfI_G#ZIuN>G8ED{NE4?F8MMXePKxY)7M+d$yzk-V&;q5PBZqWM_ zSN&zvs!xX%p=gV+eVPw00$YT0h^ftrDMn~3z;>2h;2zY98oOjiNFmm@vkn!LIHl=i zi80P~)13ul+v)IL$jxO^5X9Co%K~7gz{7%!jKhRpl+Q7fd4rgbz7DMuE;A2mX9qmp zWmp45={%a#bOzVIAP^y@ma?@K;8G}Iy*D`W2 zrY%M>h=6tjm~?r5tM4$r+wI|M?b7eUDxq!K3WMmay#FID_x-J~Bvg`c1JC3tn88gH zQY5r%UV{%8PdEZ|R7jWVKJ9K*-xz5I&gY01rRk}4(}sF?k6MmFxKk;FJ08bnS0mo3 zw)y{RKr3JqcW`$}*nk#Wb(f#ERrnm{gf%I9bwQFM|Dd|3p{I!vzT`)0B8-QYx{#zC zQs;leFcm&EED_L~0cfwMbP|PD8mqYs`+=?Zyj_E8k}}fd^=li7_PLx+T}u3XW7aFK zND}uOLTlq)upIWbcrCS+7Rmuy=jOd}6ilMoF?6vRG@@x~YmGc9`FGn0j$o@gy6 z7GS&aI3t;I9+>wJGEqGiwhkj@_^riGED~T9P((njZ{3Sf81~t*5J||R4iV07AqJos z8!z>w<6EVorjS#?QxT)2E(1tg!Xn;xO=&RH%Nh-!M8f*~W!&sr4KRB2YIdmI=M=wn$MAm8 zx9*B_3P_wRyc!pX_R?%6z3Qi%-{TJ_J%(nnWysHZBn**|?r_M>fo+5M)?)1ND}UlM zFH}W@EZszCoaQVOP1`(`tR0x7oNBY7o)sZ%_3otdP5S;`sB|hG8&$gHs4#FQ%AWQn z!jetAQm)fANmU_685__3Rd{a$!QS`5Wffj%)+3#R&=|Z+h&I=)2&qUSr*%)}4}3~BK1rVaA$z<( z4)}OLaGOE*G^QN)4A&N5e8H_3A$KEaCykwVzz-2a0tmx4J2=(Lkd#NF8dF@1RqRX% zMd+am1h?#!>3jdZXYIAD?soIEnaL$=AjZ1}nxMKi4r;jDhb8>{LA1Fi3BV=o!USDl zKwC~6>)U@fuTyIMTY~0n6J(8r<{BrILw}%3vV`mMPCx6g9DRn-GH%zJgUusFqEVVl@*a*NL>Yzn`m?w3A_}qIb-w-3R2Bp1sLKO`?aSUk+6@q5 zx#!SvKBZr^SE#yvVfn_KQZQ*1+x?U+Mi*YCzh#({SAV@L3_GnU zM7hWZko)na0CO8=GjT*voyPJYUv3E%7SJk^E0Dd2eo)>CVXXeoSSd& zn|#no>Ey(636?muq=FoC5oqtHg4nmC!oEvq*Yc6E{GD9{7Y~1>FveA4Z z!n@z4AL_mDq)XK!@C|}85h-_{$KZ8Dvoq+ubvNnXS_W=Nno6yq)vrhL|BjC|RVX1s?rHQsTX9FAdfj~# zyn7COt5p#sR)}DekCuu_XeKa!+(uN9N5Dz6#h^{%)zGz@0wo)TV+IBl$@p&P4{QD; zjv*#1r9JTZGCHj;-6(~&N#c=TCHe{SRs}u!ZV3rD&;SGHSPUiF__Eimm^Ezi!xxp; zDpl(-Kd}cvnj7v_pjgDj*=M;7Re%5+=^K?Tm#Vc=bwB*#@FNwR$jxZ~xo%5~vim>v z0O7r0IFeQ;fbCX;7Ft7-);l<`XFAktp$4CX@l&@>76v<6;|2hC+KDC)r~sk;K5^mC z_p%9whLJM=!|6h!&)8q*IeL(cSL5gO)JF+Ft$O?=k^Of&50bLC3*X#)Z}DXJ#ylZ_ zT84yp;^{bfioCl&#}e#teH{hVW+5MAe#1v}r-R&K~04za`E_U<9}(!H{y7i8#pJi zw+cxGbRh$93qwaR=oH59gYt#x&s6tci*R2thnf}slrJn!jVqVUF?61*pBs$UXeGEi zHCNw;4mD;mukF(UXi=L2dY--iHtF#b10_fcGFaJgB&=sIfoJ31L&5b*@KgJ^e^VW> z46KakX?uq;_L{npHYn1lJklyu&D!|If7zS#4@DOebq(}ycy->G@~{OgDnlOJ=<5y& zr9$VWDtN!0(VOAR*=MpFR^BGwjGJY4naYGR!Wt?R!CQs%v=`#4dv|sAF`XNGDZ$v( z&~;zwW^EB)B-VPUQ@&``y$i+o9FA!LZP>0pHK?fIQJUDZ)D+O!v|g&l5Y`PMR3&HS z1T1UdmO0YGf8cl|Eb0@k1tcvgAxAT|AGHAoV6w z-AQ%L&Mzs*8|LSKqFr`^eQlsQWve4pPb;`D5h;L|!9+BD#xd%~11$|Rx%G_MJ)Dy8 zw_L3oo$@h~+hpC51YkbO@HD-8T~7)0Z%SbgDOqYNR>0+>mtqXBOjqKj+4ld33+=q& z=?o&yd0%!S?B~y@xzCm;iyZij+TTCRM27jq0>?@uqljJKwTzJ-;Dvs9WR&{2;D^Av z#hx}xO({}lxCKPdq9p0znk#w=3k%0>16=1?)Nz&<>AS;v$aYT;AB6jlot3x^etEdF zJ>09h_4Pqcn+NYO0Uoi<%)&k2S<1n+GsqW50Snxe9>1)8W2`7Jl;*YVcWv9YZQHhO z+qP}nwr!j5dfv>=PO|%NlWo$b>7TY~a+03&Vf9F`9*84yBR&ei)AC_*$@?G&aK=AV z?s51CZnzeRSH0(|xyf-Z)Lv8^Q5AUqnh`E6b<+6l*a>M}*gk-EQn@`{^{LgXFu>B5-q@{V9yq$b6utGtQ?0sm?8?2PXYw?Q|EO(RH=vw>n z{Jm|@8xt@OxIWdr=>3#XgU?onaX#sSWouJ(88qu(t}4P1(AIMv1hDFd16f||Kx4tQ zBcJV{xB5&j%7nMpdCZHk2+Ovph(c3i&r!fA%Hp$C59|+u&qLxF!5n9?9ExL0PI0Gu z8(sVHRsYODSK8aQ_Neo#a5I`Ez3c$RtB{kITu5)`D>XpaxGzV>GQo6!Dg|ax?qr~a zf>o&_dXiXB$+25OW8kdjVW8nz~RP=oDc~ec_Ikovvj z28j^&YhuX_1!}r+1H`M&3@g470uq)e)%PuIz zZez_c5PS|uXLhq~E@qEl*oz373kUtPQD0chnX@b{py~yti|OHIvV&y@n@-zNu3)?We4aR z6g8d6mf&wPL%_Si_g>OIB@MV&~DZmmR5{ zAL(z+-F|p+V8WU)jz7JwCq9M+cE!XAWNxM)(gE6Re9Z0Du(pQ-*`2o36HD~-zBBk` z5m9Y+)z&g~4T3bVb|r|p7IiE@VL-}H=#Dti2GY#u+vDW200HqVLGSQ#EHTuEAu#0s*ocm~Md!N=46iAo=kOt+od$A zJZs0!Rb}i>!9FVxZ)oup1O=u?9BAC#%V`$&j$6**E3WdBuU1yxiDKZJxpolPbP5(n z3t<`YmFAanD?Ps9S@cJ7biftQ{10Z_a{Q?qGvPa*!?=J>y;!MSc*Z)=jJTesF613N03 ze$i2jsenw5D=)o?SpQ5rI0D;@^-Pw*ekF6?iL1=EUHNC>v@U-cE{C_TW@JM%EnmD^ZsLjd;nd)q#Clx7uiPqkW}#if6Nx)tX>Vr6 z9}eJqAS&9Mbb@S@tzotEcqOF1H)7KJg3hzWWD1K&%p-ZOo^ou;76MaR{a2MpMXDH& z^= zm$VzvaHj^TyS%Ed2j50}hALu}NQ`Fu;gLH8I~s@*y+0NRIUZJ}C4X^m)bc(t`geFgHxj%m_zO zcg5%Ea7m{BfEp%$O>#+m9OE?UpYGAm0TQuYuC(0mv(bK&kG61HOMOzzT{XB%P>UUm z!!F!Z0o>x12SWvGwfe51*UH^p>l(Lr^ZoPizGl(HvcCbrkIAL`5cRs*CTO^whD5JSekL3bCV+rSPM^N& z`=+WLbRn59-Xu$Trp-d&wg#2{x}%Jf4fJ5l&#atT&(6cNUlcll0OdP>^}Z^Km;1i+ zF*C<}PY~nd`aEjxR#N;h4kX8+p>Z!?xw`tgkRhe241d2do+;`uQZifp&KuI>hA&W7 zG$VE9J0#qfiQ1s7n5iLCQmkbc86=6lsq`XmKt0ls--T~sUHUS&C#EN>YZ4iqX03=`^B*hTXEB%qG8PXhNgTwrs z3$cW;p}q8{GeY@j+5YDmP_eR}vZS@VnTd_%p}cHoV%iYfW2-0kyi8{U4ZGK}_9FO9J^C>H6URqFjWRcDB2dl?2oRzz=G6M~w;!P|B zi?k~QBq$y!L@$GEL?zlYx1IgVFVvy&XDvqz63c~HA*>9;XwoWk(As=l%TEHX==E%Y z$~dy9)7v2X8BG0>=Oxg)cs{Ele~owa*-AONNgj|3O|*P~Lcme}^ajq0BUwI-&d}6; zw7G+rb5l}(mzQ5xI=Z*+w-meYCLjMZ4sakU{HTFH?h!j#_&e)SSr4AtA|jY@@@*V~ z+#=mvyxbf|F{-n$LEb`5;>jPw)HGx08K__v;Rb$vakhKtxvC5(>gqw-uZ^2nT#ttd z0y28a!E5OWG}|89*??qFQ&-w*t-2>-Uib#tOXm+kmklo3TTp*H2`$%otL!*B)Y^NhQOK&p6miq~2WbYK^tsQCgh)W*KgRD)bjqboGJ=cU2Z-v|6gWVlihcENtt~K&Mf=mu&Rk{4Qd4E zNP3Qg+ZKrapo!o1!PVD*Z!fX028bPNcfl(&w0(;+S=Rym$@7Q1f)1C$zt?UjGNL=o z>PI1z%qp5*6yn<|paFzVzkn#QlGN32PT1%pPABKd`TME+P&$q8{)Z-ChGhG>R$fFI zZ!h~Iv+bG(s^7>YFOGn8^ffT+ZU$~}qzSu{YFs@6iAPpNQW-FOxR`6O69Q=|4XnS~ z5uu7-f?Sm{(@=*pJh3+_9i?zP!b$!yVG60QJ9Lj+&>UeH-Y^#$w*r@HlmS~Uo@Z2$ z5oVRAZc$PvC+d$cL!6_>`&7Eib4(puxPaIjP3DvDnCSnRk){vwE)!ByPA&-&Bz#QC zeT&oO8%=^J65BV;B#_lHLJ{}BZ=y5-RVjcjlakNf`I~tJz%VKFGAsEqL&`Gb>==E7 zB=78Euk#URA5(dU@9J;XYAw}h5E$e(?&DmjB!JykZ59^4(IqN5SYY40m=TQDldmeM zd+E)^9!{gf7u>i3(c0}pz_g&8+Xs+oca_l%HM*{~2KiQxy*BQpmY*EnQII7YAaG=) z)ZjH20+3RU5wzT|k4kFGG%la-FfxwK7`D#MQz7)~K9k}DB#D}_T&{v!2OR?qFKdP^ z9?)y&SL>J+621~GfEfUc9r%I#(i;htSWhd$T40n8#<0d6-)0mXNqqfKJoC91vPj#4 zaG-7(sM+%JRd=;TeM>7V%ATjxI4ZTQzS34P#`}jYj?=0m=p}%i`-J9 zsasYyi%vB0WwElc`55yGxM|1D;n}ksKo1Q}U!`BE#^Aw{6;<8>s&a3Vz1E1*lK~Wb z=!^_u(d!<8szI*tY_CFrlV=i)IL6&7RwTVAUP1Tkg8=qyXc%bg6cT+ zq?hE>B2g(e0kYo&xGKgV#^yt%!s4J*tu9e6rpNf%!M_4a4@~P=W#riN!Z|l|4rg^IrI=&KS$Yq z19?6_bL5>npeg)s5S^OHD5D9mWzoQXY<++Hlf~)3{K7?1i1zYxuQ8R5vXvUl8YWca z*rf|YFiu;2+BbIilL4E|$FXJ_sxVkw>F{;{Yi+T`9y#*Ct zsWX~MREo|$Ls{9S2if2Qh#Rg_ZD@qkx%AsXBsN+Eti<^EcZDxXS*)xsdlB95 zoTeS!%3W=xVkty7hu#4mCj4nk9=TiZ+y zhsfv4?pxB{Z9*Wg@ca=@)S?~n?M3`7!D5j%HAnF5$9z=24#almaqwe!qq@Iqidsgh z3$be~#;B$>*hk*zN?>!eJdg9vpqS~_MFhaFE6 zBSVfjT%V{~xAV$4nLNq~FJU*Dx7Hd5cn*`vJ_aTaa{cmVkJRV$u|Ld|<36W~b(C=$ z-&Hgd^WV^Teo~zyCEtO8`O8X}bu@?X*z!RovjOrJ&;p&|scGX;O3pQ#eMiw|rjykm z7ti2~ip`pcIYs+&;f>I4Bx!-YLx6pfgwWzGL+nr?^pZVG5Hkp)N?>OS5e5%GlYMhc zG$)H&-u|Xg6$>?<88S-Ek442d>ucxZ7iFoc6MVg^t#ZJ+1;gcjQq}Yuwq+2KWG$&s zRP;yF{>>-d#n9s?WWe!RQ9Hvq_Mwh>@v>*Mvr`KlaQEXbcpRlaiP&KDXR%4Ck&kw8FWLn*xr-lXwXVWt>(8d7Z0DYF&j@WGd{*6RMQl#9geWJQ8K02RLg{!Dbb)-0Fc*jsU~ z4o#Co#3g}0+kp42fJ1D5uXaoZTG5%0fmnj+t7eqVWiv#nnnT-?=BFACdM@@Ml|_B6 zyGb1R9iku(v|jXT>8aJ>54Cwv%U#q|Nm;vC(LNg79l7QB+&IO`W=!WfS-~qiu2pE? z%*Q2kw$nCVz1+cruGY8Uu)W?{x`0>!az7Ju>3XkDRoG*=w!5$zz7CZNhf*f^%o!U3ZxDFD;xctCaUkX<23-^^yhAJ zc|>Iug+E*P%Kp!kdicS1dfIb|1G8niPpS#9iRKFg8Kee7#_4w9N%gfpkzDk4J?y~1 z^di-~ha`5q5ZAOzc$weWC}H_P^R4t00g}J0=sj;^BC+EH9}1?9XTFOK8S4+vwn*&^5Kv*FMz}9x}CH!G}#R4m| zuCS6>|MDCAKD-PQ>!sk~uHh!Mrzc*|$tw@m0ILrds#9Oc?ZACV z8#s}+h^!B}S@xP#5+&psHzxbI25-3=Ve`bF)U|+n%2GG;r*gMe>)53cQzxZ9U0N1Z5eFbGzE+p#DCa zw8RmQFKxM{gWsY}C{9wJWm`);xL5fow9`2aouylP#@~lYX#5ztC2UAVPVETyQ_3?m zHiomwItS3IwwyrJX)uwM|ErP2jltGbRh|QQh%O>~An`RzpI^dtrg{^6JwJTd<1P{vJbIJ8mB4B#+X@Xs`;79V$l7j%4aOa$s38dtNyOYjlg)o8sFQ0LogpAMY$y(fDw*t4w12Lh#JF^&w1}^ri&1xR2aYZr6J=|ZAILt;IXb298l>W|`E;_*WtAU2PE)c) zUPD!U;|nM+4imN*JguTnujKkMWG3j-S_@t3l11&yEUAFnevdmVB1cJVLVBE%o985g z{$xoASRVfaz;YMmkOt&gyfNe=x1I1FFzW4=q??%$jEp2jTjMBnTLp&C7xb|D`7)i_ zX096P1}#YE+s=^a&^kZ2=nYdF%8T*ruJe}kY=w7VA)}&lIXdu4vmf650o+WGARji5 zD(?q~TejuNtvEP65gtL8={jN}il}oz1pGXMn{7`19 zC7(#&{6%W>lduG$^f{8izO?TMP29>8Jbihq~_y$ z0mD3~uz4%WKQt^}ksq=0jA0!Y$KtFhWloB7ai`DE*xEIKK!|1_vy>bff|})q*tR^DclG-onl%S==^;`FhCFISdub zRNCgqyhvfY$so;WW>$~RYZzXR%jj5L4LiX|`X)M%b(8Vr&3tOJ7QG1ic!^n zpWlcGZ#IA64oNCWtVAaPSYS)C1uMxN$uO^fp8g`|BssoL74Rtoy$W#4z%4f1{F3x3RT~(;( z!qd-ZQcq*bKV+wrm77xYhd$L0|s z84=gdD|s`~mg+Xmg#{Vc&m9vmpy-R$vsqI9z|p{(Bu#F%2FhVdHR(fdf+zb0!66pzg#qkc>{aD7x4%8|g+b zb^i0s^%;kcusu3bJc&U2p$m6;^8P!^v{>?F)Jq80EaJ?kmm3-*ZS$ogKeI0Ym9>66Y1PFNDzW z&UpJ4t{0O%7Z7J*A3Um+vqg_?$Kv5rEkzMx9}o9s5#G%~z;1I{F~^VmJ1%D!~+pu1&zbIQO)8 zSW+#<=nwbo9LpM`rmkID8iH*8qFpk?e-4~Jl)76`0f6KDIYsck$3(I;=uH}N5O3nA zg?Rr^Y#Q$2^aB7O-fwI!B<|z0EOgKa;!`A8I9)hnw~Nh2V*~UHyrn~hk|M6^uWzAS zSpY%D_4V!G_3Hn({v4hF7-G=hHvsGdM_AO0k$TSt53zlyeYTE>w=7jEM+y$k{MH$p zIuzhftsy!38J&&+r9n;yX#j>J5cm!WqkntQ$yN_dNJ>yLa@LUvvR zWuCEOvbFE3G8#J9>vDX@&fSfxaztUC(7)bE7x?nS8+-VF7)DBt0m7YMOy!LLjFgUg zhd|3Ntii`R81_C}C6K3wdl3DcA*=G-MDQpZUoUVeZgXPWIW}%CeTqeJN%Kq`hH0KvhMh+uG z-1A@!cx@5ook#62z-)&}(_j*z124W{NZo*#ZpBDJ@{E2$kANYc_?R|4|pynLJvp0K!@d<*% zFnMEN$NrQXB4qzDL-I>f@{99A6u(|r9ER)O{2tE)8NIepy^kihb4JXNvwKhchgUQK zSS$AJ@I{wPys=s@+VktSe{|34L&3~5#rxCk8o31KAP#1IzL?lWMK8bFWtfB5@ufwc z(Bicnlfptn8Tzh8#GCKs`hbmc2V05*FX)@S-XG8}Jb|ARII*1tn7Z#|LLUMaeksj# zOX;4F{5b)UiBEjZNH=NK+>OiD}8cIh2M9+35?RJj&i1yXZ}mii0tF;OBaHTKcib_oE~CkfKpBM;T>&nu#>ebsQhR1f@@v z8`KEzHwE60BwVaw_g_UXZ>oRlD6r-Y8g=?!AxYnMPKr<&;!^&UApRz9&k#&w1Kx!07u$K>R)XZ$LQ;M1jw*2vk{hp)#qS)Q&vk- zIfs77<+B$V00NTDC>Q6MN;2pgU#NBy-#8&)ab7dCk$y@R;Q5A5&QLq0{=a$W#lENf zmP*Y_HGw)hAm``C8UNfq99gKv+hb|@;O@JVF=mwR=64!vTkX2Gnck@%{8Lae z=<+z^0~CE5o@%-z9`f&WqFx=O=2!;(WL{ooZE9@MM1PB0XHHXZqBj=SdIcHh4?3t| z8e>k-MTqfQb9+En1Xva&J~94h4SCNeJQqx%w-taRh5>21 zAdkiYzGKmeRAMQfc*~+xzY3thvLYA9>h85a=e-yryP0aZ4{sIB%K-EuYgZ*O?uEo^DR&6^Nu2(^jY%n2a_9C8q z_m7U?B1%CuMI1tR01gHw7rGB7bbDc?Z}^hcgK>T*Tb>4nHs%`AM5z zsee!K!+bh9eew&fFcwTk@Q$|{a>bAOGCqX08h|w+RTUBKTM)n!Xo|O2m94Up0h{Cd z(y8`?>EAb!PLy4<3?OR)G~Py|R@nWHc1-LXJ#*_XdYHwu=?3Pb^h)~b%45Ie;mB=Or;|09F2M6NT>xF!+ZysEcJ zXDhMS?mMRNr5R^^PI+yHBpkYi2B3g(9us`DSx6&?7302Mjm?+^vPoA%1_Py(7AqcL z>A($0{#Gb=hmEw;(*n~%w70gOK{Di?SIA|Vo%=pdt|NYuD7A>kY7zOo;@J@s z!U(}a2^7V`8?liI3s4U_$W^XrfLXstuREq=Y9ngtT_o6>jp|)1%T?zaOO zXU5np&)%5D-EmvbA^jB3)_(!_dQnPA8_bo}Ws)gEYAz{a@3(NrRH|-ouzu(W+n0Ml#+c2$|RHzIk*Ou9}uDiJNCZ?dT z#?U?zNtbqYg}OjvNjJ{TIzmJWaEC%Pty#LB7801QH#&a3v;ZL*b0zJryDCS>U1#4~ zP2{?{$)zR!(IT)!-R2=ScY9uX*b?8oCh>)t6b^Pp4=$VyZ?Av%6HnOSU%l|qoc6BB z|FMoI4XdoV=&B^rS1mcMv(< z5c{TZ$!FmMXtjv^d{HR}3Rc*h9DG`Xq1E7-P3K2$H$4@w!Ku!ykL^O=Mz8hwJ6O&Ghl{*Od-uBv=AIFKmz$zIUfT%>2jclN@Vt z#R~>Z!+R&CUstYhr!@{v59lm8KsBbI(o}u>RHM5*=al1q%vXFJFs@_(PC#)F(IiH| zit*6Za~m-R`T!HRp3|h*$1>Cok#ZRYEIx}1MgQbj5V=Vu=6OG z7Bl+vhXj6QnDzE~-R`5-418=Ca0XUN-CufEp@$4F0KJ7RD(Praa&xgT(wN(H)SQLz zQp$!4%KGfyRi0PntHIkFz$TB=w;mF&gZJ4xFZA;8fP>g1sQj1#V9PO4+>@_^Wh|0d zVLfhbUZ3?qS} zgZ&lg?YZhN=DPYe1QaqDKlP6FP;9WZn;P+pn}={Hi#;rQ9lLK@(=+faHEd^Vxb+mk zqQZvQgp=@BKlk6jDY_0>SP$m3i(bg_Mt!H~dI9HLjw%-oylc%{SwT!Px$|S<2WwgZ zTo#W5zF8j3Bwb51*4Y8$zIHe{Q;w@MgpwX{Tc zL{rmHjil5U{ht=dz+@h*IM&goeFp;=bmj{C5Hn!CkCsvxd(K@+jse!&D}0EJrJ6R5 ziV=(=M!FP}AQqynt@*qpXS%$1oh^<<0C$E78jI8RpjFOKcnIz(MjZ3XFIg%GNERNW z$6q;;iiR7U>?gWKtgFT4dCaIWE${A@wqFL(b~$i^Y=bA(3TXzbYFvmoXBY?NqR)DB zxpx>TnFt*VjY=Es9q8m)$fnqK6$!v3MoVr3Du1#5i!*fo?5*+DHG-Xy!#CX@Re zS0E;CCPnRqjPlMEWk*{6T2u?jaq6mKM2sbAFng>d)$nh! z583qes9)_M1gSYV_;FCH{Zy&G|sf#0jwEvwDFB*O8g-aYv!ti`1kma*lov3)bNys?! zLE)Q--(1Z-`$$ZK%Qho<%}JJs|e3UlYg+A2)2lpIi7Gv4~sQ)UkfP-82W_tZd6g`DKfhkGsb++om3dl6Wm_1X{+UK+K%Ox*n2H zblz%Cmb$#W&Q!;r56KWlea^_qo}tfKSH{Da%DD9^H(bI+I}Q@m*62rr*F@jT_fD8n z3$b-S1hl$Yj>RG?niuzcj9F3Nk2)$cV8RjdJA}n^Mu$WhAUgqN)ParBe7X^x>RoZ2 zw00IQScRod+y-VfAvLCj&aur`7rN_vT8Z6vr9d8a^q#XS!2DH}{zj^CcaXC)zxYqY3iV5MswGVkd ziee`)t9_znIhfFgrvd;|7G%$EdgV?_0s=@9dr#cBSV_+v^=Cy8G03|Y^>ekDJ;@;z zFaF(J4EPZVpdk=U{7AD*?^K}mUIRt3SLDY;$M{kXdL}b9j;o95$p`WwRA~vU{T;XF zDYZevH&^8(n(euXNFcLDK1&{t+2HS?tc5?deM~t3I-gAV*VfR>*Vh3FP^y(q&2fdO z9)i;*gn6(LEnK01>@Ru~l%ymY)%~?!A=Fl}I_29+S>?qG8JxgPWuk>s8Zi8Kb`uQ) zf{Pla_Hp&O#1X{P8p2vt|FHX=BILPNHH1&1@zn!4I4MR;dnYp-udO__{KjENA__x@k)?$g|3rg zI*=r!7ngWLj0U;nE65RdD6F;`B2RzoquCqgpU(cH@zzg+)cNz z=5nKCbFv{?Id5U!n%X|*2MlO?IML0mc-q0CQsfs*mJ~~hF1nPaE~(*eg|((Kln&xC znE~#D)-j`!x|hB}POOQn?vEfKRKuE4@ghk&pVP{}(QC^C_ybUUcM4`&webbk2w=}a z+F`U%j{J6y>n$ygX{w-$CMkr-Xlz zMk7X!Nu;bYLt68C3v%m{mklkGqef=2pPMdgFW*hqz05}E>;hlzjG+30Bw1ICWUG&} zP!ms|HI#7$C-~uh1)Gaa7Hr8tAROrPa@t_8GR2o2L&1Kw&pn_`PM@pl(Fwr;Ub9L;2B(O$ z?!rSa+!|;Zp}VtANn-ls_#A^7okP z_{<8E<0kwt#73JgUPhB+h4>=8bK;F_D5f)xidt2b* z1$SrImG43SNi*YAzs}wYTQ5iEkbI|9eIicX2sF&i0lQDRU+LR=tMe$qQ$(Y&OI^Q8 z9t!r3wD4m_v%*oF4m;dDXROJfmR!Nfs$T1D8{8xd11hNDXX51TBCWxEk+L1A7|X@~ zkgXU$75pVFVV{X2DW&wuP`^|)EZUD?jSml__`236X(XUktOPp^)&lVl=bp39NQ$q_@y)t$n>8vdn8 z#9fQ&w-ke=E{KE(Ow}IG6qXJ3`=pWosLqgR-KlcvB1c^WSZ>VMjceH!*$7@-65RPL zC49WqwO}Xy9DC=h_>VV)yf*jU$D9ddIh%VPkA0FZ3tYG~vW>X$VT0!`zMk~7*P2i1 z0rlG)kG42q&L- z$Uf=oOIkx-XSo7jaeavJ&a}i5*ULkD5{t_UIZM9dp>vw4!mGFms+ir^Eb^fX$lxLV zF9yias=calJN~=4E7P=TiuFFBj4oIULeFbTOj=v_IGJa}M-hmS_G=U?RtC5aJQ~IB9!^~3 z!79gEERg8~BhfL4oGVoi-j++)2h!M>=Zzkqd~re$&bDa3g>Xt9In-cP9v@&g`n8;8 z3p#B+Jb=k5@zO<%b=eb0z+twditR6c9kKIvRfr02O2)(swxLBT4jcR3UpCzS79Phy zjA#2MP2zY=|ZpgnQb?od@f{^P;O#rvf%!+Aw= znpaEHWhCjiPA&|9T=KH|=WADwA5DQ2qtj_eYVg8EZVUtb1DUKop_&*6xRN;Luk zFei$VU+Ly-Ls4;(Cu`RSOr{8)Sip_K|8q1qZ1_T+{5lid#@aMrQIv2Iq+9>J#XaTP zEICnxxEV#YqvSa7~o^F>;R@pji!JzLcK6D#RLaI-^m@}CZ)W&W7;fl_{Y#c!t504(Wp^MXx zFfZ87zS2JL1q#Jrp?(~MT62}ZgBZ)&(Y>jwsI*=`X*x3Tm{C5E%IDZscz0c|$`S*8 zmEZYp*;Iq(Vt@j34F;DFN7%>$ETETwc4wq(%q)dMou1e&7l^uFpB{q^_nP?k9J=L! zEe@v)XB?|!Gcq%?ujgsV9Fmlt5352BBd8#5I6=`vFKQBtHXyH)FjUT(yW|u0KS`D{MLdU0*=>7+RPs>H8!Na#tX*9wOEvI zc&8lxyWnUi2Xve8$y1BUQe(Wg+{Q_?pTgzV!O|{nHVm zl12qSP>Pl78V{JMBd~f=|1c8>xTnRYj?Ry^G3Zo7s8i6Ze;K=pzgU0PrIz8SqR#41 z16`Ynnsc5KZQcn!woW>N$oGfnqwUwiEfDoR3QpIE`bsI>R|dBbA^P}BdkNmW>~?i-Jamxm67MC`xHAf<>N%gs>Z?Fw ztrS6^qWDHDrstpY=`q0hWvz9vp96sR#m(x7{pLh@!1RT&o|Dw=yX`i)#m5!0X_5&z zYocXs%m&L-2Org^@}lSuu9)n;dX;4`BQe~!RGEzh*s|=eqp9~d+JAoVF*dW6Cr`2a z-5~BJPAt~@jtJWrEXodJx@~EV-G=P)6d=|zh=qruTz2s1q8dXI0FGRj95x0H?*U5L z`tpiLpW%2b;0xhHO-Kh-vAcy>jKm&~0{bh3W~*A^Z9_opk6fHamLJ+fFR=WD}# zh+?H(QhWQDpDYd==h-uz94Xh)yVyqebh02nzgUY4uy@H0Kv_xSKh-nvN7~A#H;i@m zOi0KHLC4l zG}pK|1b(<>RnjpD9wyya1F92N!G&gNxGIiN!6;1?QcenPWd|*D$&MwU8{O8GO1iAPQXH~p42*? z@`j`#9)z>32`XdPYNAL03&gJRt~r6*5464%JN?Dl*S<#ju2a$_@Z&C1J(VG{yG^=9 z{;Rh05p;iHXjpDoS?S0`HmYSd5F;ub#M|L#6c>^8*F}JcOhMv6CV>V#E#7hrZwn97 zFiQEdTCJf?{KXGQh!2P}(%@wAeP{?3Xjz{k=i`rYgkj?eWWI$Fq5x)2iUfn=P17D* z*BimZdZnm~3QG&1TAcT9^VDxaJqzYSzUfIA|01JYT|y5~>~ zveYmfeY#}mQetvPQU)>@nMG`k+`ax0a`K1Sui>(Q75^kp_CoWpF8omw5zUi-jiu)0 zQmeNFR*`^^>Ltm5)8?NfDn_hu{)8obrA6u_u};*0DM4$ze&zh zLw6jLaK=+T#->B8>$_~7Nr~W&D;}4Fl7SB-u>%|3EtOk)^iPyYSnEzHl35b@FkY`5 z7dCkD0_FC(=EUg0Rg!s3C=waZYbDR*%=^K#dITA-%zy|%@sK_K%ym|;bqp(hAPHQ& zmi#x2Nk{_~W~(p-1#YPYClU4$NhGU1j~MDxZ^0y(iysaZuHE}Aa?Sm2{al>OuUDi$ zuxzt)w@Ah(CdHr=y8)gxcLj%8@y)9`KhZw;DEcVr&xH<;0SFvUzoE&N3xyWbWo_KE z8_AB&`~&v?@-}v-oWTRTikSb6A$;#;NM~WB`WF-&F>}1+gOo%GD)}TG?&6;?j{XLhcl#b7#uQw8ye9fCw zEc9V_Qp{p%z}WUFp1W0kl#b45C??xUrR}(0zLManAtU93Cl#m+rAK$@Th>=uX6r@Zi{7i5}V(&xBCsiJVCj7kM-$ zF7xP_!0j;r_{Oj%PY8o3&bK2!iqE&3fbohS`yW(w8VlePmHzMzl8ae=8d{klBPH2^ z_PMruxk;L@l}QpE37JMPBKe-|bq^z9->^(|Z5IO>Ku_FS9X?u9lcYvxCXZFZMAKVQ zbD5?LRK##@mIOXzj^H)O->!%1Z=VF>SWNPjc02>~_N^)!Q4+?y zx&loNr5o6Es^s)0AAf|k8J3C?hnPV(U&ilB1J7>xRrICQy-OBFavS)YgykXqdBPV78((b>DVR!~)JCiLt;vjwC8Us|z9 z>`eV6+SBZl%VBM(}MOJHp~T}BU-c>mPNI%E~yj#lYZy+WVVHH z+sBf!?vQXJGg%NHmO8nuUpcN+nJ${VAhPcn$tv-m?X!x8=wBe+)L?esVUgNbo~=#r zfWP_Y2|XwM?6o~ZiPo*l$eW8=pEGi3O9aZA_D?kv&ZqJlR#Jxv3pQ0a$xlW5G6qIz zTJP!}7k#;jh~k`VregKQd*E^5>{o!w6-X3MXcwVuc+u>EMA~_}lD*52n=Kl;-TRcA zFPYBa8J*5~3K!lApQu$+A9+CP!#&3{01hn-?o(Tm?E7NssL-RfAN_5yW>jJ%@f9K+ zmtM4GB)R%&7vokMB~$X97lsi=KX&Xa)o5MeJ@g4ZuAe)oJ#7Bb8i^`oeR^0(xzF~X zy&^PZ8YNsk=nwI_sH9DZMl1xP73Tf0m_pgEuHW3&zbiv&72mu)H)CO2-BHSWo{pfF zmW!|UbWCjVPX{H$+K3f}h9b#n*UyacsGOzwkqbig>8<%ccYV8Df$6O<@<>745LcoBjdZT)M83P-5Y3?=~p#IT|$-ruEIyV^wU2r5I+vWhS4Mso})jCOtGJlc5N4C&7i;M000Ds2?q#XNUmFt`nR?Hr?v&TVPbHhqT}Dq04eZYtdEy>l1@ z3-4snLeifl26941MY-}m9y=?Q^V~SDCPL@Mk9YrMa=bHmk?pyk=^Nu7>T-Y+R1lZ z3sXmn z*q_fti zSIwz9DeIVVChH%}pstDfuMrF~hMDb}Iq}uEc8;LFoAlDb5+Z1xt_?UN=4rUN1e5AO zXaz90HQznJ1Uuw_pw#~+UeF(L!06Kti^O*EnUb!kW3fD}Ky)kIN*Fu~!#xyoKxLzr z#;qp9ZWHzu>(+(CBpz%=G*X$&jzzY-KRNs&BCl0b=&4IRF8RdU`qj{ot}IXzjgX_~ zDrc1@nhx1PjnqTO-H#%|JcyfNm?Z_cgLK^!jTk&jc*vZ@MY* zI?*_oml+gMTO>HWP!cF)sS{-L?1Tb=j#OR}9Y-f;xx(g+O&aa18Wd?O23)2xOU*3; zD^{>elaVWS#};XjOi0uz0)2DN4(a5(3$sAD0M`A%cL%nmM`L)fYux#%bAzLGLkFK* zR$rIn%QaQ>O6?azC3)oHLOdN>Ul^8jovjct=F_hfAE{sf zm)PC|7yVh9wA-DJ>Bn9X|H0YOVD(TO7zQaZxfNy*SUl4yIn%>D$7{sLfmzf6@a7NZ zf+Si`$^Td+ME-S`v~-jW`L-0)GUQpF0T;Vt;UKz3PFB@&1HQuZNl}jH7v7)%ZoGGV z{ymR8$y6Vf_Xt5(Fo>kRq~Hwi7g>BTy1oRdoN4my)Evulo%@u~aC&fxWl zNgzONTkAemE^3M&QvrKCKz`?BDd*JRV|^L&)m^VRhp{R_b6PBz(M+4l)ug|mjqu@) zEFo6A(AA(GL=K=2sZfBILE0Q;-Gp#$yIR+liCV+)`G=THO5YW(p>?aF6r?Z$f{0uq z1<`Gu5s#|{-Nvkzz}E~iQ*atD-p5V_a;P`v8z+?W zDr;agek4PR?9tZBFG1#WE4YH6q$lhjA)2R+=DN2g&3?G(G+&0Xp(TBmQ*STu<io({+cuk2}ba4ZYk{(xHBhNw(vAK|nzmN??R6JUvyi?199+M z(Gz{&4>6}|7wch@R%?DQGxp_f%#vnFe>iORBun$q7;E1LqST|t**s)-Y9(3BMY$ja z@9YDRat3Ww8;>ze)eo(^MhYn?Tu7_F8m2h@b2^|M-}5_tSV|JMfm+Ene{8wISYT`n z3DIQh?s~$Jx-W}NZ#(ilpnspnovMv1=r2ev^}<6hg)u+@YH?GxT0ppkJ7&1Wy~Ep* zF|dkbj{q9*v;Dv<*?mXlz`T$kPv4WrPhJ_V9czd2owMfQE}PWcB0H; z>3Ad0M`9PwNbh0=_R|}6nW2ZFMX#y4TAYd;D%57}*N3!1>Gj66#N%yTexeAG|z zQGk_lQf(7RL6uqjqCR1c)01bYk1XPI&pciJjTK{Ed)OCYnhQwxWPN;dHiOqU+H3&80yh zewljrp#~Wf6gx>FG@643xkK^38mYA@>&n*axyW6KJuSuSJT-LYrS_O0vrbaY_zit& z8&++YU)Tb$0pOoYkxRYFwSDc#!26!0!(~fR1rlq+uqY;~_hJM%VT)mTy@X0QT1i3}WJk$Qkn}CT&NdSMzSmjkW8~FvD zyJ=ZI;D|7l>U-sslcD;MEN3j}_7zki_0GUi&+(#OIy}>jmCKY{0S)cco`MFgsqYHl zV=RbrtrOmH3&YvzZQ-yLL&~t-()uew;XMgtuXp3sKb)9)qF}4$=o8!Dbol11bNr}- zPy+Yl)e~BNREw=M^Ji;Zm=AbBiPEkgcY}hgr1j#Cp|!G`Y+nb3fQ=kMRO~f!N2A=3 zU8+Bz%o3fj;5dqxkD0+2*U0f*mS=}%8E)r5HD{k@Y~5N z=15BZswN#4kE;#P#8axtw3+c&)P}Dq!swKAK8BTqX8Jn0IG*uqA&*pp)_;D&M#u!Y zAPg2qKYmA<=)IPgxWF&B*Jm*u6J2^60bcQT(E~>lrIBu#b4!pELafW6R@vQC?$Pn0swz5d&xw;g?Jp&N{+sl~B+vnG^p zm7;sHcP;8Qm|utW2OEE`|0-azkDa8Ymm_3l)j)@v)Fw;9eyD@Nh#(=aq1+XC-`i^4 zxW@Qoi2d~?x#q)8@a|-}(WzmuJfu&|fs4Z`JmflR3S&~7|L1AP@tOl-x&}@<+Fck%E4`pw*`B~nF=*%s99B1$X4nX)V~Qbr z!s#)wc}+@k*xOLH_Pcml_0xs673-$X$zHmVSc;=9TD$#=2*cM88Hhcla~&0Mz(ltl z)}0BJPRcPjH0Fqj1s>AQxF5=)WN{PQts0K44HgvfX1%=1_>vt3PS`QnE*{b{lxX1=m-tvCe5 zy?`QWmYcrnIEBBK=%4ugCy4;swm&0P3NIURzy2TE&iXu*+=+W}<9*}4ql9}a5^8K& z0yS%D4HB?uB>}sjw7m!x_Rva=z0u1d(|T7Sn17ciOY3ocx|r~4nOxp(WjP+Wm5w#F zucUKF5U}giWfkb)c754=Ys*J_2`OLJV@Z#hm4%6&MAp3XM0AM&coff;T=~CS0hUpI zqa!BAFUl@*pVI%N&*o0l14vc{CI=C`bB+OIVdb?Ao(dOyPbzUO>6E;?`Y4|IF%mzC zQ#7_r5yd8c4|5Rg@kd2{iyrv2@g&wc9x*?rDK1EkERuS-q4Ac!9fD+b?ZCP$p(#3- z>0`PD48dH_Jc*?WO=CW6C>s&Al?6~!0{YZ!Vy@HmS5CiVM&-h+hcS(^Fs*hQ((mry z2}g*$cdlEDxXDM#ReDuwNt}&7*y{hzgXnRDGbpoJXKdl{60`2NB`s zpbR+8#EC|bDL<85<5Iu1cGJusW(GVwv@twW^9KMVCOyZ-&Y7E~g2l{%)sQL_RFN&o z%XslEf5>=hxy2YTo3Njvym*rDP+o2X)%%x^W>pRSP7GQM0=S+`Os&g0!BzLuu3C^L zqL@7d3z#cd^NKr&Wuxr$H0iilvjr9qSD4hv_?0r8CttKl1}+~8QZXgl8q828>8n75 zy(~o=EoyYQMfUxtYrK*`kWMqAdbzU(tL1}J^ouh|e=(@Q{gfIrfDjtx3)al-&++1} z8trUjn|a^WRRPol*~l|qgKM(D(A>)(Hfl2%f0;Z+C_#=vLf)^fFOk3{FxzEojdUvk z>76l83^M)lC1xgmHgrQxI9?k6U;r779DCkbJSd#-=jbPHR!>L~w96IWZy|%-9pn)u zJxDE8hde!Sps(M`__7;^1{d>Pd<}!*$N9q*iKfcCOe(%xM0e1l{>>XAT`L5%@&y2F z*5EyfxBgW?AsQ$Yju>#1A?Dw=fP1d2VX#=aK|rND*$xwdRxIL{jh>3_Y?r3Md(H#Q%G}uEuJZw5+1+(iSMa;@CqK*R`P_SCP(0+>IY$BJyq1!) ziYhhdC1^VhE_ZV~tV<=U#N8Bqy8VXJ=q(B?e5z@R?VEFl{rw0%olOOu6!EU<3j9B0 z{c<|ptZtzFi!J#KhM_+OmO5@RNZrYYMbRbgt_@7jeTQadN?vh=l=BQIEIi$@8^FBN ziXh+!!@m#SLZZ%!cQqin^H;;$rND}>^wGEC_zfi78j#+*zhg!iYXC-H&Pt_D#nvvH z>`>(Z%hznBAoRb+&5MhZDoQb4_#XDdIxTuv_K>VoU?=mz7_97E<6ZIQyNT)vsxFbfY=4onD-!*Cnfmz9mD zK6J7d>+2h*b9c1=%?~7({6xER-(zkcX8d+E(dBDCJgF;O{t=(m_&5iPt?5dJa##Jj zM=CQ%i}ib3-}5sZ%tN_{Wi)6%*ULKd2HkPq3=|~DH9J4P|H`1q@&9Mz)wuN1RN~E< z?%;Jh_or~Eb8t9Phsw~^cnZgWDx3mI&g%2hW$&{Tj@O_ zbY>(G7f>%&GC9K+1+#|gtU}S+mR=6yH-h&NUt;mM*Bw5;Q~>u2Z7e_*=_MV+L~UFh zUccXV6-!|AjmU5C>NC5jY)tL-KpOH=(BoY8zTpfNZg>np{+aM!XYZ^Ul_Cw;k@|Fa zcMT|qpW|LVyk~h{&!^j@7k+EI9x8OLB#S6AdIu8^n`*X>d299A=cEZR8&gIFSZ2I? z`|bOHX`ol!H~V3nGiRa?%G@IjyuToVVdLyrF>%FOsw-!5q3OU4M3NRH_8yT<)0l!} zSMIEz!-bc(RUCYnY-XDTv~g9Q(1$}rv;j37AwU3-d&Akj^gbqsMXfYU@1D)Dpv>_C zBM2M0&C#_eX~pP{DJz5hK?#2!PZ8VfiyHR-vM>g2>l9Qyc3yLh?0|y*I;B64Zec+G zb#bZ68si940MRKz7XEWV39JoDU@*2BSbU;ZX%?>TWkcd8z5e)izYQ83ZG;oZi1v5) zXy(|XLzd@NhNW1FoeHG!rlb*nYPiOX(>TiAuqzB~JpC&g7J&Lw+QT80FmzN~A<=pB z4~_OQBmnc3j37i?&UYY)wr6L;Alz~F8!2D&*-P_F@qQ~@n zm3d?Ss-V`7f9GX!RC&Ks4d}4-nK;8e`ezP!8p;BEwJsG+STQc`?X~5Rp1Sc&jWn5#?Zw7gtt8a< zTgEW5Z{;RtONWPP#SyV$8hmVf+g2)4MF1hV7=&!3UnLDmZ;H=N264CKxs&P(|LD;h z@i*GB4zb;Ptqk?uBNHPivE3PA65}sx;s(Q;ltrv3y|MSl?j+$ ztU&G7T)4d>WbDe+>*8H)I}RQ549FyC-kVfo#KjMcbPRX2gVOSuwqSo8UQ@VGoMXXoAcOlD zHJw!!Q_kFBpDlF?zdT_Bob6@@l=Ut}T%6E%Lk-{i2T~?f2`QinPOT)%Y|xCk8^-3O zAWj)(W~e1ROOMcB6eEY$c)9^zP5^?uCK>pZVyY{u0y2t zIrIA>#W(!%c2`{a&-?B{JY)K5*f``dR?qknC=Z%E2pY1{2O0xSnsRun-}88538YGS z5e9G|Gk*I#escpIG3>XK{Ys9Hx12pa-K_XX(6Gk|;Q~smZ0%1t?Jfw`mVp(kSS8RY zQP|!r8uvWIhni{>b^|>PJUx05T{J}suJGgn+ggD&mZEisnZk&P^VQ+QkP z?%B{*tTdlO;)8}Rl0dVdR@ud8#?fr~xHmN@>Ngp}LI%-FDn-~>9x~(@xi{0F?cigl zhH;CGC`!*lS4-3^PF$0jKu_N7xop@hSN`oYq@cj^vTFSaZV&<7-(f*UiR3~7V_?pO zn$UTeQeg5Tu>~B-q#d@sBprmUdUiY)e4M)SsYr03kPM<3otN+pKbfrva}sAR2Opke z@b9f#j3Rq}rue3a%$?y~u?9kf2>;T@WS;HfRNVFasu;tOYa=Gts)2uqjEt-Er{7gYHt{ExAsu}+&M+s`U};s8tttSpt8CHsfYM;FY)PtYqW%-1~G z-GWaA>~g|fH*k

    y)ezu4cZ#Q5Rs>qpO!PJe^3>B%G$)kmLp>4lW_?Vc#jMD$l)DId zgoNdbYA)m;V8BGW&fmIylLLa1S;joF>-IGKh`puh32)@#t8t@t7o%9HSj=sLjL9=Vp6Z5 z9v;2(7M2d=xD}I0(YZdP8E?+${f_i07oiicL95PkhYHjr!H4fESh>p{B$o_cJbiW_ zPkYcNDgp*-tPE0t&cO-l58*t{!9z`m6rXJL4V7ULgL;6CMpew{ygHV0>d6e^^wg7M zU~vUUp(qr@r1E+%`!>GNqrD#8V5OHskpU%1U(;f@7F+QO*8YJAS!fR&-4?=tBCWJ& zQQI6A&C_MJJc)&N@kJRx8S>m?x6C*#PJ7WbPTfIxr{S=`J&s3rj8S~Q*H33od)~ev zb$DiI8b*0n7LODxKJC0C44ZD{se+oD-nPwa{00|M(InWvPrE<$OATCE9mesqP-nGh z-#G%MBk6t}zg);Nsp3?@n<@GuNwt|G`B6V?3VFYO_uS6K&Nbje#teS7GTwf6#WdlY znql%KSNYm`qx}nmxK%8`SNB7HhQp;-C!>6uolG*y48=`#Zio_K0qZkhv24f3r{>-o5m{HQ1{(5vOl zPA5?GGcSe!TcpQR`gj~oTOp5Vn!mrlo-_^)vKVWZ!VB-;|6I);PpwG&oDK&j5N6$H z(jl**t@_uk0ZQqCpF@|cpA@)e?+w(9^a|#d#gE5?18RBzbWBlF7#n=v_)bN`0-N=U zSkm8w5fx^uFa-r}sRbtu&8kh7;%}a|0NQi?%i7bn($?Cm#Ishu+4!_2^|XvK@x@ad zH8reSVuuh?nl-VHRVD4qvP`|@5P?hkZVxm;Q<-THu)lBoEm4MjvdAPw0b^nElv-}~ zt!aLALq*Unkm0mbI-rPpT(Osp+84Wl88uEZYp4h%$!{raYE`5x!eL&g?t1tB-pnDf zaOv{nQ$~r_H%}+r54L6B8a72YVV~cJcp|cEw|cLQ#LT-sXYnKa`diQ!h z&~C(VB+~T$Q(L7uyBz~d6w5$(pIDY9pE?AV+J+d|Y`Nkly*U}ixYRA3faR?aaP=19 z0<*pT@L!(wP%8;AhI>gH=nX$I;m}M=!Y)*rCDJD2ca{uz#dZXZxZE}6)`RqB4wo74 zW|HE|c`qNRz8FsZ7HARDw}lQZa+6~P;S;tQPT0w__n!SG<*EAlFpHu**1koWIC9%AdKeT`!wmnUn*n)%y<>k`~}OFvY=_M zyCYg?O?v$n(#hI9FTexn@>tq8p?zHpzr0K@IeHm&H~oNKl}U%(`=*dB1>^n|6m;iYfvz26DYPA<>> zhPq|%9hNL@q#@nYX~dL=n9{aPJDo_kx3cw=b4mu9yy+r;2=Vf7jroL+s)$-Te^bS`cP%0k%DP=SZfM_w< zfOUAXpqUBALKaEshz6jeOVJ}LA)2!<53kVsO`nA-LJ?3-wWA;frBZsV$ffA ze7fT4D-J6_OO;7fy3he%dhqxH{VlFqCVEXUhq3p*`@-d$V?+pmzg-6iFw6Iw#}iNc zAb4P-8$`f}BFO#vv#mdxeaoG|;}NglA?srfG-1GQHYCdh2@LzYOD^fUmT3vf7yI*> zz~&ETgCB-QPc;m(3YaBT63gE4s~1f%j7Wev7Ms|?s4~ytBzpji5j(){dH=SjV%I6o zI`~k|m^mr#rclB6e-@r3n#Uu?C<4vsl9@@T5x{|{5_oGEGVx1nm@k0=U4=xC)M~C>9b8H_23Ug!vzRK*O5wMExVU<`Sg3BYdK0P{+gN z+;kflwEZY{3L|F+;F93e1G;8wAYU<`(QtCwj+w-HJjL}8{oZ!9$1Z)p3L>mIi>3+d zY~%wb%8I$j$#AF8m)E^C&<;%uM<|?0m;=|y@m-d+)_blHyDaq!Vusc< zK)q91bD~MPpApmjrT;^Ztj9uw?!`LmL5k4@;oNt0W7~ zt`R^31PykmyUi%gqCbx+3jSYJG-1%ad0O3fISk7~V2XxRHjB8|ti=#3p;H&+M|ef!(@A*sRKT6GdK)fWX8sRu3Z0AcZC58t_09EEW#E`Fs!#vf@T_Ma?G45q{PgaLI;I0lNBjzPcYRLv&cYX3OE-N zBs8{yB4a(IEivfO8|$?30a@J?`ic zd!Cw8WelYXL73>N@1ebK<|VCeWfhYG=K}?5LOAwV!wzJn_lh&x=+h9u3eCygoCnZy zDvEi*h$m6~wm$f3FhxN2X4_QhZphFJ?>|yPT9{}Tor8o4aUe`fniUawawci^_y*m7 z6+ZqUhoJ>Q?`2+(EagqRb=C0#CA_mE?q>EEGud~lNyV#`;KoipuIDwK*xvrDc$ohy z+f_YBH&JB-81xB30Uou;jvf?J(!9S^BEN&^HdFSD#SAek0Qu?0+GKnd2mTHlawv>= z-A0jZ&rmM1;b-)1-g$kc-sjcaCC=di#G zu1<;C!5?~W`sVoX<tyxg;in|X#YE#3-H3GEiTs}4AVHolmF+uqIU(EPl6o)+O=-t18 zOX5)<$)mw5qP61VG&DejE<|5mr2jTN-tL zPUdUWMD-t~Hc-k-u#t2<>9Y%{_%tYgZpO!Ot55KuN~<~a9?gqO?kP#tmpDjr0*xp|1k?&I0tjo@O=f(`C;z$QjHjk}2K^<-c47ZWQNOxtx zRQ&{`->GDdJ5+d+zU)Vp=C5`593#5zK9TX;#6og?(AJHRaZ6a8x%-+)e%-6@C;JkM ze#-)d!mV9!;d(7&6`46-hn@(R#8Z)@ysi>Q+mXE`?FC{q z38A3S`IU#!@=}~mGv)Y3Isl8z#B&oX;os!`N|PM|S=frNr0qmeR<5mHkz*9)-=>^x zn_6#B8*{1z>0_5;*;QyIz<(!no}GrWWfVEzDZx9XEP5VmX~?DQk|0b`{st@ls{fFzZ%XcbH!;UeP`! zGvQ>hxTJR2wwi@_J~L@jI0WU*s3cmzMGMVXI=8G%(5uT{63h|RP&mLt1t6YeG7x3G zLDBhH6;9MRHidXc+9`ICnpz?Iy!1iY!@6Nvw7G1P0iTA0=anjbNPL$Wgtg@W9uooD z(QR&U$13{2%yxCT2{m z=FM0Qn}j%ym$@vHbXyarm6wPW(a~vG&)F8(J7sm=;JZKhvXgL~>}lreKpAUW+C^ox z(UpgA_Ms%>&?}`aiYS*(QwmbC#|R-Em=}lNte*3;zT-0kX1i+181Gz@mMZ-OSH2Iv z=s&)6wyG#G=brqB5|J9EO(9~6bmJXM>zj?km!#K4I^>Q|xRW&v~ivG0v?1cV>h z44>lXEzln}?!2*p*9|TQoweB8sQMHEhDPF7OzTrdBmD$dz7M|W0gD)dY7RIqxsB=K3|7OZS8Mox&=emZYj+ zmYr9pEF=(>rC*HWSMsZKMiQ^!@9hs6~{Cs;)b`ntN#7W{R zL_03MXv#@*^wKZJu%6#w3Gny|&{yx18LCQj{f5L-Ri%WOUjMzVlOK^U1lLcU)E>5f zXE3l^*{)#`)Z{_2u+T<-wm*B?s^h&Zli>gu6+6fP>PR8hjY$0vE&Mc>$Q+M>8d)m9 zn~h!(Sx-2fuCOj&l4Xp`_L4bO6GoH4TT`uIju{@#maT3LXd>_^FnE~QusM=@NHO*4KeJ+kG z|Jf;#NiKPA!28_BFk{m5RXPEdfgaPf`3yNIe2vYWIbB<=4~nAEs(teKTY6;BPri?A zfCVzuNn`69S2O=Uxi<67RPad(EinG{2S!Vbr?n3J_tUi_8)gguK>kn66 z5nElQuI*Mzk1Ct)=C)@A0}a>FL5(!N6NHl41r3I)Go=@_F}bm!=5@ z`t@}^acb@ahVC>!22SN=2~yG;u}cTYqaLFCnvJj}jPP`& zu#`z7D7agG!_x!FEfAjJGWL02%?TEt3T`R_&>TAr<0 zoX2T}wh>Q0xrwGD1V>-^RK4fJ=fxD?k^LsqU=3<)=ZrIWCvC;0K1OsBjeJ-&fobGB zf@@9As6D0q)=J|tm_iD8JK5cYS1cf_dazpTg2w<)ETnwOW*P$Dv|4xTk;Jq1S`TTM z^uo|tjj?Gal7tMS;zYY43Qj(;7 zhJ*Za3RK5XD#u7RFJ`>&%$rbjq2*S*~ZQv2EE5bB}$tM*XQ|)q37v#F6 zMh;p1^s^CUWCwkXyB$=WSDsEHNvEyU3Y54AceKl&_(Jl4{>Q!xc0Sq` z&x9}83ocX95-dY+TLw9i`#+l7Fgd=4+wR?msHOWU5E^bPt7QojNiI1#Gs!Givg%Js zr=(y#HJ$YSiQ9o9Gk;k7FGshS+?qTB3})@@ZBLo{KTz4WU@Zv=Wn4;Mw4jMhc)kq@ zM$6|9uejZ1`RME7_Q3s;FPOoBmVP$KoZYG$eTw<|h{Mv~Q7S@hejwHL*p5*ezkBMm zPR16{^_!j;G!QF=1tT177MZU*{nQIpMTQY-azC({%kCo>1y&;a3Q>}TvP-?+Zih-# zSd_c@i%HeBkwQF6jq8{lG!3Mr9VXid_680#)h+RHs{IEDq44KdWl@}`yi6;ll5Dg8C0_7s|tZ0^tGT!BU_JdJ}aRWhOgJP2F4 z&+Ekw>X+cwQ@sK^8=0XrGtfEZiWOhQ7O{ldi=_rLpp&mXL(B36_V;t|#+7&!Ge@nR zr}z%wq}155?(KYg^A&y9$UUD6HTJW5l+k4Q0nq$u)FU~Eph8K&7Gan38xDEJ8on1< zN)Uuy)Wf0pmUIj+x|)>X1Uk10Q|s4;ao(Ky=XT}YXQ9KDMDO@=)Q~cZP(ZO1iLLJj ztBeqze*QwMH_`51iT&8!R;q?#cQ^qH=6a%?b4A;c+setrr z|K#b~dadVkp@P`iI2^x)x0rCGK+w`huidwMW1h_90g41xnUI`#_ulz^f6JTS&&7kLfp>viqm2}@G*Y0n!o4ELXUXr>V#QBD#hHfEM6UsqDv&6iITtOJeKhj& zs4O95SZzSFi79)3PX$dpm&P`sf>WpLHYA0>l)-(_@Dkt^;B)Z=D_Kt$sq09ac~WNR zzc+*nvi;ayz!Qaq=^=<+oeGe7kMbsVQRuS;T~wP0fmK5_xI+n+eWoD-KdI=GLuxLz z2cjO<6hiLGR!0Q^k3MmLgTe1?Ixq|3!Btqu{4RcjEgfQ7gc5TE{?pe6u>d-f2z8`A z`Px42s8N?afP_Iz0`{J5g08Xeh#i-DDXh~dest>~W&TVBTz93vC1Z^2v{j@@7`Ze| zYxhqJBET`g{*|olwO(ycmJ{b8KdMS1v_+d|QxgZm=GTw?Gp(`ORuHUhac=$&b7H>Bisj4J?Yb-acTZlOYNv2qg&|MPs$=y0r4~~XkxUueX&Qt2Xvy$wbOQbJojH-`% zi?RrvIDpFTRO82TNoxI)l(VLxEdkU`=+>s<$SwAK%!>sREf7@5JV3? zm5eI3gxE`nxoP#7i7Sz;&qk#u+F>-Hz5Q@yyKsk2x43kp(ruM#SrrBH)Lk?AK66f6 z9YC94!-w)=UQ%G(sQ-Xiv|pG(;7YZk@)jlD%o71-7&2O4TOwf9sd77Zk(Vi9y9+?i zr`xpW!7n?OQgXR4L-ij^+ovYU$C2emSCh-a-8KC^Lx=m`84C5M7hd~JD~e6+8AEuw z`KBkRQ4qQTr^VLcGSqvE6BAkjoNK)kpvXa91B*0)Z}EiV^1Q9{;TWN6zmN)s6^BNA zKr<_XyX$bViM!FtMFi*kQRmAcUT_o4@ZBUuOEV;{Tx9O+Kw_Y{l_L}WNAsA6vCsKj zb+19rWYg!I#cD>6DT^oqoG$M((C8e0o28926efZ(F{%~{x&eFeqz3|!S^0zIL6=j( zIT~36Mxy5ST-ExsFa(M57t6CT=Jfn3p7t{=HFu9 z8&P=M#v|4vccVA4PK0CBV@DtR;wrcZOwP8S0vcx0Z50Z2dusIbx%df^5bEs^iz^7n zJJLZjBw7K5Z9MVJ#NM@Q%8219h5b?1$5h+}{)=PA4jMT%WvJR`)-}y(%6=fl(lT^cpN z;_O`V>hqIL2{1G4o4(cJV{%r(5~Y`M?=-pnDqis+17g!asuR7mllfJM%YrLaJQr5E8v?3{%w z%TSCWo^x-a`A<>!(x%7k@`ttij6GT)*m69}P-mozA=^MaWl1-9%He`Yyr1qkq(uMz z3ZSu`S8HnCp?m94@oi>|5o}uaNv9(7E)Q7G!B!_Q4gYx*#ClvIGDs^2{-s$ui&0r( z*H{dWKQdrN!e+|t81% zkv60Fb&=zxa@zwD%LH=|Y+!tg4iNi4W5B4zCHVE$O+uNbKf< zf^D>#UfYH1=`ISA5>o~4$}}1jB5g9@Q5;u>vA*r ztowPm4;Z2UvGqq$puPb)U+)0fD7BZ-rKyqvYoMuFQ5JKjxw#ZMy#J0@aGo_%1-{&mW=$M`Bk|_xMXunP{OXd4v;n{BHE1 zJofLEUrJp|)Ujk&A-{>ZPEsK!1CP7@-+=#j#iY!^Ugs`ar!N-4Od%|l;emP*$Y4Fs zb|JTTLf`@~a)x}-iqIMq?fTcOIrJ+8^u(WseIQbwu`K2bWvfR&(BxE%6(D~I+lnnt zz|`kZ^J=VA?!(7z9hXAR`H|~FCOK4XOym>1w=?4NcHIV`NW2>6g^P1&J zlIg3$3oh}TlCK&5+c>Chh4KyEMh9*786Bm0>eSx|3;&*QlhS|Q%Tv@iood{?iMX|? z^EW1fHhW+KW)rggsbIm&Q{&^rsHg8sIk!9vXMyLGK!{_`DqPK>~%BZGFttrmF=au~*&3_VZ z&Xv>b7|O=CmKXkB^(mTTp~mjUoZE6CNYs+=5$?VCpLN)A6%xW3POVsT?D^SX@UI|@ z*gD6jtx)o%$8r~6H}Sh3wMMQ4(lJP5DnR;VH90_=Y*rk^R&eH*?i>itCeUB7Nr>u4 zw8Hl$fQ^8Dl@W^O=~!|hg0yodgMHx>16~DmHf8Tmp z3Sl|PQVz1s*<|4j)T}mPjo7<3bP_ua<(xk6bBC2wjDh-$6X?4%p>NuGX-aR!=6>9* z*^*7VbyxvgWTLh>-qhVKNso?Tctg??y$U(xrnV|_K>Ng@J`pd~*w2I!#dofh#Jw=R zlHp1Cu1r?tffM0~$7v?#-D1uHxn0D`J_(p{V%{X@ws);SY(sXpSGaCz= z*-n-sEUb9xkNrGi^&6jEg++apP7lq&ksvQF1?xNREKEII3Lf-2q>3k81oJH|v6VFG zQ3+kxD%?dqD=r)Xg<=nZCY^CSn&p`#dj2KoBFD;UPXVOkZ>VJWb`XqjcozI&*8mtE{a1%e zWginFjbtk1!MA`JEX26yFz1 zRv&|x{gMqfj-dCXl+kZU4Kk0kK;J1T5tEq{rzHpj2-w3cA{Y>xdCW2Uy>l|LJMCb1 zUFM9bEYq4U5|w7(PXc;YL4fZ_!Ix7a?csh<`Pg;t;0twm1A7VaFnNH%kO#VZ!n zh(_PUQ2;~-e%!fI%L@|rJDtpWsUkA0$0*+VNOCe!V1{kUpXY+x0t+hKGxVhs>{a0xb^0gC)M@gqvyG=aoZF^*Kp%v1biE-CYb0!|yEabuSPO2Gmw-2xzDG~af1-oTp>+eeO} z$`HMayWCfnNkRd?U8X4lsoO@WF{vOCBF>9lcA7I-l-6^4h3fO_J=gL50S{4QlXOHUMglp-;Lo-kI-q@*;S^C@3YyIIL-6Ni_X_D!QoG9^WBu({jz#5 zDw}4yS`G*;C1HB36ii?Y==a<;TlGjQEF+@d5(n7jArF zQMsI2!JBPxA|dHQ2$HIE3mC-?ZpV~HnrKrbdoiSQ8r@uEE!P^*yeVY9M2j#vW6n^Z zVwgX9nP^0!*=j6Y?T|k;3@7obI}Vn(3-&Xmv=)f>WcU}Tnc}O zFy(rg9pJuJlS9v_+B8D-@sRLKi+oq@A~}&=%8m3R{IkS&1GyOLxYq^9lKPlAcv8p@ z*=g`%!T91m4CBN(AD%A(Hnkkk;mKogR)AME0@LcXr{_TY@fng|N2N`|L&h;kgTd2E zQNn(1SuJUyThIROzuNzhz|RCm4^#dae^JIiPd=17J-O0yn=B9}?> z;6i%{=RYoez+^z}ZsHFmwyD!-92^3+=23}dV=L3k zEKKMF_5pwTM=Y>EzI-XZUM}D0ffbVX$gMkZ&meVxl!43z?Kelgbf6>J-TG6xC zMT$a-lLeZK5`F$d+k_@WXE`Yb^RX)~gjDIqm6@cDXR*|*rgl&J_ z_dzqrodn^ozDS4rRb(!#6R3M}be!|2!I1vO+4+k5KLKs21b~fn954b0a~2?JAS6Wl zfF3zKNgco}&U1M9!f^tA#T!NV^?m>lxUZ|wQ!T`QPZX2^wk2f!Pm~iZ{EdV+oR9!s zpz|*|Z6?NnX7pbV-UR;dtN#tbv>aI4lcT5>-fVPV0C@z4_o71SDX(W`icDg!{51kq zTn|Su?oIkr8Jb`LAlq)@e(5hP(5|)^tgMC@2Jn~lD&iENZzlkKIQi&D$v|ID{`#>B z(D##ozMKN|WB*@M2`uk$A98wYd1va&H)Ym`xapjuUnmH0(E;vAAeVjh;4SMQ zZ%K(DO|>)0J@2~de&GDB!h{-8`eORGuz~>^Jx=#>vFEEr;kBxdbYf9>+#}6_CKY#m z?**6OUjQ_|%j7noE|9ehpJ}RGNZ^xn2z&gu#sBxG006{|d5P5>b~iB4SRw=uHLHd< zd6AFnckX_I67m383^x3)Vv!UNbJaP|Uk9=G#O2vXN2|SuoWgtit>v3pu zyF~~Z#j=<+4Qv1ut@)^3EqbKON=2!uQC5_EW#9$kFJ$}f>~*tJbvtHitPfF;{*`r@ z?Sh_pF-V-dOKwMEK3|c~Q=6qXFNgAsA zen>5H9E`z6LIxA5sJ#LH)Q(In!61fzo34?S_=6|}d}Eh6d;MOqxG2O__8j5Do)OTW2(TDpe?MVfQ@4s8l4;6_EOeF~_nnULn1bO&D+3CR z3T*qFk8Ljy9UC8Bu2f)QhJaH!dpSaUEbIM*3OddyYb2O8nPq|xtJ2dm65W0VKNR9O;FC};=i%a54wTEFu( zljntP%ycai`WDw!pFgxO-=1EMw0fDE^7CCnT`04>0BH8PKA+%1Ak8>xot@o5bz%-x zp3zgdV;6t0mZl!+>BJUHMPWLE!2*cvo3&p6wd`G$RrM#M$N3}gjn?TbMYjfkkyQlt zTU2zGY!6%*;NH0LaYLN zf`H$0Z$fCg8x#VbyE`QKu)9STxc(qA=3t@mJve+Ur@EXOefY5F6l7O27mWF7b&rpi zDO9sZWJYe?(p(yTRaoqc$6p*$C{m8*qXqL5Ji_fh<+&UhDJR6QJosTKTKqAr@5WZD zk{^4Szhw#8y&07oo=%-M5|J#oI+7xrJmkz60T&xkYcY9YE@7*+oDkv##efAaTvnRN zz1QG`&CJo4;kAAg6zkLJDf$Pb75j4teR3P;AdP~Ee|7YhGmfMO9heQ`8AqKIt% z$H4eZCkAj>G@x!^>l?43P2?_tf@pkd{p>!e-~v)@%=~T}MEdX8R0iBvCF4{(-|Ru;Y=3 zV8Y5Xbi6qmCOk3IDa$m5U`1PX2k>#G| zgS=O2UQyVc$_xVk%2RdsGDrn9poJS8=au(Anl1-rDpf40bN zOjy@nVQ;}lm@zwZ*{dkWA$&V}G5(6V-Lbh<3R8D1-*gClxHudz+gQknmf7lns%vZ` zw;NM_E#Nwn>PXt)J_3Kd@%9?I2bA%VSF4T8^jQcK79f>@x+!sCOP^_`&e8>`n%7SG zq{L>dV8+*tTr@y$2EH?#gr9ujVhx)EHxD{YXp9QdA~abT3(K@G5yO3lFK#fvoUM!% zcUT~S^1?cI1V`4ZU^_KbG{+_BA5UyF#T^EkbOf!;+#P7^A5GP@6C29x7MgTq(`CJo z%)G14n6@Anueq`^f+oD(+8yA0O3EiSGIQv%&u#E82%rB7QeurSz_8xN1GQD6q0uuK zi2qH(zW-yDkVIS6i$9O!#`{wLUTsi?^3b6pTU1agN6qKi1x6%w2#T?f2)`d3`dLk@7@jS|(~R)CGDiy^G4*TQIqR8UX@rvX9kuMjp2%i( zE2^j;8Z=3uKhltb+fJi6&n>J-Ax|of=_dYE@_r-XABY+p*B504xEkHrM&-Q@Cxcl^ zq3bu7(K8|Hbt?nYLsMUK!{m?(DWL>fYbF$d><;`w)c8X)srL+8uVjSi#|OX5TcPaG z86&W3P2E}P=;s*V#(yQ>YD%)ue3KUe0FIOj(=nEdQjnpfP;*?PKM=B$W2mwjao-p) zADP`ye1v4|e4{mgPb2oIQ8J?SmO`xDKhz2!Vcr*bW*yj>cHCB9nYMP#+x^MAp@XC= zu(dYM>~GaH!I^!ku&nwos93&2!Aa?5nLt&*xDV%hI^n)@R9ZwIgDjvtTL%EFz)1p? zz<f(%p)3O;i9|xK#WdhOv{}&E<6NG=6-xAmfvQ31 z2cl}l;#Nn|EmGHTDEgQ!^_YVjY{Dz;<&PBpl9Lf698V;4V{!KBZ46XY+X2B`aK5s^ z2n>}NxM$Q2spW17gb@@3+EUdDD5aYB+74A9nG7v!TTr*8*w@G++J@MyHTIm&{@^kx z_V^VG(n4z|t*=f`A0-#7XLFH@!mrXxN3*y>z(#5mXk(Yp0)(r8I_|>khT{IkV%o`w zD{gKMt6KP&yDjJV1)wB11N`onhIk4NbKtrhQh-HH*rLKPi#uvBbO@QuT46-8qD-Mq zS3bgU!;BCZ+1HXwW`}*LpiwV>`#Ija9Rq#EwInSGN|Ju;_L#=sp(OfUG3~8(!-I6Z z%}H{oP%g#N-=bG!$4Oaw*u3sp2^Rb0wClQFejAlPP0iE_NAIIhtvd(uSP}b6mvcK! zmVo;M#Q=cZaGOv_>E_k~OIm5xXlC;Z?<}Zj-!o4?{KQy;jlzok9aKKPa;XhJARL8eV&F90h}PG`bs^z?T2Z+Y7XJoi;Yo zAprBHk`F|W6aAcsT=J9>2xHfg$1MwC?cA|j<=2^dUyvbnoIXH}dGEC>&VGLmbyZGu zvNaAQ&EEIA_G3fEG2@aNSNSV$eF1$54r@$!uG`_GiTY)^G9&Jse3W={MxpmMpt`%8 zTyu6h%A6*}yBMw1c+e+u2zLvh_fnqzRjZbT0hbED^zku}@KdZIQGS>VP(oxFE0yGf ztMwj|wAJRdOG=5IYd0RLD-_U{I(gyOMh%9niGjTn{zl4xdT5fsuys4ILV^D@$-iDk zHh1JOL;4dND1-aiJDby=#XK;hMKUFCbuRL)8gH%$0rC-|AqN+skVRN#-*O72fEfea zU6>k(vooO_OR;;9jBeo0-?m$<%e9)6z1{W+-wUi_*i2$&ByoMWE(SIB=V@)}VHPc` zB=jSy14}NvYd&O&`Hf;%)aFf*C>itdyd>cbe(ptbcg>sT)azlO`1^$1?(9;3`gE94rq`C4&cV^b#Tf#ng%&y&YnH%R$$?~0 z!ku#DcGt*WP&56_Z8~D)-4i>NN&5Byt#BV0IFhkaTv9-^ZrxIB4KF$m8T;B88k5?0 z7;C(m7k$suH-04MD74`+Gr7^6WFJCyBCui2u3CCBsj18j3PuK~%b&JICjut=IB9)g zSAPkCx*$~WFRpq@&*bP`k?eC{8#W~?Vx+;fIiDcBAkz8Wb&~DUeLqRF3heyHNWB<* z$QxGcuy*SCDdt$eY7W=F#*$?~V4esFlo;}s@_CDi;4hwe(g3vS-Ao}FeZ+K`YvVVK zx5uF0*;GD8H(d%UEC#3~ThHds?1&W-gD_n2GVK-0#15%Gvd_Onr?~cLJjsO?^blLE z`ycNovqf!DtOU@482*@lZ`YZnYAdU9ujk3;!r*}O`Z0bz3xhj*A;0Od<67bnNaAZskZ}78DtNPQX`9bAPe`5``A0_XPB{KKv z4OQ+^i!W&5Pf+QrsY8WFARDC&e3dbUm+s>)I1GM$Y5Wk4 zvXfv2AovJ9DPha~X8tS0EPU0Dx|bm z9q+$pHIG_T+|GujYv3Rw8Q`^%$~_+=D=~7-$R}V;>kOO^#ZpmbfM5fS7{HdaXLE=w z6EPJy;pV4UV}epNG1)rxpYzsaDoWKy@eXHZ(WbEdpjw}L9D z*hkQM6I1F)$EfuEL{+;#yKUgNnk#=F*mHEtNNc?sAN$a*jEF`mWFD1B_*iF)Yqtj< z?L)7C@szwlfbpLccc-g)$59`z8rG>ow_;R{!gcwzqk526<6e<9Dorofc|=knnbl>x zF>2h{PF*BZ^i7il*A(FYo}igp+lB)_gj9v`Jt}HKdK^Dq>v5XXG97Y&PnTEA7IuR9 zC9on;@>6Z-Q;+x;bj@KbQze^5r(ncC z93(;ZK$jv@z(bqJC+oI%+mvIa&8(*4@`x0A&6r9_qbA_;b{+r~81X7YR<#GGc0)_n8}?@>jVD0R^uW%mZsk~t#t!!xz(?>6W43R4%9!i zvrpC=1K;f|5h35Kk2KW!z%fWJ7Dl2AzUGzuTV%0VNVE2fW1$C~7{Ok-XJ%n){8w#k ze@{&Zzs8kXwTOwWhnYw6-gm~?Ki*2i3w0-YsiAO~ONiaaEX9<8$$;z8@NYcSn~l6S ziH*t3P>=EAS-go;$AOdAy=D5Vpd`f(0*tn?NMnUdZMxt(_eQ45i3g5QTAFBmFL_5` zUD&>O54agAY;J#e(vL~l-Qy=t14G<9!ZORKiZd&oulw?uHZI&J&c*%@KEqW5}q9nJnE~TW zMCGZ@mAudWp!v}s?l%H(1ihy#mf)*B*A&x(V}h-W>l%Y^7#qMPx6ElBilSBCFB)F# z1{}#!`;r7Jg`lRM-jmxD>-x5*LPP-ab`VE!_ooZ5>Ffzdp=OxY*Fwlu+Ub|YDZp)* z3kvmg`?~>t%50ocs%c1 zdaZDG>qXUrX{8tA6l9wBM6^3_o!15+Vk4G;%^i^95M8%uVfe7vfCn7X zxLTV%Eu65~OoF#MMt*hIv{b6&28dCj#hQkzj`rbXjkVdm&{CM2M!Z%6-C zk*6sj{%rdTT8&B4xvvPWjyQLkadLcCCHz(Iz9rh@80drY>Eab7RPVx`F_vpG;05^e`2(p;5PkNwn=@{E z>FKX4-H+Ad7-dnbI0|0p`%wfsdTV%ll0E*puvX4H;Y$@Qtd+&}zBu&yj(>lnVWG78 zw0h2S%4jgm0%FG-$aILOVUAFP+*tVaLXuGnBltCyZL^PZv1W2S7ZZ+;4{HuAp$jKz zcGWgidAXff{!-iLcvQ#=-j^yB7Xg}!G4RoK4uuTIs)`6_ir70W`jU;$Uf(h6X&EA@ zigJD#WUHOt99pmvr+s!N^qy4G0ZaE3@oq}=9tg3f-_d{L1H0KyHRq|BM&x`xANk1X zg}vsD(F;U!fkB6GsahjvSbgGR0J6)()YVr}JtAv)?fK!Vo$+vO_ z8G5@j_fM!E76vlF!sF_+^-vdgj7aX-BqEJ#qEFH7nySvrN$;d28t6>x09(-G19T^4 zWOGt;T|F(;k<;^DeK*fR3=PUH1p6eP7SMJ&lJ^E+W{kKQ%5CCyu(c!tY2j0-MS@_= zncwZB1Lk)~A1XSwaDFc$C$1p-w?jN=4B&yb7!ld%!s8sTmVP9s@!l@^dtji|AR_$< z|FrZZCE7Yd)1YzTmN-53YxrUF)BGY0n%Fa_%kHX5P3#e8oZ$GoSK_8O;xgm=?VQR8 zKJUe!d~Vn95c3{Suc7MM@-%)OL+g+XD8(^uO`MwHUW!`~9C)mQv)d~90jR(ND1Y7x z7{(C&$tcAxc1A&xc5)z^=q{^FvwY%7#~r0>egz4Myr zrV%4;8fB7yY8qGe)bYztETyu5EyMTMr`-z1H*Fkx!>{fg6qVjSw3+z>vNey2Bpf$Y zABo`auuFHXdEB6g3f7!dDby3$*aviN_I&Jh9V>!^dh^^+9|35f9}s$0c{ArKZ3S)y zrH%5T?3HD(m-L8+>MpjLNvA(T{v>75Vq2^|P~J{N4atk4-!)E-SdpM;JnoPS$Cu7# z5GWfr_dLJ@us`HL^0RY|j?fK(7yA5Ry}M^dBD5u9?Tr5QS~o!`T#(b2dl$W~2+0i0 z^-O&8%WB*byHkNE8HC02FZlw3 z)@+elkixm0H>=WjYbj-iX8)slJ=O5+2HRGgAg+&iTa-dx<8#T3maF;jeItv-(s`1Q z*s_r3NbV(+)23rFKKA@fBi0nCES*#1?=r%gPnBJQ1erT?m7BJe@>c_Hr<>ec`kO8j>PnyfH%EF#e|Pn(jjZR{M`FpJ?4tfM2dfAxu2!zAUiPAd0yXm_JgoG@E^w(0l%qa zWqM}y72UN@8)^bGCbx+?-w|iLw|@c$HdtH<2~xL{ z>ZCmDgd|wfIR`P`(eY@b)WAdVSQ|JK0bHJ%Je{V&*1RUAy+>d=GlG|`R|MI8!6*YQ z-bk+`tI|W#KmtqvzlM`rqZl}jKT=x4*?l%N`k*Tn+J1Wcza!j!ozJDzEdEWmLKXSl zvcVwu1JryqkTqxA#NDJS=}p%gx^OsiA%6CI3z=n5QvrOEWw%3;;pXX+e^f#s|fQx0-yXVyq}>)NOi3+dy~SL!P~qD4V? ze$~_)jhp?~9)lmx*qNGXRaU{qMx`2pBY_{<7tm}WkS86{vfSNzgZf6*nzp9P4#K`9lxIC zytdZ72qoSfDXSKvD03D5Lju;IQxUKyJBR%gN;UozCk$0b0n<9mqXX$9PQLf?!-!UX z4ZlKLoL%7=!BQG~YH94b-6V%--vuqnI@5BbT)hXAmvb(>RzegmC#t7~fSZ*Cjb^^t zdBXOUbT7F7(FPcqHVFmp!*-lvak|9BF-@3r|0P-_594_Y0bE>P%ZjIg70B>ZszJbx zqzA`N!sQqodfByzn`Rj&BEm`gC_L_e9w~4Vb3Nrd-~kTh_niHlOJHI8Ghw89$#{X+ zJHo=TH(>68F?X|G&ipLTkN7T`Rj@IG;OqRaU$&N(XZp|eloOB@{hUO@7ER~$!rF{D zFIT$Lm$hSxT;2GjGT#K#iEEVI4oRKS2^-OJ1<2n@Zid&w*ayj=^fV%eFn2k~jc!f_ zcwU<%t^|^K(Qxa7EVg*g9q3Eo6%?Jq>X+&~99UQQz4@!oev(TN(G@QM@52F%AV5)S zxAe`Ws@!)JJpV=u<`RH{kXl{rF(idI1ou^L&r3-ORndq=`@D9}bY{5gsn`T?IAIOs zb`VAr&YGc)BKLhc_shokI{y}K@V5|<&<$2q$s;-9rQo2a?1a#4V$gSV=t0S}8F)xj zjwhHA6<&ERShT3;t7J9ZuZAes^ujkeBoh=QguX{c*u&XBpksj4X-D~&#@HU`U8ecy zu{7^{97-1WY)2QPlFgH2+z2?J=(w=}(ND|A6}J>pSDs{M{%f3v7al+%-H_7pb6<+W zninj)VQYcbrLhx)1QHYo7b7{U&FND(+SI{xqNpMY`B##PtuH=`;ey+#Mmy5>k6D<<3%3%5aRT8awL)v}-E6q({Me8UQ96N9G{|w2B*nnCe>RJCPI> z1(=VBU79OINr1l@3%6suve(na>59L-*VB0wQCEfX?Ony{m(pDvBo2_26@$~-k zRFQM1qM494j?Rizf?GH9i4543F(4Eg8lY?(!2>?3d1qoo$^YpWh?h1dvdZ+i0vghn zVb&)DSy%BwN;k9kg#G7qXHPXC5IpnD>tHW<8{r{K# zfehANucY8BPG-+_$vIl+;rP#Xzza>4VKijkZfmF+=+hJ;=lef0tjoikQAoY3>r4{d zP9Dg&SsO~?7`r59@l8JWy4q>!O8r6F74V-ix@3Jh8%pzNV_`v8frX2_b1OGN3q>eu zBxj-k9zOGJWP?@(p#Cvy9)o_kPeqb}X8;tw%L|}o7UIzZ9DQQ;iJ!W=_KSi-cZAEg z(1K_-!0^X3im4;o*`$ht{L2bHsS7%~D22-**hKJh^m}Y)k)j2UC&XwV#Z2irmiKz) zOvaaJM%q3p7u%|1kMo8&O6lfa)tb=79K-`|P>f0sMFMt{v$%|xHWH9#m#j2CruAka zUx3DoLv#K4szyivYA&qgRJ9#V3$`cF>WyELy$9DFw{`!EdjcVLr(Gsr1-$r}4pNly88*iJiLk&C_fF z*Qf-G@q)~Qx@N9i3^02EgmpBXMP+wovyRg4!CmJLGTKQ3IxnG#Zf2h*1SaveUqP1- zzuDg9{x4}`EKci0n_^SQpBntIT1V^cRMV9E7jlwT=Alx3F~`wfNPo!=&S{4wKtK5< z1hv0MWTqN)6?okBJ)@{ff|m1RAh36T=1Nu4673-Ai znU1v^&0szN9C3}hmh|ZOsH_(7V+BzaTDdnG5I|)Z!8oP*Gg0nnEuUvma_38L8rF+T zq(BrO*3a5_B;J;lvg zgw$POfUyX{J3$RUy>&J+~V4d7FwO`H$@@CO9{|W?4l5UQ{A6~JA8(aZv*mo#o zpe`SWe@@}w4c2Fy@+m}FDr2ax#x8Kp(f+ZDbBm}_Q^iB7p=^0}ctro|HG;KV0dW@+ z^xQ$U`}t+#YdXxSXd|i%)K`~BiMRMctlAK~>%)ww_f(e3G?I|aM7i&3%%ImIdth^% zI%6E(_>;O8aL<*0u9;Z>&3z6WB?Hs_Iqbb&HlfkqJSeoxw40SK&<*Iz(~6bTtro%8 zeX6lkdsEW^PVr#R1-V!Kdq5g-GHs2U7uN=5)xVKoS%${oW!Zr?B|4p)FM)X7@LbeP z`8=3FaGyuBu9?q>a-~-jUk9J21IQ^gj;)@O8zx zrr;EFS5J>o)%#vcS()!Uk^{_ah-S<+>k_IbKCr>vq|yETpx3MU=$$?gA~k{)6n`RX z0edqwqXYh87;HLnaG;IZH>43{kxLC6!8lFN<=RsR0Q#*}i4s{B19~)qMMEgu|BSG;~owp zoe9DVa$5n*6|?bG+q@zP?etHvC6NOcg9u5qYu1e*}9}rdHH_tR00#N!|&EtuNq<6_na* z9mfN2&d6yqJXzj*p`vna&b!5IkW&kzkvwN|jrdXQvesC`w<@dI!=JoSRK?6R@cM@V zb|I~(nop8&wkarcvGQpsA z-hEKF3`?hjXp^nymC(AqEt3QsvA3NvR?*amVk=5GKS&T4zDy2nZ`4 zGQk)hu=wwjC>h+33;tVNKzY5WjuWv!k>UtwC0o@Bb5lQ{YwKgE2*bky)~8%XTXB<- zioB!P8{nc~?18``T;HO|l;2%O^E#ZViwx33T-wm`{Gc_XQx*8C-sQ<-TD0Xr2-acb10Y zB)s$fLK9s>BhrS^7JP>+8UPQv@bpsFi=Z*!-aQUyfvcv4@gjw3Z8uT8!n?1W(TpqY z=>q8VSrYI|q0z#sZBt~z;^%I;CmZV(Vj6Y!vQ$kVcY_zc?jPa%-=RSayVBUU?3dlU zlTWHPRiq%eb4sPBC|e1U`ilP`4L}U*;qESET^u>;Kq?}{l&z7Hvqv!i1=*O83`02E zoH);ZiM?kL(@e8DA;`lJ$U@`un>IF4H48HZ;!EHt`?Xrh}NZ}V1ue0|-kT;lC0E3|$Sm(8< zqEcDIYO;&Qt=~rGE1*ROw#>voK1CsSG zg|khl9v8$F`Pwh(#^j-cYQ-OK$TfHll(YK+Yy0^|@XCPxDzziCV&O)3S$sx!g+-Uk zG|(FGjx`YzC)u~Ev^&qc!_CBI)9Eq_2~c+3Df#HT3Yy-2tgEmFJ_KZ7~EG&66No{e zUz&FNHhX=G4&r>CL+KbsiE^DZ?@$NShS`DBACx7PV$Z<=7{QL7$RRB)Tc2-ry^62O zMLvXaaHUB6jDzy&zlD zjmoIB;~m$x4vrK!klU*m%3t*+DTGw=-YjQ~F$L=RxJU&|-wuTr3AV+e*EOQVhSoJ8 zR>%$VOA{jA4eh~vXE{6u0Xt2(iGGKjG5KK@nWmbP`L7HzzBbid``s6ggkmXHJm@HB zofmzZyX8|kb*5zYt%OFIWRjPk+5h>FiU1ipxDoTo7$Zt^ zbx@-8+Q$v%WtFg=&|>x+iZ0(y*jwDzxdK5ZZ!qnyfIvX|!7+-{)Ft~JmhtaJJ_NN- zOF~u+00;^sWoxa4>+a(ZIV%ZHqrL<9|Mi3gP!=usHPgirxLW(OMLbWr=sk*(J+j^M ztXyFV^5DdLK9tOA9{|Pube^lH**@}EtSIG6^~LIbOpe$Hn;N1166YefLA1wgMN?(n z&uLB9_`AwP`K1IxHua1k>01WDN7AjJcK`Cs6@*xHm`)0y^Q=;8Eg%)|E*;wNX+xk# ztxMc9zMbDfWjHn4V`hJeQ}ZY%JWjiW{nZdvUXju0L@If~S@p*agKHhLzDpPhmW+%- z6i}o~>AboN#e))Lr=~3**#00{>${j0|L7Jt?!HFTwH#j)k^tE0{V=oQ#7ke4Rs}+0 z1$4(i9btJ7yVSThngKPEBuHj_8^H9;Qw}?UV;>x*gQG5GoTZg$kCZ=FIU+bOk#m6x zxiSxB{YV4x&+AM4=UjFb9^^kJSR0fBqHIf?m`qH|)f))ujK;)UQH-=PiNY?6Q>})EoVUR%U13d-F-wsCC%)KTe z6HVpCZ|LN*VQ8U9UZWdqJX%r8nGp&1iGTNjHMNO|WT&1}7zUOXG`aN24b-$8z9Q37 z7+u&SjKFoG6Ga50b_e8h}j2!XJ{Ad#oD;Bg7ueok6a%N;C*sYtXkLPtz&oa(30PbJa^wP`lO`FFA(9*cvjs^(V6-}Bn7jZDpj9WsWk*0L&>-Kdx zwr)m!Oc!2>f;-#)a~ExZ1n0^{_sIM-c930;lwVMdF%82j)@C2E3- zF)NY#dx)8}x;iAw{POR(Ol`RirOs8`_dgr(5$XgXOlQ<}bwO}(0;-4^IvhZ|>}yE@ z{Q_c^U`H@fCw{RNA_MG#Foz52=j4JiPFFst^MS++<*HI#5lVEKO*A(EqWTz~1wQA}#CN4f^VV=_4!AcCRHj@_3h_bn z2PIJ{xWb1#dlXtCy_aqOEM}e3*Ev6&QqfGPf-OLSa3z}BvdejQs-1b`waZ7biYTQXlmu_!6h!_&i9{*sQpUSjckodE|1jCa1wKJ$?Kq z`PBg9!K1E&7PK$INc@AO3Ezgk9xkPqfD&dt8&#$z`MUq9m~3IgmTwg>ON@OZr(Xu{ z)E`EIt1c;jl+tQtc8k2^|3xz_bFe_DXevw8WMH+l1OQ91(#n#>Si_EN(!o6F@~@Q_ ztIY-|LHS$aZ4Vbce+-?gb#C%gq67NGc%wLg4%2%E0bH0WzKhmFO#GusKLqeW=gI-h|j;dal5E`o>Q0pkuz~__l%p z<KuYZfp&G>wr$(C zZS1yf+qP}nwr#t6w{6>RpIde6-MXVSS(Q-+NxtO&ABoKGaqYN$#u!a{7EA$^1;-XL zF~l|iUAck55b7TFp+jH%(GoEikPTr9Ybc(Oz$Iw$Iv?fg<7OeU&5+;uH_IHGm^ghF z8&{wf8-`%83r7y%5Y6rT8O*jDm{Ho{LRQ$rJIlm3Wd5+JXjCc+?#}s~mAhQz#39B3 z(hJI%Iz#3ckRt~PCFgbjy`&f_f`;qHxecnxKg-^i$vjvW7*!TgTiX$4%~n!Pp+Y-~ zXYsTWe_-g{!Nn6J@y$`M7#)r~>K7msp>Dn7=|E-%apRvArOI)A%~|Gc^j0V;3a_Li znq~rj%knk}3cAXsqUV%%n(-HQ#qkM`Oob?U zZ0T*ojm?GW&XF-1-t`B<_kn85+MgCQU=9O_Lt$ty2Cy9Vy|mWi+4y-SMf{nDnVhIl(=0c7fyk53qbJdQf3U=D*|_*?hFGe`CEKuOX9LqNGDvuj~raIFB! zWv)el8C!$ZfqaoL(J)l1+e?PG*LngWC`T!=7a=km-I^#I1NwjGJa2Stg@<@<93Ez{Vara(|mG zp!!|QMW<-oh5#XsMBvk|;}~yZHAFZ8sBTml0D%RFlkoVo7Ns|ZwuVN|CLY(?`80np z&Yy$fZKW$cDertVu~W~|`nZ@n2fsidwyGDiY7#+Fc4(9}3AmyQTG-S-neQ?`%pCE;pEhr@p9;6WlBHu_z{b<8O}tA~3a^sn9~9g8kJERyk-^Q|QWyNhi4{1Y!%~ctz0B0Ycl{nEpZySJ9l)^XoVxP&hxFfaO9M(C%nJ#_ zg0wPWY_4*%0wL5DQL@)vdBNnoL@1(BoIXGO?p2Fu)t(+ zK{G6qa~^LZxL>%A#fO}Pu2->FM$wy*OfuQR*3dB+4mrWx=@ZML0&35DwRgHCV$~Yoq*|J!dm~U3Bi?Jd= zu@a+)09CGi9w9-3v`Pw z^^FH7@91-bZ)oghUmhF7TxD)C;X1}P7fpQU(JXpzaLd6X2#{j5j6RY?$l|WB5e3?u zJ{F7G8aORlt86!T;~}!En}AYmm;F`0f8yLghK{BkS2*xHe)h8ogoX< zsRS_9LcLtsPxPjHB>ck&#F)|;kk$??sIJk(5}rSCKm@Vm!B1uFWBGCK`_|8XuXaV$QnEq!?RTDI)9B zEBO5;)osKcY0Zm(m_z~^AjcWu4M{p?WG%kcNb7=1sp7gO{zaMw1#2@YeEyKwc*S-< zz4mZ{fi)%Uq);1~&(A`U^7fg;L$Jjwvi@~Uh(kJHGE)O<|0PRAuA*76NED{ifW2!h z@4r^z{>HTBE1fhS%qP}7-w3H~}W1booQ-6?P&UgZLgf);$s z#T(rPUIw^6ACGwpzi4$1T^;%}gOWK$9RyasOtaGE*O zlGi;szZN|b%Q-tQuI2^{ALUn{wBwnI)7+@fMR_gwlrn z{o7Fp0j1OSLO4T{Qs|Nmzc@uj$rM)}Y?@SM)*SGGI23A)fbFTi?xJTtF+*fk;S~~p z*?i>V7R8BVg{}=7OYEf0#;_V)G{N#2wEP$ioIfXOy<`Th)~;UF8x5ti8$Ucj(z?chEyt zSM|p&mM<~o1MrmdoXl>$xt5u;LfhEg#VUL}J2V3eMGq$a+W#ETf3954NYGU)i+3Du*@Y4A- z4{p-T%FMv5uJjt5R_iElJUH1)^V)NP(r9_F0g%2F#}7?wNNjfc(XQ@dircTY&aHCG zs;iYgTyp{wcB0KqFCJUX6!K!$OzUY;mOO_lK?4UV=av?9Ys7|j%2+^j%lcMao6H(H zb3CNEJ~|R!^EMB-vuv`6DV88j85~XG64el?Qaslu?p5}NLEZ3!JTI$oz-ENt)dqEu z-21{{8;@2p)PR^?HJs1IoS&h`XGDc!&l!cRK_c1Ztu0IFb9&2Hqk%l1rt_ z3D^fm%xa+(lSW3DP>$a5T}__-v%mrYZl(Z~lny-y8Mxi3WZxwl@?JCaBx3t$ zRrptJThWD=EV02lQ3Q&y4+Y|*YtrYo6PORcIG?zkXKUfs^3b%niMGOS;Te~Xty)TO zN99-Af6!aPCU4U5uV`@02K^CbSB{)-_)J+}HU#3>wdg|*+tr5lYHf=JQ#;5q1s~24 zkt+EVilqW%X_sXsORX!>=9ZLwNPY8HjRK@e7g#{EH1nUVE**$isOuRYhN1Wn?<63$ z?Y#@Z$0Oa^QXK>=jZZeG?#mtJO{rkCVDPP}6~33JX-lhdq`e!SZSRzGO{3sIg1!x5vp6-95uHtSc!bqxFsy@gwR# z_m>TL0=_nUkTCq@RZ1U~MgTCDI;yL^SUpuDiX$Vh-@IcqvBy#Kd)0!TeR+GLp<|$_ zS=lmqmPTFn_SaxV4Q(i(5W3jBa}(jC%%*U;zqs!kX~^_f+#z>v7V+$vwEhPgV{+vq ziA6|8N>}lezU@GzD}urz+8PYn_dTh+rIv3=L=h;Ji}%RYLq)z;Qg-n01~LaI=iHi0 zqB$N*b3Bi10+1=M(`m*9) zxIg~$6+p>w9FLkyHbjFl>h&Q=WbJv-6|qw2B8Pn;jRs)!W;c1~`4bZHG@I}sh~-l; z5@JmY?jmctxIsp#GHPNUOX!>g9v(YU3F5?m$<)q(9;kkDwsSqPSZ#n`L)XOcp4(wx zh3s26;uQe7{H06uM;QZrr_5Ca;))@nc=ZmL@&Kgt*#lw`-|5$-Fd+G`z5*e7X;OV? z8h8C_j_P8M`b#}ZaJA+qs}P5&Uf9L0h-3M&F+Vp|CN%()1I-4-`(W+|e;Uf^W?xrU zLgSL}=Z|^JySTG&#KvB)_bYbLDn(Ii@RA?XyxUq!+r%3*u2jI0Ik$aVu@&))Q(c18 zkV#T}hEWO6p^vQF%toh2VK48Q6c>JJyz@w0wP&caIuq(!4WFnz7e$zoX|k39#VBH; z{T;ERAo1%n#cQs+c=kB$>^}er%So|$T1G`)AdQ64{@CL1%b6Nq^fI^6vJ5Soz&Tpr zx!5Ip)q78TrQ*Ol6CKObBbJ|#)Ygw6N)pn_{hp-03)rDq@#}j^niQ+bPx$8VIrD$I zre<8ro#ljAAFdWOtxXk4Ij}Z(9Lv1t2ie_4&C$mKqZNsk?vC&&^*@Eo?V@FVoOhW6 zfO`}MH;gQcm3IfxUh9Bo zpOX;JTB*QI&&Aq(zOf{p`T-IL;PXX%Z<+f2C!WjR>Z;Yt!fD)3`QSq2mE zY(XL4RkyZ*8qJRNy$3~P;ijHRwa)Y^>R)CYAg(*jSbFhRFUrxB88#YbDdM^zlK!5AJ6o%|!?0Vbm4GOJJO84fWl|Fju{BqPDOfc@|1B6f7d zYk;Y{?f#5R0QWaIgN@0?9M+l1%7?@G=>pyOM4A_tHnNq+nCR~;QIx)>i8WY7%ajEq*HO1@Ab-R1Ia zWms9=%3?R3Aq~#FF1`gW=uVtp(pj>Q4h!tEyGAms)CRfgmCRG;hHjWmPyt|UnQ!|p z^eSZojJaJwkHE=7J;J5OF~mYa9{G7qm5?`_6$R`wM%^Tn{6oij_|^g|$$2rox>IhB zyw*GdzqlWB*3%@$5q1>;zfBeFEBfUCDI`0%Uf}al9ywokItFPrR_VRt6W&_iECStn zNo&S!BK&+JT%G5AQx4R>5#7k~%7bY?p@93pn6SLBJb>nS(2(_t_or{w<2x^+S4T6-5?HE}<^ktac)i?)9}8 zoeg)I2)LXzFSrC4kcT4`un_-7INEt);8g&R2_!0?mydwPN0f9(bWzrn#Gtq`~!jCJH z@$2X&29YR}g6E?u7n!%!{YnDJ9Y9-w9GI{D(c}*U8V*9HCWLk}*Rd5yG)Qtjp67Wa zd*FKfTRG@hnSo3^V6^_0G1a6o7x>-gsxI^Oy(^Y;1I=0x$1ZU1mLX!JoZWCIvzH}zJiyh%F6a4;KU5!$GK1BzuX56T z-gwEA6{;Jm5G+GZL^lAm@#IPj$w$Ih`#NPKwNfaZ0S^Vja1p@@^a7Y@TnnNi8|`h+ z#p6W?Q_a6X!uKZRY-FqU0!J!b9%y+bw3Y`7?7F!SFMvBPXvYENyNLI)ubg&=j6f;Y z`6yX$!eIT4M+J$-KLtlu!i|T;bT)?DFU;1rTpb$+mOIm}N{23+maK2HdNnpbL`~n4O@ht?v75&e?Ev6mwVjzP94>@X zv?~b$CdN5lW8kKaE>Do=_dRIgwtsKK_o#vcHW16ju9*$E+Y#OPWsVQ1yH2yzi(R;- zz6=O~56^;fc(+fRp_t7EP*D+%FTo(H@Q64vI0{hRM;iUJ{G%HUmV|@YP#1g!a=Ww@ zkHsep_ONlfmUmev!_(tJI%cfGyVp)PQMZuq(Z>R2V z;F!!gJ|3&{9djW?i6FW7O6*?<(-@28IpbBSd$Sm3iWr*az*@+M16}=K5m%i;yW-*J zIPQuPQuo<8u2%)DSP@&CpQLgd?BwKPOd{~5e;wi>YbUoWYRE8Q$R z+>KiY62$2QIAwkH4H(PsEpi?w9JzTr!R3|{2_Un8-A&OW;-|>wT|s`mDhj+mA%^vA z0UXug%yQDuX6RYa_RY429x@lb8El*R#b$*UH3xBVZ5a6-5z%{_%snjF8%_T?5Op^6jUmNbNrnULCIrp)ClIokN+dg!IGz`=gnOsSFj8Ie>p@pjTWKBt$nk+O z;Qf^3;zKak3Wp64*h*N~H6+b_YKTOvF)qL#%r5~hz zTfr!R!@g?^?F})XF2ChTOzBFocKEkzNk?Iu$@#4t6 zSWPKmE%4yt{e(&ZfwS~OQ+rCV%MDF3CQ};-jOlyLaJs&q3t)Lf)@K}WQS0!eVRD$R z?I`Yl7+7@@y~Ks;!T>xIfOXzm-wMz!naJ&w;eNz>ap|f1VNq}V2?pzwvq-C8RMJvp zVCwyw9fXFu>?IYjt{poU3g8Jr`_HJ=$}qn^_O}7(TrwvF<>7eACPA^^sx#pVp0^oT zme%CmdZbnfoeoO*9$RHCf5~|FX}%Hgo_L|MFxytQ2s&tx{Nk~UUD8c2`&w$n#CfLg zh$y-|k2=lwE1_NhT~%H{^w?;p2S@r9G2Z1=SNn*;Q1APLG7Jh}P_2MSq?0cu<$3HXc zPifMWLA9}>{Mez)Iz1~+7tjfOQq7EdQ-@_T-T88i;2{v|FI&sZeRb&r9R=iAZY>u9BW>7!&bo z?Wul;LK=~g&nAa8zR9=S@=3K;#Ct@3G_k1|JuMh?O##rB`t8XODGccI?1eB~$x0Qz zvnkdI>YDPBa0h@eHYkjGoJ@GU+D{1OYatq0s5zSUFY+1tc3nzgIe%KBqeyR1(T5iv zy9s*D+J83G@;&3l6jVyPyG0;61&95WcX`P$)0SwbY4b;&*c^MLum;yBxCL3RH{`&S z=UW996D?+Q#oT`V8L1OLYUzok$P(5{{E5hdow#YL+>soZfCAZ#tTnu(AxA6g0TR}n zonwOR)HMoax09t1mbA%2*vzhe??GSGkEstIzV+#yvO~vMjMh51oiLdPJTj@adSZcG zms#RUOk9c>QPb2Y(|1?gHd?@$zS^DQQVOTMu^dcc_1&hrb#0OxaC-J*fB`vro?Z49um^j3 z2SJv!E&GXho1JZ2K?QKubuO@~bY5}tMV=z3T2glO?Vag?rAbJ%{N6moR2xX|-0FiwetxN}(DqzR)O!yu$A9}j&Q9K7A>Dgm=IKN9Z% zx~yOT+P4CsLa9%&=euu&F?Q+?ln!PCoGHC^F^u-z+xTrafXc{1-SE9=xc~QN{@leY zUT6I3@rlMOebU>RZg0-vfvtAohHigi7I&m3`ZK$60IAg14uL`8flibs2h5=bHkqip zo~Q(-38#jGjIZV{dhBU=if$VUAIZ3wx!{C0Yi)d1-@w;r%yZrAOm*ngRiFA+|W29s)5He^XkePu&-*-Gsa-QYi*X}m%sw# zrJiUJ%JHaBe)4U!V(<|V6O-d(WD=ludt0{h<$|ZxH`9+@ZlO~^!v~_S2_f5>u*;*p z>w6swv!+2g=*(REAAe@?TB^Y-y)K1~{y6rcLSwn{bZvtkScLjEXHlu+j3=%usa4~| zM?A|9Sb=ktfNe>15&^C4bhnbKvaEE=*(e@-@TQio-<%6f8W!fT3gSDf1P)Gf#iXq%OaP8Vjmk(waI7NDw?OeU@!gj`4bk80M2n$st;c zM8^2+kBvg7r)i3h(1zB{8-O=M4vWR%ZM)joHO26BaqAc&WhKXKzrzKK6kx{@+5dy8 z-bU(1UI?A}WDMr%X4`AL0$o9&6|-Fnr1%OzZA}}684)ZsjatiX>125<=XHbYG;M4} zTIVRyL>rP;%SyU`HAiG{;{Wa-Fm1ZjEQ2IU(SECpobHZ!5_=LW-0?uFO8s_ghVKJh zL4k&t(Gcaq!HG<8yDq=ug@s|P5AFO?Fa_V*02w7CB9ry;LviY3iMBXdydt=W!7s-U zf7^c7C8z~ol1REu{{-U8&zzhh-_RfJkbHlOacNCtWyT-Vd!|$ZZa_5X2b!WSU9;7M z2r84>GKhUsDCToRQx3oj@1?dXVM}!=r<_(aZ@Mr3zSUeQW5+&bQC>5$^jmaJJ5qi+ zoQ?NP6U1-PFK+YtB18+*OP_4TxwfR;D1%H$A^Z>i$cv<%cvUuNqMHVHBWu3{ZvZfhT) zhsb@}=lScvof@>(UB!C}E_^P9_2j$}h_U81D;^6qdj}nXCPj808Dkg3{NqGwd6_gO zIi9`pe1=SOe`Czk%Una|YgCf-Sgp{K1RLLS0hx>Onhm;e&QD(tZ~U)(BI>nu5?+PR zYYj5+HH(WoVpxo!!(ZPEovdbhpo(HA+cS`IGm-TQz~LeOOm4P`h>J~prRi*Rgvr-U zOK5wo1w(YdpMP(UJ&s3{Eh9Nvqz2IAjKxs;VSnlS)1WyqbiDm#yt7ZZ#y=Jtofi3~`3RR}hjUGWe?JZ}9om$@_#? zHIIdT2P5@WLo?HE9cr2eC1EVxWd}#tY(vYD4D0LoZ`-$h1&O>)53)EE*7O)BD{Jz4YB37@e*K+A6B$

    `, - angular: ` + angular: `

    Use a drawer to display supplementary content or actions without navigating away from the current page.

    Drawers are useful for:

      @@ -58,14 +58,14 @@ export const drawerConfigurations: ComponentConfigurations = { }, }, { - id: 'position-bottom', - name: 'Bottom position', - description: 'Drawer opening from the bottom of the screen', + id: "position-bottom", + name: "Bottom position", + description: "Drawer opening from the bottom of the screen", code: { react: `

      Opens from the bottom of the screen.

      `, - angular: ` + angular: `

      Opens from the bottom of the screen.

      `, webComponents: `Open drawer @@ -76,66 +76,89 @@ export const drawerConfigurations: ComponentConfigurations = { }, }, { - id: 'with-actions', - name: 'With actions', - description: 'Drawer with footer actions', + id: "position-left", + name: "Left position", + description: "Drawer opening from the left side", code: { - react: ` -

      Make changes to your settings here.

      - - Cancel - Save + react: ` +

      Opens from the left side of the screen.

      +
      `, + angular: ` +

      Opens from the left side of the screen.

      +
      `, + webComponents: `Open drawer + +

      Opens from the left side of the screen.

      +
      +`, + }, + }, + { + id: "with-actions", + name: "With actions", + description: "Drawer with footer actions", + code: { + react: ` + Save + Cancel
      +}> +

      Make changes to your settings here.

      `, - angular: ` + angular: ` + + + Save + Cancel + +

      Make changes to your settings here.

      - - Cancel - Save -
      `, webComponents: `Open drawer

      Make changes to your settings here.

      - - Cancel - Save - +
      + + Save + Cancel + +
      `, }, }, { - id: 'size-narrow', - name: 'Narrow size', - description: 'Narrow drawer for simple content', + id: "size-narrow", + name: "Narrow size", + description: "Narrow drawer for simple content", code: { - react: ` + react: `

      Narrow width for simple content.

      `, - angular: ` + angular: `

      Narrow width for simple content.

      `, webComponents: `Open drawer - +

      Narrow width for simple content.

      `, }, }, { - id: 'size-wide', - name: 'Wide size', - description: 'Wide drawer for complex content', + id: "size-wide", + name: "Wide size", + description: "Wide drawer for complex content", code: { - react: ` + react: `

      Wide width for more complex content.

      `, - angular: ` + angular: `

      Wide width for more complex content.

      `, webComponents: `Open drawer - +

      Wide width for more complex content.

      `, diff --git a/docs/src/data/configurations/dropdown.ts b/docs/src/data/configurations/dropdown.ts index f92db41804..521003a4fd 100644 --- a/docs/src/data/configurations/dropdown.ts +++ b/docs/src/data/configurations/dropdown.ts @@ -5,18 +5,18 @@ * Note: Dropdown must ALWAYS be wrapped in FormItem for proper labeling. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const dropdownConfigurations: ComponentConfigurations = { - componentSlug: 'dropdown', - componentName: 'Dropdown', - defaultConfigurationId: 'basic', + componentSlug: "dropdown", + componentName: "Dropdown", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic example', - description: 'Simple dropdown with options', + id: "basic", + name: "Basic example", + description: "Simple dropdown with options", code: { react: ` @@ -72,9 +72,9 @@ export const dropdownConfigurations: ComponentConfigurations = { }, }, { - id: 'with-custom-placeholder', - name: 'With custom placeholder', - description: 'Dropdown with placeholder text when no selection', + id: "with-custom-placeholder", + name: "With custom placeholder", + description: "Dropdown with placeholder text when no selection", code: { react: ` @@ -100,88 +100,267 @@ export const dropdownConfigurations: ComponentConfigurations = { }, }, { - id: 'filterable', - name: 'Filterable', - description: 'Dropdown with search/filter capability for long lists', + id: "filterable", + name: "Filterable", + description: "Dropdown with search/filter capability for long lists", code: { - react: ` - + react: ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + `, - angular: ` - + angular: ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + `, - webComponents: ` - + webComponents: ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + `, }, }, { - id: 'states', - name: 'States', - description: 'Disabled and error states', + id: "native", + name: "Native", + description: "Native HTML select element compared with custom dropdown", + code: { + react: ` + + + + + + + + + + + + +`, + angular: ` + + + + + + + + + + + + +`, + webComponents: ` + + + + + + + + + + + + +`, + }, + }, + { + id: "sizes", + name: "Sizes", + description: "Default and compact size variants", + code: { + react: ` + + + + + + + + + + + + +`, + angular: ` + + + + + + + + + + + + +`, + webComponents: ` + + + + + + + + + + + + +`, + }, + }, + { + id: "states", + name: "States", + description: "Disabled and error states", code: { react: ` diff --git a/docs/src/data/configurations/file-upload-card.ts b/docs/src/data/configurations/file-upload-card.ts index 38f97e6e09..6f073e15fc 100644 --- a/docs/src/data/configurations/file-upload-card.ts +++ b/docs/src/data/configurations/file-upload-card.ts @@ -4,18 +4,18 @@ * FileUploadCard displays uploaded file information. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const fileUploadCardConfigurations: ComponentConfigurations = { - componentSlug: 'file-upload-card', - componentName: 'File upload card', - defaultConfigurationId: 'basic', + componentSlug: "file-upload-card", + componentName: "File upload card", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic file upload card', - description: 'Card showing uploaded file', + id: "basic", + name: "Basic file upload card", + description: "Card showing uploaded file", code: { react: ` + (onDelete)="handleDelete()"> `, webComponents: ` + +`, + angular: ` + +`, + webComponents: ` + +`, + }, + }, + { + id: "with-progress", + name: "With upload progress", + description: "Card showing upload in progress", code: { react: ` + (onDelete)="handleDelete()"> `, webComponents: ` { + const formItem = input.closest('goa-form-item'); + input.addEventListener('_selectFile', (e) => { + const file = e.detail.file; + const card = document.createElement('goa-file-upload-card'); + card.setAttribute('version', '2'); + card.setAttribute('filename', file.name); + card.setAttribute('size', file.size); + if (file.type) card.setAttribute('type', file.type); + card.setAttribute('progress', '0'); + card.addEventListener('_delete', () => wrapper.remove()); + const wrapper = document.createElement('div'); + wrapper.style.marginBottom = '1.5rem'; + wrapper.appendChild(card); + formItem.after(wrapper); + + let progress = 0; + const interval = setInterval(() => { + progress += Math.random() * 30 + 10; + if (progress >= 100) { + card.setAttribute('progress', '-1'); + clearInterval(interval); + } else { + card.setAttribute('progress', Math.round(progress).toString()); + } + }, 300); + }); +}); +`; export const fileUploadInputConfigurations: ComponentConfigurations = { - componentSlug: 'file-upload-input', - componentName: 'File upload input', - defaultConfigurationId: 'basic', + componentSlug: "file-upload-input", + componentName: "File upload input", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic file upload', - description: 'Simple file selection input', + id: "basic", + name: "Basic file upload", + description: "Simple file selection input", code: { react: ` - + `, angular: ` - + `, webComponents: ` -`, + +`, }, }, { - id: 'with-accept', - name: 'Accepted file types', - description: 'Restrict to specific file types', + id: "with-accept", + name: "Accepted file types", + description: "Restrict to specific file types", code: { react: ` - + - + `, angular: ` - + - + `, webComponents: ` -`, + +`, }, }, { - id: 'multiple', - name: 'Multiple files', - description: 'Allow selecting multiple files', + id: "multiple", + name: "Multiple files", + description: "Allow selecting multiple files", code: { react: ` - + `, angular: ` - + `, webComponents: ` -`, + +`, }, }, { - id: 'variants', - name: 'Variants', - description: 'Different visual styles', + id: "max-file-size", + name: "Max file size", + description: "Custom file size limits", + code: { + react: ` + + + + +`, + angular: ` + + + + +`, + webComponents: ` + + + + + +`, + }, + }, + { + id: "variants", + name: "Variants", + description: "Different visual styles", code: { react: ` - + - + `, angular: ` - + - + `, webComponents: ` -`, + +`, }, }, ], diff --git a/docs/src/data/configurations/filter-chip.ts b/docs/src/data/configurations/filter-chip.ts index 333e55902a..02515e9e22 100644 --- a/docs/src/data/configurations/filter-chip.ts +++ b/docs/src/data/configurations/filter-chip.ts @@ -4,57 +4,73 @@ * Filter chips allow users to filter content. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const filterChipConfigurations: ComponentConfigurations = { - componentSlug: 'filter-chip', - componentName: 'Filter chip', - defaultConfigurationId: 'basic', + componentSlug: "filter-chip", + componentName: "Filter chip", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic filter chip', - description: 'Simple filter toggle', + id: "basic", + name: "Basic filter chip", + description: "Simple filter toggle", code: { react: ``, - angular: ``, + angular: ``, webComponents: ``, }, }, { - id: 'selected', - name: 'Selected state', - description: 'Filter chip in selected state', + id: "filter-group", + name: "Filter group", + description: "Multiple filter options", code: { - react: ``, - angular: ``, - webComponents: ``, - }, - }, - { - id: 'filter-group', - name: 'Filter group', - description: 'Multiple filter options', - code: { - react: ` setFilter('all')} /> + react: ` setFilter('all')} /> setFilter('active')} /> setFilter('pending')} /> setFilter('completed')} />`, - angular: ` - - -`, - webComponents: ` + angular: ` + + +`, + webComponents: ` `, }, }, { - id: 'with-error', - name: 'Error state', - description: 'Filter chip showing error', + id: "with-secondary-text", + name: "With secondary text", + description: "Filter chip with category label", + code: { + react: ` +`, + angular: ` +`, + webComponents: ` +`, + }, + }, + { + id: "with-icon", + name: "With leading icon", + description: "Filter chip with icon", + code: { + react: ` +`, + angular: ` +`, + webComponents: ` +`, + }, + }, + { + id: "with-error", + name: "Error state", + description: "Filter chip showing error", code: { react: ``, angular: ``, diff --git a/docs/src/data/configurations/focus-trap.ts b/docs/src/data/configurations/focus-trap.ts deleted file mode 100644 index 9bd55acfce..0000000000 --- a/docs/src/data/configurations/focus-trap.ts +++ /dev/null @@ -1,50 +0,0 @@ -/** - * FocusTrap Component Configurations - * - * FocusTrap keeps focus within a container. - */ - -import type { ComponentConfigurations } from './types'; - -export const focusTrapConfigurations: ComponentConfigurations = { - componentSlug: 'focus-trap', - componentName: 'Focus trap', - defaultConfigurationId: 'basic', - - configurations: [ - { - id: 'basic', - name: 'Basic focus trap', - description: 'Container that traps keyboard focus', - code: { - react: ` - - - - - - - Submit -`, - angular: ` - - - - - - - Submit -`, - webComponents: ` - - - - - - - Submit -`, - }, - }, - ], -}; diff --git a/docs/src/data/configurations/footer-meta-section.ts b/docs/src/data/configurations/footer-meta-section.ts index 621c6ea425..4b0fd55f2c 100644 --- a/docs/src/data/configurations/footer-meta-section.ts +++ b/docs/src/data/configurations/footer-meta-section.ts @@ -4,18 +4,18 @@ * FooterMetaSection is a child component of Footer. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const footerMetaSectionConfigurations: ComponentConfigurations = { - componentSlug: 'footer-meta-section', - componentName: 'Footer meta section', - defaultConfigurationId: 'basic', + componentSlug: "footer-meta-section", + componentName: "Footer meta section", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic footer meta section', - description: 'Meta links section within Footer', + id: "basic", + name: "Basic footer meta section", + description: "Meta links section within Footer", code: { react: ` @@ -24,20 +24,20 @@ export const footerMetaSectionConfigurations: ComponentConfigurations = { Accessibility `, - angular: ` - + angular: ` + Privacy Terms of use Accessibility - -`, - webComponents: ` - + +`, + webComponents: ` + Privacy Terms of use Accessibility - -`, + +`, }, }, ], diff --git a/docs/src/data/configurations/footer-nav-section.ts b/docs/src/data/configurations/footer-nav-section.ts index 4de7933589..cd8df08434 100644 --- a/docs/src/data/configurations/footer-nav-section.ts +++ b/docs/src/data/configurations/footer-nav-section.ts @@ -4,18 +4,18 @@ * FooterNavSection is a child component of Footer. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const footerNavSectionConfigurations: ComponentConfigurations = { - componentSlug: 'footer-nav-section', - componentName: 'Footer nav section', - defaultConfigurationId: 'basic', + componentSlug: "footer-nav-section", + componentName: "Footer nav section", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic footer nav section', - description: 'Navigation section within Footer', + id: "basic", + name: "Basic footer nav section", + description: "Navigation section within Footer", code: { react: ` @@ -24,20 +24,66 @@ export const footerNavSectionConfigurations: ComponentConfigurations = { Check status `, - angular: ` - + angular: ` + Apply online Renew Check status - -`, - webComponents: ` - + +`, + webComponents: ` + Apply online Renew Check status - -`, + +`, + }, + }, + { + id: "multi-column", + name: "Multi-column layout", + description: "Navigation links in multiple columns", + code: { + react: ` + + Health + Education + Jobs and employment + Housing + Transportation + Environment + Business + Taxes and finance + Legal services + +`, + angular: ` + + Health + Education + Jobs and employment + Housing + Transportation + Environment + Business + Taxes and finance + Legal services + +`, + webComponents: ` + + Health + Education + Jobs and employment + Housing + Transportation + Environment + Business + Taxes and finance + Legal services + +`, }, }, ], diff --git a/docs/src/data/configurations/footer.ts b/docs/src/data/configurations/footer.ts index 6132d344c0..746c430b8c 100644 --- a/docs/src/data/configurations/footer.ts +++ b/docs/src/data/configurations/footer.ts @@ -4,28 +4,56 @@ * Footer provides page-level footer navigation. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const footerConfigurations: ComponentConfigurations = { - componentSlug: 'footer', - componentName: 'Footer', - defaultConfigurationId: 'basic', + componentSlug: "footer", + componentName: "Footer", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic footer', - description: 'Simple page footer', + id: "basic", + name: "Basic footer", + description: "Simple page footer", code: { react: ``, - angular: ``, - webComponents: ``, + angular: ``, + webComponents: ``, }, }, { - id: 'with-nav-sections', - name: 'With navigation', - description: 'Footer with navigation sections', + id: "with-meta", + name: "With meta section", + description: "Footer with copyright and links", + code: { + react: ` + + Privacy + Terms of use + Accessibility + +`, + angular: ` + + Privacy + Terms of use + Accessibility + +`, + webComponents: ` + + Privacy + Terms of use + Accessibility + +`, + }, + }, + { + id: "with-nav-sections", + name: "With navigation", + description: "Footer with navigation sections", code: { react: ` @@ -38,56 +66,83 @@ export const footerConfigurations: ComponentConfigurations = { Feedback `, - angular: ` - + angular: ` + Apply online Renew Check status - - + + Help center Feedback - -`, - webComponents: ` - + +`, + webComponents: ` + Apply online Renew Check status - - + + Help center Feedback - -`, + +`, }, }, { - id: 'with-meta', - name: 'With meta section', - description: 'Footer with copyright and links', + id: "full", + name: "With meta and nav sections", + description: "Footer with navigation and meta sections", code: { react: ` + + Apply online + Renew + Check status + + + Help center + Feedback + Privacy Terms of use Accessibility `, - angular: ` - + angular: ` + + Apply online + Renew + Check status + + + Help center + Feedback + + Privacy Terms of use Accessibility - -`, - webComponents: ` - + +`, + webComponents: ` + + Apply online + Renew + Check status + + + Help center + Feedback + + Privacy Terms of use Accessibility - -`, + +`, }, }, ], diff --git a/docs/src/data/configurations/form-item.ts b/docs/src/data/configurations/form-item.ts index 9517aa3693..98a62a4db0 100644 --- a/docs/src/data/configurations/form-item.ts +++ b/docs/src/data/configurations/form-item.ts @@ -5,18 +5,18 @@ * for form inputs like Input, TextArea, Dropdown, etc. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const formItemConfigurations: ComponentConfigurations = { - componentSlug: 'form-item', - componentName: 'Form item', - defaultConfigurationId: 'basic', + componentSlug: "form-item", + componentName: "Form item", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic example', - description: 'Form item with label wrapping an input', + id: "basic", + name: "Basic example", + description: "Form item with label wrapping an input", code: { react: ` @@ -30,9 +30,9 @@ export const formItemConfigurations: ComponentConfigurations = { }, }, { - id: 'with-help-text', - name: 'With help text', - description: 'Form item with additional guidance', + id: "with-help-text", + name: "With help text", + description: "Form item with additional guidance", code: { react: ` @@ -40,15 +40,15 @@ export const formItemConfigurations: ComponentConfigurations = { angular: ` `, - webComponents: ` + webComponents: ` `, }, }, { - id: 'required', - name: 'Required field', - description: 'Form item marked as required', + id: "required", + name: "Required field", + description: "Form item marked as required", code: { react: ` @@ -62,9 +62,9 @@ export const formItemConfigurations: ComponentConfigurations = { }, }, { - id: 'optional', - name: 'Optional field', - description: 'Form item marked as optional', + id: "optional", + name: "Optional field", + description: "Form item marked as optional", code: { react: ` @@ -78,9 +78,9 @@ export const formItemConfigurations: ComponentConfigurations = { }, }, { - id: 'with-error', - name: 'With error', - description: 'Form item showing validation error', + id: "with-error", + name: "With error", + description: "Form item showing validation error", code: { react: ` @@ -94,9 +94,9 @@ export const formItemConfigurations: ComponentConfigurations = { }, }, { - id: 'label-sizes', - name: 'Label sizes', - description: 'Different label size options', + id: "label-sizes", + name: "Label sizes", + description: "Different label size options", code: { react: ` diff --git a/docs/src/data/configurations/form-step.ts b/docs/src/data/configurations/form-step.ts index a3dd2c1d4f..fc45605db9 100644 --- a/docs/src/data/configurations/form-step.ts +++ b/docs/src/data/configurations/form-step.ts @@ -4,18 +4,18 @@ * FormStep is a child component of FormStepper. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const formStepConfigurations: ComponentConfigurations = { - componentSlug: 'form-step', - componentName: 'Form step', - defaultConfigurationId: 'basic', + componentSlug: "form-step", + componentName: "Form step", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic form step', - description: 'Single step within FormStepper', + id: "basic", + name: "Basic form step", + description: "Single step within FormStepper", code: { react: ` diff --git a/docs/src/data/configurations/form-stepper.ts b/docs/src/data/configurations/form-stepper.ts index 281e640db7..5ac1780127 100644 --- a/docs/src/data/configurations/form-stepper.ts +++ b/docs/src/data/configurations/form-stepper.ts @@ -4,18 +4,18 @@ * Form stepper shows progress through multi-step forms. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const formStepperConfigurations: ComponentConfigurations = { - componentSlug: 'form-stepper', - componentName: 'Form stepper', - defaultConfigurationId: 'basic', + componentSlug: "form-stepper", + componentName: "Form stepper", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic form stepper', - description: 'Simple step indicator', + id: "basic", + name: "Basic form stepper", + description: "Simple step indicator", code: { react: ` @@ -35,9 +35,9 @@ export const formStepperConfigurations: ComponentConfigurations = { }, }, { - id: 'middle-step', - name: 'Middle step', - description: 'Stepper showing progress midway', + id: "middle-step", + name: "Middle step", + description: "Stepper showing progress midway", code: { react: ` @@ -57,9 +57,9 @@ export const formStepperConfigurations: ComponentConfigurations = { }, }, { - id: 'completed', - name: 'All completed', - description: 'Stepper at final step', + id: "completed", + name: "All completed", + description: "Stepper at final step", code: { react: ` diff --git a/docs/src/data/configurations/form.ts b/docs/src/data/configurations/form.ts deleted file mode 100644 index 04fc85c3bd..0000000000 --- a/docs/src/data/configurations/form.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Form Component Configurations - * - * Form wraps form elements with proper structure. - */ - -import type { ComponentConfigurations } from './types'; - -export const formConfigurations: ComponentConfigurations = { - componentSlug: 'form', - componentName: 'Form', - defaultConfigurationId: 'basic', - - configurations: [ - { - id: 'basic', - name: 'Basic form', - description: 'Simple form wrapper', - code: { - react: ` - - - - - - - - Submit - -`, - angular: ` - - - - - - - - Submit - -`, - webComponents: ` - - - - - - - - Submit - -`, - }, - }, - ], -}; diff --git a/docs/src/data/configurations/grid.ts b/docs/src/data/configurations/grid.ts index c5ffa3b1a0..1009077c71 100644 --- a/docs/src/data/configurations/grid.ts +++ b/docs/src/data/configurations/grid.ts @@ -4,18 +4,18 @@ * Grid creates responsive multi-column layouts. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const gridConfigurations: ComponentConfigurations = { - componentSlug: 'grid', - componentName: 'Grid', - defaultConfigurationId: 'basic', + componentSlug: "grid", + componentName: "Grid", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic grid', - description: 'Simple multi-column grid', + id: "basic", + name: "Basic grid", + description: "Simple multi-column grid", code: { react: ` Item 1 @@ -35,45 +35,78 @@ export const gridConfigurations: ComponentConfigurations = { }, }, { - id: 'gap-sizes', - name: 'Gap sizes', - description: 'Different spacing between items', + id: "gap-sizes", + name: "Gap sizes", + description: "Different spacing between items", code: { - react: ` - Item 1 - Item 2 + react: `Extra small gap + + A + B + C + D - - Item 1 - Item 2 + +Medium gap + + A + B + C + D - - Item 1 - Item 2 + +Extra large gap + + A + B + C + D `, - angular: ` - Item 1 - Item 2 + angular: `Extra small gap + + A + B + C + D - - Item 1 - Item 2 + +Medium gap + + A + B + C + D - - Item 1 - Item 2 + +Extra large gap + + A + B + C + D `, - webComponents: ` - Item 1 - Item 2 + webComponents: `Extra small gap + + A + B + C + D - - Item 1 - Item 2 + +Medium gap + + A + B + C + D - - Item 1 - Item 2 + +Extra large gap + + A + B + C + D `, }, }, diff --git a/docs/src/data/configurations/hero-banner.ts b/docs/src/data/configurations/hero-banner.ts index ec622df4c4..27ba701929 100644 --- a/docs/src/data/configurations/hero-banner.ts +++ b/docs/src/data/configurations/hero-banner.ts @@ -4,28 +4,46 @@ * Hero banners display prominent page headers. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const heroBannerConfigurations: ComponentConfigurations = { - componentSlug: 'hero-banner', - componentName: 'Hero banner', - defaultConfigurationId: 'basic', + componentSlug: "hero-banner", + componentName: "Hero banner", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic hero banner', - description: 'Simple page header banner', + id: "basic", + name: "Basic hero banner", + description: "Hero banner with description and actions", code: { - react: ``, - angular: ``, - webComponents: ``, + react: ` +

      Apply for government services quickly and easily online.

      + + Get started + Learn more + +
      `, + angular: ` +

      Apply for government services quickly and easily online.

      + + Get started + Learn more + +
      `, + webComponents: ` +

      Apply for government services quickly and easily online.

      + + Get started + Learn more + +
      `, }, }, { - id: 'with-background', - name: 'With background image', - description: 'Hero banner with image background', + id: "with-background", + name: "With background image", + description: "Hero banner with image background", code: { react: ` -

      Apply for government services quickly and easily online.

      - - Get started - Learn more - + react: ` +

      Find resources and support in your community.

      `, - angular: ` -

      Apply for government services quickly and easily online.

      - - Get started - Learn more - + angular: ` +

      Find resources and support in your community.

      `, - webComponents: ` -

      Apply for government services quickly and easily online.

      - - Get started - Learn more - + webComponents: ` +

      Find resources and support in your community.

      `, }, }, { - id: 'min-height', - name: 'Custom height', - description: 'Hero banner with minimum height', + id: "min-height", + name: "Custom height", + description: "Hero banner with minimum height", code: { react: ``, angular: ``, @@ -23,66 +23,78 @@ export const iconButtonConfigurations: ComponentConfigurations = { }, }, { - id: 'common-actions', - name: 'Common actions', - description: 'Frequently used icon buttons', + id: "sizes", + name: "Sizes", + description: "All available icon button sizes", code: { - react: ` - - - - -`, - angular: ` - - - - -`, - webComponents: ` - - - - -`, - }, - }, - { - id: 'sizes', - name: 'Sizes', - description: 'Different icon button sizes', - code: { - react: ` + react: ` + + -`, - angular: ` + +`, + angular: ` + + -`, - webComponents: ` + +`, + webComponents: ` + + -`, + +`, }, }, { - id: 'variants', - name: 'Variants', - description: 'Different visual styles', + id: "colours", + name: "Colours", + description: "All visual styles", code: { react: ` -`, + +
      + +
      `, angular: ` -`, + +
      + +
      `, webComponents: ` -`, + +
      + +
      `, + }, + }, + { + id: "icon-theme", + name: "Icon theme", + description: "Outline and filled icon styles", + code: { + react: ` + + +`, + angular: ` + + +`, + webComponents: ` + + +`, }, }, { - id: 'disabled', - name: 'Disabled', - description: 'Icon button in disabled state', + id: "disabled", + name: "Disabled", + description: "Icon button in disabled state", code: { react: ``, angular: ``, diff --git a/docs/src/data/configurations/icon.ts b/docs/src/data/configurations/icon.ts index 074e099b9e..ac2d3c232e 100644 --- a/docs/src/data/configurations/icon.ts +++ b/docs/src/data/configurations/icon.ts @@ -2,109 +2,275 @@ * Icon Component Configurations * * Icons provide visual cues and enhance comprehension. + * Organized by the core icon set categories. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const iconConfigurations: ComponentConfigurations = { - componentSlug: 'icon', - componentName: 'Icon', - defaultConfigurationId: 'basic', + componentSlug: "icon", + componentName: "Icon", + defaultConfigurationId: "alert-messaging", configurations: [ { - id: 'basic', - name: 'Basic icon', - description: 'Simple icon display', + id: "alert-messaging", + name: "Alert and messaging", + description: "Icons for alerts, status, and messaging", code: { - react: ``, - angular: ``, - webComponents: ``, + react: ` + + + + +`, + angular: ` + + + + +`, + webComponents: ` + + + + +`, }, }, { - id: 'common-icons', - name: 'Common icons', - description: 'Frequently used icons', + id: "basic-icons", + name: "Basic", + description: "Core basic icons", code: { - react: ` - + react: ` + - - - -`, - angular: ` - + +`, + angular: ` + - - - -`, - webComponents: ` - + +`, + webComponents: ` + + +`, + }, + }, + { + id: "direction", + name: "Direction", + description: "Arrows, chevrons, and navigation icons", + code: { + react: ` + + + + + + + + + + + +`, + angular: ` + + + + + + + + + + + +`, + webComponents: ` + + + + + + + + + + + +`, + }, + }, + { + id: "interactions", + name: "Interactions", + description: "Icons for common user interactions", + code: { + react: ` + + + + + + + + + + + + + + + + + + +`, + angular: ` + + + + + + + + + + + + + + + + + + +`, + webComponents: ` + + + + + + + + + + + + + + + + + +`, + }, + }, + { + id: "accounts", + name: "Accounts", + description: "Icons for user accounts and communication", + code: { + react: ` + + +`, + angular: ` + + +`, + webComponents: ` - -`, + +`, }, }, { - id: 'sizes', - name: 'Sizes', - description: 'Different icon sizes (1-6)', + id: "sizes", + name: "Sizes", + description: "Named and numeric icon sizes", code: { - react: ` - - - - -`, - angular: ` - - - - -`, - webComponents: ` - - - - -`, + react: ` + + + + +`, + angular: ` + + + + +`, + webComponents: ` + + + + +`, }, }, { - id: 'themes', - name: 'Themes', - description: 'Outline and filled icon styles', + id: "themes", + name: "Themes", + description: "Outline and filled icon styles", code: { react: ` -`, + + + + + + + + +`, angular: ` -`, + + + + + + + + +`, webComponents: ` -`, + + + + + + + + +`, }, }, { - id: 'with-color', - name: 'With color', - description: 'Icons with custom colors', + id: "with-color", + name: "With color", + description: "Icons with custom colors", code: { - react: ` - -`, - angular: ` - -`, - webComponents: ` - -`, + react: ` + +`, + angular: ` + +`, + webComponents: ` + +`, }, }, ], diff --git a/docs/src/data/configurations/index.ts b/docs/src/data/configurations/index.ts index e35e0c46bb..d01d86eaa0 100644 --- a/docs/src/data/configurations/index.ts +++ b/docs/src/data/configurations/index.ts @@ -17,7 +17,6 @@ export { radioGroupConfigurations } from "./radio-group"; export { radioItemConfigurations } from "./radio-item"; export { textAreaConfigurations } from "./text-area"; export { formItemConfigurations } from "./form-item"; -export { formConfigurations } from "./form"; export { formStepperConfigurations } from "./form-stepper"; export { formStepConfigurations } from "./form-step"; export { datePickerConfigurations } from "./date-picker"; @@ -30,7 +29,6 @@ export { calloutConfigurations } from "./callout"; export { notificationConfigurations } from "./notification"; export { temporaryNotificationConfigurations } from "./temporary-notification"; export { badgeConfigurations } from "./badge"; -export { chipConfigurations } from "./chip"; export { filterChipConfigurations } from "./filter-chip"; export { tooltipConfigurations } from "./tooltip"; export { spinnerConfigurations } from "./spinner"; @@ -46,7 +44,6 @@ export { pageBlockConfigurations } from "./page-block"; export { pagesConfigurations } from "./pages"; export { dividerConfigurations } from "./divider"; export { spacerConfigurations } from "./spacer"; -export { scrollableConfigurations } from "./scrollable"; export { heroBannerConfigurations } from "./hero-banner"; // Navigation components @@ -64,14 +61,8 @@ export { micrositeHeaderConfigurations } from "./microsite-header"; export { footerConfigurations } from "./footer"; export { footerNavSectionConfigurations } from "./footer-nav-section"; export { footerMetaSectionConfigurations } from "./footer-meta-section"; -export { linkButtonConfigurations } from "./link-button"; // Display components -export { cardConfigurations } from "./card"; -export { cardGroupConfigurations } from "./card-group"; -export { cardContentConfigurations } from "./card-content"; -export { cardImageConfigurations } from "./card-image"; -export { cardActionsConfigurations } from "./card-actions"; export { tableConfigurations } from "./table"; export { tableSortHeaderConfigurations } from "./table-sort-header"; export { dataGridConfigurations } from "./data-grid"; @@ -88,7 +79,6 @@ export { iconButtonConfigurations } from "./icon-button"; export { buttonGroupConfigurations } from "./button-group"; export { linkConfigurations } from "./link"; export { textConfigurations } from "./text"; -export { focusTrapConfigurations } from "./focus-trap"; // Import all configurations for registry import type { ComponentConfigurations, ConfigurationRegistry } from "./types"; @@ -101,7 +91,6 @@ import { radioGroupConfigurations } from "./radio-group"; import { radioItemConfigurations } from "./radio-item"; import { textAreaConfigurations } from "./text-area"; import { formItemConfigurations } from "./form-item"; -import { formConfigurations } from "./form"; import { formStepperConfigurations } from "./form-stepper"; import { formStepConfigurations } from "./form-step"; import { datePickerConfigurations } from "./date-picker"; @@ -112,7 +101,6 @@ import { calloutConfigurations } from "./callout"; import { notificationConfigurations } from "./notification"; import { temporaryNotificationConfigurations } from "./temporary-notification"; import { badgeConfigurations } from "./badge"; -import { chipConfigurations } from "./chip"; import { filterChipConfigurations } from "./filter-chip"; import { tooltipConfigurations } from "./tooltip"; import { spinnerConfigurations } from "./spinner"; @@ -126,7 +114,6 @@ import { pageBlockConfigurations } from "./page-block"; import { pagesConfigurations } from "./pages"; import { dividerConfigurations } from "./divider"; import { spacerConfigurations } from "./spacer"; -import { scrollableConfigurations } from "./scrollable"; import { heroBannerConfigurations } from "./hero-banner"; import { tabsConfigurations } from "./tabs"; import { tabConfigurations } from "./tab"; @@ -142,12 +129,6 @@ import { micrositeHeaderConfigurations } from "./microsite-header"; import { footerConfigurations } from "./footer"; import { footerNavSectionConfigurations } from "./footer-nav-section"; import { footerMetaSectionConfigurations } from "./footer-meta-section"; -import { linkButtonConfigurations } from "./link-button"; -import { cardConfigurations } from "./card"; -import { cardGroupConfigurations } from "./card-group"; -import { cardContentConfigurations } from "./card-content"; -import { cardImageConfigurations } from "./card-image"; -import { cardActionsConfigurations } from "./card-actions"; import { tableConfigurations } from "./table"; import { tableSortHeaderConfigurations } from "./table-sort-header"; import { dataGridConfigurations } from "./data-grid"; @@ -162,7 +143,6 @@ import { iconButtonConfigurations } from "./icon-button"; import { buttonGroupConfigurations } from "./button-group"; import { linkConfigurations } from "./link"; import { textConfigurations } from "./text"; -import { focusTrapConfigurations } from "./focus-trap"; /** * Registry of all component configurations. @@ -179,7 +159,6 @@ export const configurationRegistry: ConfigurationRegistry = { "radio-item": radioItemConfigurations, "text-area": textAreaConfigurations, "form-item": formItemConfigurations, - form: formConfigurations, "form-stepper": formStepperConfigurations, "form-step": formStepConfigurations, "date-picker": datePickerConfigurations, @@ -192,7 +171,6 @@ export const configurationRegistry: ConfigurationRegistry = { notification: notificationConfigurations, "temporary-notification": temporaryNotificationConfigurations, badge: badgeConfigurations, - chip: chipConfigurations, "filter-chip": filterChipConfigurations, tooltip: tooltipConfigurations, spinner: spinnerConfigurations, @@ -208,7 +186,6 @@ export const configurationRegistry: ConfigurationRegistry = { pages: pagesConfigurations, divider: dividerConfigurations, spacer: spacerConfigurations, - scrollable: scrollableConfigurations, "hero-banner": heroBannerConfigurations, // Navigation components @@ -226,14 +203,8 @@ export const configurationRegistry: ConfigurationRegistry = { footer: footerConfigurations, "footer-nav-section": footerNavSectionConfigurations, "footer-meta-section": footerMetaSectionConfigurations, - "link-button": linkButtonConfigurations, // Display components - card: cardConfigurations, - "card-group": cardGroupConfigurations, - "card-content": cardContentConfigurations, - "card-image": cardImageConfigurations, - "card-actions": cardActionsConfigurations, table: tableConfigurations, "table-sort-header": tableSortHeaderConfigurations, "data-grid": dataGridConfigurations, @@ -250,7 +221,6 @@ export const configurationRegistry: ConfigurationRegistry = { "button-group": buttonGroupConfigurations, link: linkConfigurations, text: textConfigurations, - "focus-trap": focusTrapConfigurations, }; /** diff --git a/docs/src/data/configurations/input.ts b/docs/src/data/configurations/input.ts index 95a61d7eec..0963604f15 100644 --- a/docs/src/data/configurations/input.ts +++ b/docs/src/data/configurations/input.ts @@ -5,108 +5,105 @@ * Note: Input must ALWAYS be wrapped in FormItem for proper labeling. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const inputConfigurations: ComponentConfigurations = { - componentSlug: 'input', - componentName: 'Input', - defaultConfigurationId: 'basic', + componentSlug: "input", + componentName: "Input", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic example', - description: 'Text input wrapped in FormItem with label', + id: "basic", + name: "Basic example", + description: "Text input wrapped in FormItem with label", code: { react: ` - + `, angular: ` - + `, webComponents: ` - + `, }, }, { - id: 'types', - name: 'Input types', - description: 'Different input types for various data formats', + id: "with-icons", + name: "With icons", + description: "Inputs with leading or trailing icons", code: { - react: ` - - - - - - - + react: ` + - - + + `, - angular: ` - - - - - - - + angular: ` + - - + + `, - webComponents: ` - - - - - - - + webComponents: ` + - - + + `, }, }, { - id: 'with-icons', - name: 'With icons', - description: 'Inputs with leading or trailing icons', + id: "clearable", + name: "Clearable", + description: "Input with a clickable trailing icon to clear the field", code: { react: ` - - - - + setValue("")} + onChange={(e) => setValue(e.value)} + /> `, angular: ` - - - - + + `, webComponents: ` - + + - - -`, +`, }, }, { - id: 'fixed-widths', - name: 'Fixed widths', - description: 'Inputs sized for specific data types', + id: "known-widths", + name: "Known widths", + description: "Inputs sized for specific data types", code: { react: ` - + @@ -115,7 +112,7 @@ export const inputConfigurations: ComponentConfigurations = { - + @@ -124,7 +121,7 @@ export const inputConfigurations: ComponentConfigurations = {
      - + @@ -132,9 +129,9 @@ export const inputConfigurations: ComponentConfigurations = { }, }, { - id: 'leading-trailing-content', - name: 'With leading or trailing content', - description: 'Inputs with text content before or after the input field', + id: "leading-trailing-content", + name: "With leading or trailing content", + description: "Inputs with text content before or after the input field", code: { react: ` @@ -143,50 +140,146 @@ export const inputConfigurations: ComponentConfigurations = { `, angular: ` - + +
      $
      +
      - + +
      kg
      +
      `, webComponents: ` - + +
      $
      +
      - + +
      kg
      +
      `, }, }, { - id: 'states', - name: 'States', - description: 'Disabled, readonly, and error states', + id: "sizes", + name: "Sizes", + description: "Default and compact size variants", + code: { + react: ` + + + + +`, + angular: ` + + + + +`, + webComponents: ` + + + + +`, + }, + }, + { + id: "right-aligned", + name: "Right-aligned text", + description: "Text aligned to the right for numeric values", + code: { + react: ` + +`, + angular: ` + +
      CAD
      +
      +
      `, + webComponents: ` + +
      CAD
      +
      +
      `, + }, + }, + { + id: "states", + name: "States", + description: "Disabled, readonly, and error states", code: { react: ` - + - + - + `, angular: ` - + - + - + `, webComponents: ` - + - + - + +`, + }, + }, + { + id: "types", + name: "Input types", + description: "Different input types for various data formats", + code: { + react: ` + + + + + + + + + + +`, + angular: ` + + + + + + + + + + +`, + webComponents: ` + + + + + + + + + + `, }, }, diff --git a/docs/src/data/configurations/linear-progress.ts b/docs/src/data/configurations/linear-progress.ts index 43bd718ed5..00e47c5f3c 100644 --- a/docs/src/data/configurations/linear-progress.ts +++ b/docs/src/data/configurations/linear-progress.ts @@ -2,30 +2,31 @@ * LinearProgress Component Configurations * * Linear progress bars show completion status. + * Note: WC attribute for percentVisibility is "percent-visibility" (explicitly mapped in Svelte options). */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const linearProgressConfigurations: ComponentConfigurations = { - componentSlug: 'linear-progress', - componentName: 'Linear progress', - defaultConfigurationId: 'basic', + componentSlug: "linear-progress", + componentName: "Linear progress", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic progress', - description: 'Simple linear progress bar', + id: "basic", + name: "Basic progress", + description: "Simple linear progress bar", code: { - react: ``, - angular: ``, - webComponents: ``, + react: ``, + angular: ``, + webComponents: ``, }, }, { - id: 'progress-levels', - name: 'Progress levels', - description: 'Different completion percentages', + id: "progress-levels", + name: "Progress levels", + description: "Different completion percentages", code: { react: ` @@ -45,23 +46,23 @@ export const linearProgressConfigurations: ComponentConfigurations = { }, }, { - id: 'with-label', - name: 'With label', - description: 'Progress bar showing percentage', + id: "indeterminate", + name: "Indeterminate", + description: "Loading animation when progress is unknown", code: { - react: ``, - angular: ``, - webComponents: ``, + react: ``, + angular: ``, + webComponents: ``, }, }, { - id: 'variants', - name: 'Variants', - description: 'Different visual styles', + id: "percent-visibility", + name: "With percentage", + description: "Progress bar showing the percentage text", code: { - react: ``, - angular: ``, - webComponents: ``, + react: ``, + angular: ``, + webComponents: ``, }, }, ], diff --git a/docs/src/data/configurations/link-button.ts b/docs/src/data/configurations/link-button.ts deleted file mode 100644 index 31522c84c8..0000000000 --- a/docs/src/data/configurations/link-button.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * LinkButton Component Configurations - * - * LinkButton provides button-styled anchor elements. - */ - -import type { ComponentConfigurations } from './types'; - -export const linkButtonConfigurations: ComponentConfigurations = { - componentSlug: 'link-button', - componentName: 'Link button', - defaultConfigurationId: 'basic', - - configurations: [ - { - id: 'basic', - name: 'Basic link button', - description: 'Anchor styled as button', - code: { - react: `Apply now`, - angular: `Apply now`, - webComponents: `Apply now`, - }, - }, - { - id: 'types', - name: 'Button types', - description: 'Different visual styles', - code: { - react: `Primary -Secondary -Tertiary`, - angular: `Primary -Secondary -Tertiary`, - webComponents: `Primary -Secondary -Tertiary`, - }, - }, - { - id: 'with-icons', - name: 'With icons', - description: 'Link button with icons', - code: { - react: `Download -Continue`, - angular: `Download -Continue`, - webComponents: `Download -Continue`, - }, - }, - { - id: 'external', - name: 'External link', - description: 'Link button opening new tab', - code: { - react: `Visit Alberta.ca`, - angular: `Visit Alberta.ca`, - webComponents: `Visit Alberta.ca`, - }, - }, - ], -}; diff --git a/docs/src/data/configurations/link.ts b/docs/src/data/configurations/link.ts index 7e9e758e64..750ee57d27 100644 --- a/docs/src/data/configurations/link.ts +++ b/docs/src/data/configurations/link.ts @@ -4,86 +4,104 @@ * Links navigate users to other pages or resources. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const linkConfigurations: ComponentConfigurations = { - componentSlug: 'link', - componentName: 'Link', - defaultConfigurationId: 'basic', + componentSlug: "link", + componentName: "Link", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic link', - description: 'Simple text link', + id: "basic", + name: "Basic link", + description: "Simple text link", code: { - react: `Learn more about our services`, - angular: `Learn more about our services`, - webComponents: `Learn more about our services`, + react: `Learn more about our services`, + angular: `Learn more about our services`, + webComponents: `Learn more about our services`, }, }, { - id: 'external', - name: 'External link', - description: 'Link to external website (icon added automatically)', + id: "external", + name: "External link", + description: "Link with trailing icon for external destination", code: { - react: ` - Visit Alberta.ca + react: ` + Visit Alberta.ca `, - angular: ` - Visit Alberta.ca + angular: ` + Visit Alberta.ca `, - webComponents: ` - Visit Alberta.ca + webComponents: ` + Visit Alberta.ca `, }, }, { - id: 'inverted', - name: 'Inverted', - description: 'Link for dark backgrounds', + id: "colors", + name: "Colors", + description: "Interactive, dark, and light color variants", code: { - react: `
      - Contact us + react: ` +
      + Dark +
      +
      + Light
      `, - angular: `
      - Contact us + angular: ` +
      + Dark +
      +
      + Light
      `, - webComponents: `
      - Contact us + webComponents: ` +
      + Dark +
      +
      + Light
      `, }, }, { - id: 'with-leading-icon', - name: 'With leading icon', - description: 'Link with an icon before text', + id: "sizes", + name: "Sizes", + description: "All available link sizes", code: { - react: ` - Download form -`, - angular: ` - Download form -`, - webComponents: ` - Download form -`, + react: ` + + +`, + angular: ` + + +`, + webComponents: ` + + +`, }, }, { - id: 'with-trailing-icon', - name: 'With trailing icon', - description: 'Link with an icon after text', + id: "with-icons", + name: "With icons", + description: "Links with leading or trailing icons", code: { - react: ` - Continue to next step -`, - angular: ` - Continue to next step -`, - webComponents: ` - Continue to next step -`, + react: ` +`, + angular: ` +`, + webComponents: ` +`, }, }, ], diff --git a/docs/src/data/configurations/menu-button.ts b/docs/src/data/configurations/menu-button.ts index 3452046811..d36cc59e00 100644 --- a/docs/src/data/configurations/menu-button.ts +++ b/docs/src/data/configurations/menu-button.ts @@ -4,18 +4,18 @@ * Menu buttons show dropdown menus on click. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const menuButtonConfigurations: ComponentConfigurations = { - componentSlug: 'menu-button', - componentName: 'Menu button', - defaultConfigurationId: 'basic', + componentSlug: "menu-button", + componentName: "Menu button", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic menu button', - description: 'Button with dropdown menu', + id: "basic", + name: "Basic menu button", + description: "Button with dropdown menu", code: { react: ` console.log(detail.action)}> @@ -27,7 +27,7 @@ export const menuButtonConfigurations: ComponentConfigurations = { `, - webComponents: ` + webComponents: ` @@ -35,9 +35,52 @@ export const menuButtonConfigurations: ComponentConfigurations = { }, }, { - id: 'icon-only', - name: 'Icon-only menu button', - description: 'Menu with icon button (no text)', + id: "types", + name: "Types", + description: "Primary, secondary, and tertiary menu button styles", + code: { + react: ` console.log(detail.action)}> + + + + console.log(detail.action)}> + + + + console.log(detail.action)}> + + +`, + angular: ` + + + + + + + + + + +`, + webComponents: ` + + + + + + + + + + +`, + }, + }, + { + id: "icon-only", + name: "Icon-only menu button", + description: "Menu with icon button (no text)", code: { react: ` `, - webComponents: ` @@ -68,9 +111,9 @@ export const menuButtonConfigurations: ComponentConfigurations = { }, }, { - id: 'with-icons', - name: 'Items with icons', - description: 'Menu items with leading icons', + id: "with-icons", + name: "Items with icons", + description: "Menu items with leading icons", code: { react: ` console.log(detail.action)}> @@ -82,7 +125,7 @@ export const menuButtonConfigurations: ComponentConfigurations = { `, - webComponents: ` + webComponents: ` @@ -90,19 +133,74 @@ export const menuButtonConfigurations: ComponentConfigurations = { }, }, { - id: 'destructive', - name: 'Destructive variant', - description: 'Menu button with destructive styling for dangerous actions', + id: "sizes", + name: "Sizes", + description: "Normal and compact menu button sizes", + code: { + react: ` console.log(detail.action)}> + + + + console.log(detail.action)}> + + +`, + angular: ` + + + + + + +`, + webComponents: ` + + + + + + +`, + }, + }, + { + id: "destructive", + name: "Destructive variant", + description: "Destructive menu buttons across all button types", code: { - react: ` console.log(detail.action)}> + react: ` console.log(detail.action)}> + + + + console.log(detail.action)}> + + + + console.log(detail.action)}> `, - angular: ` + angular: ` + + + + + + + + `, - webComponents: ` + webComponents: ` + + + + + + + + `, diff --git a/docs/src/data/configurations/microsite-header.ts b/docs/src/data/configurations/microsite-header.ts index c1bb70c84b..2a4fdb50bc 100644 --- a/docs/src/data/configurations/microsite-header.ts +++ b/docs/src/data/configurations/microsite-header.ts @@ -4,18 +4,18 @@ * Microsite header for smaller government sites. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const micrositeHeaderConfigurations: ComponentConfigurations = { - componentSlug: 'microsite-header', - componentName: 'Microsite header', - defaultConfigurationId: 'basic', + componentSlug: "microsite-header", + componentName: "Microsite header", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic microsite header', - description: 'Simple microsite navigation', + id: "basic", + name: "Basic microsite header", + description: "Simple microsite navigation", code: { react: ``, angular: ``, @@ -23,9 +23,9 @@ export const micrositeHeaderConfigurations: ComponentConfigurations = { }, }, { - id: 'types', - name: 'Header types', - description: 'Different microsite types', + id: "types", + name: "Header types", + description: "Different microsite types", code: { react: ` @@ -39,9 +39,9 @@ export const micrositeHeaderConfigurations: ComponentConfigurations = { }, }, { - id: 'with-version', - name: 'With version', - description: 'Header showing version number', + id: "with-version", + name: "With version", + description: "Header showing version number", code: { react: ``, angular: ``, @@ -49,9 +49,9 @@ export const micrositeHeaderConfigurations: ComponentConfigurations = { }, }, { - id: 'with-feedback', - name: 'With feedback link', - description: 'Header with feedback URL', + id: "with-feedback", + name: "With feedback link", + description: "Header with feedback URL", code: { react: ``, angular: ``, diff --git a/docs/src/data/configurations/modal.ts b/docs/src/data/configurations/modal.ts index 6aa63d305e..e5f569d159 100644 --- a/docs/src/data/configurations/modal.ts +++ b/docs/src/data/configurations/modal.ts @@ -4,7 +4,7 @@ * Modals display content in a layer above the page. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; const modalScript = ` const modal = document.getElementById('demo-modal'); @@ -23,32 +23,32 @@ modal.querySelectorAll('goa-button').forEach(btn => { `; export const modalConfigurations: ComponentConfigurations = { - componentSlug: 'modal', - componentName: 'Modal', - defaultConfigurationId: 'basic', + componentSlug: "modal", + componentName: "Modal", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic modal', - description: 'Simple modal with heading and content', + id: "basic", + name: "Basic modal", + description: "Simple modal with heading and content", code: { - react: ` + react: `

      Are you sure you want to proceed with this action?

      Cancel Confirm
      `, - angular: ` + angular: `

      Are you sure you want to proceed with this action?

      - Cancel - Confirm + Cancel + Confirm
      `, webComponents: `Open modal - +

      Are you sure you want to proceed with this action?

      Cancel @@ -59,68 +59,149 @@ export const modalConfigurations: ComponentConfigurations = { }, }, { - id: 'with-transition', - name: 'With transition', - description: 'Modal with animated opening/closing', + id: "dismissable", + name: "Dismissable", + description: "Modal with close button and backdrop dismiss", code: { - react: ` -

      This modal animates when opening and closing.

      + react: ` +

      You can close this modal with the X button or by clicking the backdrop.

      `, - angular: ` -

      This modal animates when opening and closing.

      + angular: ` +

      You can close this modal with the X button or by clicking the backdrop.

      `, webComponents: `Open modal - -

      This modal animates when opening and closing.

      + +

      You can close this modal with the X button or by clicking the backdrop.

      `, }, }, { - id: 'custom-width', - name: 'Custom width', - description: 'Modal with specified maximum width', + id: "destructive-action", + name: "Destructive action", + description: "Confirmation modal for destructive actions", code: { - react: ` -

      This modal has a wider maximum width for more content.

      + react: ` +

      This action cannot be undone. The item will be permanently removed.

      + + Cancel + Delete +
      `, - angular: ` -

      This modal has a wider maximum width for more content.

      + angular: ` +

      This action cannot be undone. The item will be permanently removed.

      + + Cancel + Delete +
      `, webComponents: `Open modal - -

      This modal has a wider maximum width for more content.

      + +

      This action cannot be undone. The item will be permanently removed.

      + + Cancel + Delete +
      `, }, }, { - id: 'destructive-action', - name: 'Destructive action', - description: 'Confirmation modal for destructive actions', + id: "callout-important", + name: "Important callout", + description: "Modal with important callout header", code: { - react: ` -

      This action cannot be undone. The item will be permanently removed.

      + react: ` +

      You will be logged out in 5 minutes due to inactivity.

      - Cancel - Delete + Stay logged in
      `, - angular: ` -

      This action cannot be undone. The item will be permanently removed.

      + angular: ` +

      You will be logged out in 5 minutes due to inactivity.

      - Cancel - Delete + Stay logged in
      `, webComponents: `Open modal - -

      This action cannot be undone. The item will be permanently removed.

      + +

      You will be logged out in 5 minutes due to inactivity.

      - Cancel - Delete + Stay logged in
      +`, + }, + }, + { + id: "callout-information", + name: "Information callout", + description: "Modal with information callout header", + code: { + react: ` +

      We have updated the application with new features. Review the changes to get started.

      +
      `, + angular: ` +

      We have updated the application with new features. Review the changes to get started.

      +
      `, + webComponents: `Open modal + +

      We have updated the application with new features. Review the changes to get started.

      +
      +`, + }, + }, + { + id: "callout-success", + name: "Success callout", + description: "Modal with success callout header", + code: { + react: ` +

      Your application has been successfully submitted. You will receive a confirmation email shortly.

      +
      `, + angular: ` +

      Your application has been successfully submitted. You will receive a confirmation email shortly.

      +
      `, + webComponents: `Open modal + +

      Your application has been successfully submitted. You will receive a confirmation email shortly.

      +
      +`, + }, + }, + { + id: "callout-event", + name: "Event callout", + description: "Modal with event callout header", + code: { + react: ` +

      The system will be unavailable on March 28 from 10:00 PM to 2:00 AM for scheduled maintenance.

      +
      `, + angular: ` +

      The system will be unavailable on March 28 from 10:00 PM to 2:00 AM for scheduled maintenance.

      +
      `, + webComponents: `Open modal + +

      The system will be unavailable on March 28 from 10:00 PM to 2:00 AM for scheduled maintenance.

      +
      +`, + }, + }, + { + id: "custom-width", + name: "Custom width", + description: "Modal with specified maximum width", + code: { + react: ` +

      This modal has a wider maximum width for more content.

      +
      `, + angular: ` +

      This modal has a wider maximum width for more content.

      +
      `, + webComponents: `Open modal + +

      This modal has a wider maximum width for more content.

      +
      `, }, }, diff --git a/docs/src/data/configurations/notification.ts b/docs/src/data/configurations/notification.ts index 1bd0c2ea3f..ed593a2033 100644 --- a/docs/src/data/configurations/notification.ts +++ b/docs/src/data/configurations/notification.ts @@ -2,20 +2,21 @@ * Notification Component Configurations * * Notifications display important messages at the page level. + * Note: Notification does not have margin props. Use wrapper elements for spacing. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const notificationConfigurations: ComponentConfigurations = { - componentSlug: 'notification', - componentName: 'Notification', - defaultConfigurationId: 'basic', + componentSlug: "notification", + componentName: "Notification", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Information notification', - description: 'Default informational notification', + id: "basic", + name: "Information notification", + description: "Default informational notification", code: { react: ` Your application has been received and is being processed. @@ -29,77 +30,110 @@ export const notificationConfigurations: ComponentConfigurations = { }, }, { - id: 'types', - name: 'Notification types', - description: 'Different notification types for various contexts', + id: "types", + name: "Notification types", + description: "Different notification types for various contexts", code: { - react: ` - Information: General updates for the user. - - - Important: Action may be required. - + react: `
      + + Information: General updates for the user. + +
      +
      + + Important: Action may be required. + +
      Emergency: Critical issue requiring attention. - - - Event: Upcoming deadline or scheduled event. `, - angular: ` - Information: General updates for the user. - - - Important: Action may be required. - + angular: `
      + + Information: General updates for the user. + +
      +
      + + Important: Action may be required. + +
      Emergency: Critical issue requiring attention. - - - Event: Upcoming deadline or scheduled event. `, - webComponents: ` - Information: General updates for the user. - - - Important: Action may be required. - + webComponents: `
      + + Information: General updates for the user. + +
      +
      + + Important: Action may be required. + +
      Emergency: Critical issue requiring attention. - - - Event: Upcoming deadline or scheduled event. `, }, }, { - id: 'dismissable', - name: 'Dismissable', - description: 'Notification that can be closed', + id: "emphasis", + name: "Emphasis levels", + description: "High and low visual prominence", code: { - react: ` setVisible(false)}> - This notification can be dismissed by clicking the close button. + react: `
      + + High emphasis: Full background for maximum visibility. + +
      + + Low emphasis: Minimal styling for less prominent messaging. `, - angular: ` - This notification can be dismissed by clicking the close button. + angular: `
      + + High emphasis: Full background for maximum visibility. + +
      + + Low emphasis: Minimal styling for less prominent messaging. `, - webComponents: ` - This notification can be dismissed by clicking the close button. + webComponents: `
      + + High emphasis: Full background for maximum visibility. + +
      + + Low emphasis: Minimal styling for less prominent messaging. `, }, }, { - id: 'with-max-width', - name: 'With max width', - description: 'Notification with constrained width', + id: "compact", + name: "Compact", + description: "Reduced padding for tighter layouts", code: { - react: ` - This notification has a maximum width for narrower layouts. + react: `
      + + Standard notification with default padding. + +
      + + Compact notification with reduced padding. `, - angular: ` - This notification has a maximum width for narrower layouts. + angular: `
      + + Standard notification with default padding. + +
      + + Compact notification with reduced padding. `, - webComponents: ` - This notification has a maximum width for narrower layouts. + webComponents: `
      + + Standard notification with default padding. + +
      + + Compact notification with reduced padding. `, }, }, diff --git a/docs/src/data/configurations/page-block.ts b/docs/src/data/configurations/page-block.ts index db471d8bee..b2753c0b1e 100644 --- a/docs/src/data/configurations/page-block.ts +++ b/docs/src/data/configurations/page-block.ts @@ -4,18 +4,18 @@ * PageBlock provides consistent page layout structure. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const pageBlockConfigurations: ComponentConfigurations = { - componentSlug: 'page-block', - componentName: 'Page block', - defaultConfigurationId: 'basic', + componentSlug: "page-block", + componentName: "Page block", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic page block', - description: 'Standard page content wrapper', + id: "basic", + name: "Basic page block", + description: "Standard page content wrapper", code: { react: `

      Page Title

      @@ -32,27 +32,27 @@ export const pageBlockConfigurations: ComponentConfigurations = { }, }, { - id: 'width-options', - name: 'Width options', - description: 'Different content widths', + id: "width-options", + name: "Width options", + description: "Full width and constrained content", code: { react: ` -

      Full width content

      + Full width content (default)
      - -

      Narrow width content

      + + Constrained to 760px `, angular: ` -

      Full width content

      + Full width content (default)
      - -

      Narrow width content

      + + Constrained to 760px `, webComponents: ` -

      Full width content

      + Full width content (default)
      - -

      Narrow width content

      + + Constrained to 760px `, }, }, diff --git a/docs/src/data/configurations/pages.ts b/docs/src/data/configurations/pages.ts index 39b30e4eba..d07354982c 100644 --- a/docs/src/data/configurations/pages.ts +++ b/docs/src/data/configurations/pages.ts @@ -4,35 +4,72 @@ * Pages provides page layout structure. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const pagesConfigurations: ComponentConfigurations = { - componentSlug: 'pages', - componentName: 'Pages', - defaultConfigurationId: 'basic', + componentSlug: "pages", + componentName: "Pages", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic pages layout', - description: 'Standard page structure', + id: "basic", + name: "Basic pages layout", + description: "Standard page structure", code: { react: ` -

      Page Title

      -

      Main page content goes here.

      + Main page content goes here.
      `, angular: ` -

      Page Title

      -

      Main page content goes here.

      + Main page content goes here.
      `, webComponents: ` -

      Page Title

      -

      Main page content goes here.

      + Main page content goes here. +
      +
      `, + }, + }, + { + id: "multi-page", + name: "Multi-page switching", + description: "Multiple pages with current page control", + code: { + react: ` + + Page 1: Personal information + + + Page 2: Contact details (visible) + + + Page 3: Review and submit + +`, + angular: ` + + Page 1: Personal information + + + Page 2: Contact details (visible) + + + Page 3: Review and submit + +`, + webComponents: ` + + Page 1: Personal information + + + Page 2: Contact details (visible) + + + Page 3: Review and submit `, }, diff --git a/docs/src/data/configurations/pagination.ts b/docs/src/data/configurations/pagination.ts index e86f7a64f1..c713e553f9 100644 --- a/docs/src/data/configurations/pagination.ts +++ b/docs/src/data/configurations/pagination.ts @@ -4,32 +4,32 @@ * Pagination helps users navigate through multiple pages of content. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const paginationConfigurations: ComponentConfigurations = { - componentSlug: 'pagination', - componentName: 'Pagination', - defaultConfigurationId: 'basic', + componentSlug: "pagination", + componentName: "Pagination", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic pagination', - description: 'Simple pagination with page numbers', + id: "basic", + name: "Basic pagination", + description: "Simple pagination with page numbers", code: { react: ``, angular: ` + (onChange)="handlePageChange($event)"> `, - webComponents: ` @@ -37,69 +37,29 @@ export const paginationConfigurations: ComponentConfigurations = { }, }, { - id: 'with-variants', - name: 'Variants', - description: 'Different pagination styles', + id: "simple", + name: "Simple", + description: "Previous and next links only", code: { react: ` -`, angular: ` - - + variant="links-only" + (onChange)="handlePageChange($event)"> `, - webComponents: ` - - -`, - }, - }, - { - id: 'middle-page', - name: 'Middle page', - description: 'Pagination showing middle page selected', - code: { - react: ``, - angular: ` -`, - webComponents: ` `, }, }, diff --git a/docs/src/data/configurations/popover.ts b/docs/src/data/configurations/popover.ts index 2ec8f21835..ddb24f7734 100644 --- a/docs/src/data/configurations/popover.ts +++ b/docs/src/data/configurations/popover.ts @@ -4,123 +4,118 @@ * Popovers display content in a floating panel. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const popoverConfigurations: ComponentConfigurations = { - componentSlug: 'popover', - componentName: 'Popover', - defaultConfigurationId: 'basic', + componentSlug: "popover", + componentName: "Popover", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic popover', - description: 'Simple popover with content', + id: "basic", + name: "Basic popover", + description: "Simple popover with content", code: { - react: ` - Open popover -

      Popover content goes here. It can contain any content.

      + react: `Open popover}> + Popover content goes here. It can contain any content. `, - angular: ` - Open popover -

      Popover content goes here. It can contain any content.

      + angular: ` + + Open popover + + Popover content goes here. It can contain any content. `, webComponents: ` Open popover -

      Popover content goes here. It can contain any content.

      + Popover content goes here. It can contain any content.
      `, }, }, { - id: 'positions', - name: 'Positions', - description: 'Popover placement options', + id: "positions", + name: "Positions", + description: "Popover placement options", code: { - react: ` - Top -

      Content above the trigger.

      + react: `Above}> + Content positioned above the trigger. - - Bottom -

      Content below the trigger.

      +Below}> + Content positioned below the trigger. - - Left -

      Content to the left.

      -
      - - Right -

      Content to the right.

      +Auto}> + Automatically positions based on available space. `, - angular: ` - Top -

      Content above the trigger.

      -
      - - Bottom -

      Content below the trigger.

      + angular: ` + Above + Content positioned above the trigger. - - Left -

      Content to the left.

      + + Below + Content positioned below the trigger. - - Right -

      Content to the right.

      + + Auto + Automatically positions based on available space. `, - webComponents: ` - Top -

      Content above the trigger.

      -
      - - Bottom -

      Content below the trigger.

      + webComponents: ` + Above + Content positioned above the trigger. - - Left -

      Content to the left.

      + + Below + Content positioned below the trigger. - - Right -

      Content to the right.

      + + Auto + Automatically positions based on available space. `, }, }, { - id: 'with-padding', - name: 'With padding', - description: 'Popover with custom padding', + id: "with-padding", + name: "With padding", + description: "Popover with and without padding", code: { - react: ` - Show details -

      Content with default padding applied.

      + react: `Padded}> + Content with padding applied. + +No padding}> + Content flush with popover boundaries. `, - angular: ` - Show details -

      Content with default padding applied.

      + angular: ` + Padded + Content with padding applied. + + + No padding + Content flush with popover boundaries. `, webComponents: ` - Show details -

      Content with default padding applied.

      + Padded + Content with padding applied. +
      + + No padding + Content flush with popover boundaries. `, }, }, { - id: 'with-max-width', - name: 'With max width', - description: 'Popover with constrained width', + id: "with-max-width", + name: "With max width", + description: "Popover with constrained width", code: { - react: ` - More info -

      This popover has a maximum width of 300 pixels to control content width.

      + react: `More info}> + This popover has a maximum width of 300 pixels to control content width. `, - angular: ` - More info -

      This popover has a maximum width of 300 pixels to control content width.

      + angular: ` + More info + This popover has a maximum width of 300 pixels to control content width. `, webComponents: ` More info -

      This popover has a maximum width of 300 pixels to control content width.

      + This popover has a maximum width of 300 pixels to control content width.
      `, }, }, diff --git a/docs/src/data/configurations/radio-group.ts b/docs/src/data/configurations/radio-group.ts index a0e19519a7..5ea227d7de 100644 --- a/docs/src/data/configurations/radio-group.ts +++ b/docs/src/data/configurations/radio-group.ts @@ -4,18 +4,18 @@ * Note: RadioGroup should be wrapped in FormItem for proper labeling. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const radioGroupConfigurations: ComponentConfigurations = { - componentSlug: 'radio-group', - componentName: 'Radio group', - defaultConfigurationId: 'basic', + componentSlug: "radio-group", + componentName: "Radio group", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic example', - description: 'Radio group with vertical layout', + id: "basic", + name: "Basic example", + description: "Radio group with vertical layout", code: { react: ` @@ -41,9 +41,9 @@ export const radioGroupConfigurations: ComponentConfigurations = { }, }, { - id: 'horizontal', - name: 'Horizontal layout', - description: 'Radio group arranged horizontally', + id: "horizontal", + name: "Horizontal layout", + description: "Radio group arranged horizontally", code: { react: ` @@ -69,9 +69,9 @@ export const radioGroupConfigurations: ComponentConfigurations = { }, }, { - id: 'with-descriptions', - name: 'With descriptions', - description: 'Radio items with additional description text', + id: "with-descriptions", + name: "With descriptions", + description: "Radio items with additional description text", code: { react: ` @@ -97,9 +97,54 @@ export const radioGroupConfigurations: ComponentConfigurations = { }, }, { - id: 'preselected', - name: 'Preselected', - description: 'Radio group with default selection', + id: "with-reveal", + name: "With reveal content", + description: "Radio item that reveals additional content when selected", + code: { + react: ` + + + + + + } + /> + +`, + angular: ` + + + + + + + + + + +`, + webComponents: ` + + + +
      + + + +
      +
      +
      +
      `, + }, + }, + { + id: "preselected", + name: "Preselected", + description: "Radio group with default selection", code: { react: ` @@ -125,50 +170,86 @@ export const radioGroupConfigurations: ComponentConfigurations = { }, }, { - id: 'disabled', - name: 'Disabled', - description: 'Radio group in disabled state', + id: "sizes", + name: "Sizes", + description: "Default and compact size variants", code: { - react: ` - - - + react: ` + + + + + + + + + `, - angular: ` - - - + angular: ` + + + + + + + + + `, - webComponents: ` - - - + webComponents: ` + + + + + + + + + `, }, }, { - id: 'error', - name: 'Error state', - description: 'Radio group showing validation error', + id: "states", + name: "States", + description: "Disabled and error states", code: { - react: ` + react: ` + + + + + + `, - angular: ` + angular: ` + + + + + + `, - webComponents: ` + webComponents: ` + + + + + + diff --git a/docs/src/data/configurations/radio-item.ts b/docs/src/data/configurations/radio-item.ts index fbe5961571..6844767d10 100644 --- a/docs/src/data/configurations/radio-item.ts +++ b/docs/src/data/configurations/radio-item.ts @@ -4,18 +4,18 @@ * RadioItem is a child component of RadioGroup. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const radioItemConfigurations: ComponentConfigurations = { - componentSlug: 'radio-item', - componentName: 'Radio item', - defaultConfigurationId: 'basic', + componentSlug: "radio-item", + componentName: "Radio item", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic radio item', - description: 'Single radio option within RadioGroup', + id: "basic", + name: "Basic radio item", + description: "Single radio option within RadioGroup", code: { react: ` @@ -35,9 +35,9 @@ export const radioItemConfigurations: ComponentConfigurations = { }, }, { - id: 'with-description', - name: 'With description', - description: 'Radio item with additional text', + id: "with-description", + name: "With description", + description: "Radio item with additional text", code: { react: ` diff --git a/docs/src/data/configurations/scrollable.ts b/docs/src/data/configurations/scrollable.ts deleted file mode 100644 index f61aa1be48..0000000000 --- a/docs/src/data/configurations/scrollable.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Scrollable Component Configurations - * - * Scrollable provides a scrollable container. - */ - -import type { ComponentConfigurations } from './types'; - -export const scrollableConfigurations: ComponentConfigurations = { - componentSlug: 'scrollable', - componentName: 'Scrollable', - defaultConfigurationId: 'basic', - - configurations: [ - { - id: 'basic', - name: 'Basic scrollable', - description: 'Scrollable content area', - code: { - react: ` -

      Long content that scrolls...

      -

      More content...

      -

      Even more content...

      -
      `, - angular: ` -

      Long content that scrolls...

      -

      More content...

      -

      Even more content...

      -
      `, - webComponents: ` -

      Long content that scrolls...

      -

      More content...

      -

      Even more content...

      -
      `, - }, - }, - { - id: 'horizontal', - name: 'Horizontal scroll', - description: 'Horizontally scrollable content', - code: { - react: ` -
      - Card 1 - Card 2 - Card 3 - Card 4 -
      -
      `, - angular: ` -
      - Card 1 - Card 2 - Card 3 - Card 4 -
      -
      `, - webComponents: ` -
      - Card 1 - Card 2 - Card 3 - Card 4 -
      -
      `, - }, - }, - ], -}; diff --git a/docs/src/data/configurations/side-menu-group.ts b/docs/src/data/configurations/side-menu-group.ts index 1034b75513..c5bf382f58 100644 --- a/docs/src/data/configurations/side-menu-group.ts +++ b/docs/src/data/configurations/side-menu-group.ts @@ -4,18 +4,18 @@ * SideMenuGroup is a collapsible child component of SideMenu. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const sideMenuGroupConfigurations: ComponentConfigurations = { - componentSlug: 'side-menu-group', - componentName: 'Side menu group', - defaultConfigurationId: 'basic', + componentSlug: "side-menu-group", + componentName: "Side menu group", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic side menu group', - description: 'Collapsible group within SideMenu', + id: "basic", + name: "Basic side menu group", + description: "Collapsible group within SideMenu", code: { react: ` @@ -49,6 +49,43 @@ export const sideMenuGroupConfigurations: ComponentConfigurations = { Monthly Annual +`, + }, + }, + { + id: "with-icon", + name: "With icon", + description: "Group headings with icons", + code: { + react: ` + + Active + Pending + + + Profile + Security + +`, + angular: ` + + Active + Pending + + + Profile + Security + +`, + webComponents: ` + + Active + Pending + + + Profile + Security + `, }, }, diff --git a/docs/src/data/configurations/side-menu-heading.ts b/docs/src/data/configurations/side-menu-heading.ts index 673b82a429..988b0e00bf 100644 --- a/docs/src/data/configurations/side-menu-heading.ts +++ b/docs/src/data/configurations/side-menu-heading.ts @@ -4,18 +4,18 @@ * SideMenuHeading is a child component of SideMenu. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const sideMenuHeadingConfigurations: ComponentConfigurations = { - componentSlug: 'side-menu-heading', - componentName: 'Side menu heading', - defaultConfigurationId: 'basic', + componentSlug: "side-menu-heading", + componentName: "Side menu heading", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic side menu heading', - description: 'Section heading within SideMenu', + id: "basic", + name: "Basic side menu heading", + description: "Section heading within SideMenu", code: { react: ` Main Menu @@ -40,6 +40,37 @@ export const sideMenuHeadingConfigurations: ComponentConfigurations = { Settings Profile Preferences +`, + }, + }, + { + id: "with-icon", + name: "With icon", + description: "Section headings with icons", + code: { + react: ` + Navigation + Dashboard + Reports + Configuration + Profile + Preferences +`, + angular: ` + Navigation + Dashboard + Reports + Configuration + Profile + Preferences +`, + webComponents: ` + Navigation + Dashboard + Reports + Configuration + Profile + Preferences `, }, }, diff --git a/docs/src/data/configurations/side-menu.ts b/docs/src/data/configurations/side-menu.ts index 2c0d9ba45e..600d5da3ac 100644 --- a/docs/src/data/configurations/side-menu.ts +++ b/docs/src/data/configurations/side-menu.ts @@ -4,18 +4,18 @@ * Side menu provides vertical navigation. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const sideMenuConfigurations: ComponentConfigurations = { - componentSlug: 'side-menu', - componentName: 'Side menu', - defaultConfigurationId: 'basic', + componentSlug: "side-menu", + componentName: "Side menu", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic side menu', - description: 'Simple navigation menu', + id: "basic", + name: "Basic side menu", + description: "Simple navigation menu", code: { react: `
      @@ -41,9 +41,9 @@ export const sideMenuConfigurations: ComponentConfigurations = { }, }, { - id: 'with-groups', - name: 'With groups', - description: 'Menu items organized into groups', + id: "with-groups", + name: "With sections", + description: "Menu items organized into sections", code: { react: `
      @@ -78,9 +78,9 @@ export const sideMenuConfigurations: ComponentConfigurations = { }, }, { - id: 'with-expandable-groups', - name: 'Expandable groups', - description: 'Collapsible menu sections', + id: "with-expandable-groups", + name: "With groups", + description: "Collapsible menu groups", code: { react: `
      diff --git a/docs/src/data/configurations/skeleton.ts b/docs/src/data/configurations/skeleton.ts index 593963cc5a..f802f39e17 100644 --- a/docs/src/data/configurations/skeleton.ts +++ b/docs/src/data/configurations/skeleton.ts @@ -4,82 +4,88 @@ * Skeletons show placeholder content while loading. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const skeletonConfigurations: ComponentConfigurations = { - componentSlug: 'skeleton', - componentName: 'Skeleton', - defaultConfigurationId: 'basic', + componentSlug: "skeleton", + componentName: "Skeleton", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic skeleton', - description: 'Simple loading placeholder', + id: "basic", + name: "Text", + description: "Text loading placeholders", code: { - react: ``, - angular: ``, - webComponents: ``, + react: ` + + +`, + angular: ` + + +`, + webComponents: ` + + +`, }, }, { - id: 'types', - name: 'Types', - description: 'Different skeleton shapes', + id: "content-types", + name: "Content types", + description: "Text, title, header, and paragraph skeletons", code: { - react: ` - - - - -`, - angular: ` - - - - -`, - webComponents: ` - - - - -`, + react: ` + + + +`, + angular: ` + + + +`, + webComponents: ` + + + +`, }, }, { - id: 'custom-size', - name: 'Custom size', - description: 'Skeleton with specific dimensions', + id: "media-types", + name: "Media types", + description: "Avatar, thumbnail, and image skeletons", code: { - react: ` + react: ` + `, - angular: ` + angular: ` + `, - webComponents: ` + webComponents: ` + `, }, }, { - id: 'card-loading', - name: 'Card loading state', - description: 'Skeleton inside a card', + id: "composite-types", + name: "Composite types", + description: "Pre-built skeleton layouts for common patterns", code: { - react: ` - - - -`, - angular: ` - - - -`, - webComponents: ` - - - -`, + react: ` + + +`, + angular: ` + + +`, + webComponents: ` + + +`, }, }, ], diff --git a/docs/src/data/configurations/spacer.ts b/docs/src/data/configurations/spacer.ts index 34608a713b..5a7143e2e8 100644 --- a/docs/src/data/configurations/spacer.ts +++ b/docs/src/data/configurations/spacer.ts @@ -4,18 +4,18 @@ * Spacer adds consistent vertical or horizontal space. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const spacerConfigurations: ComponentConfigurations = { - componentSlug: 'spacer', - componentName: 'Spacer', - defaultConfigurationId: 'basic', + componentSlug: "spacer", + componentName: "Spacer", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic spacer', - description: 'Vertical space between elements', + id: "basic", + name: "Basic spacer", + description: "Vertical space between elements", code: { react: `Content above
      @@ -41,9 +41,9 @@ export const spacerConfigurations: ComponentConfigurations = { }, }, { - id: 'vertical-sizes', - name: 'Vertical sizes', - description: 'Different vertical spacing amounts', + id: "vertical-sizes", + name: "Vertical sizes", + description: "Different vertical spacing amounts", code: { react: `S space
      @@ -51,12 +51,14 @@ export const spacerConfigurations: ComponentConfigurations = {
      + L space
      + 2XL space
      @@ -69,12 +71,14 @@ export const spacerConfigurations: ComponentConfigurations = {
      + L space
      + 2XL space
      @@ -87,12 +91,14 @@ export const spacerConfigurations: ComponentConfigurations = {
      + L space
      + 2XL space
      @@ -102,9 +108,9 @@ export const spacerConfigurations: ComponentConfigurations = { }, }, { - id: 'horizontal', - name: 'Horizontal spacing', - description: 'Space between inline elements', + id: "horizontal", + name: "Horizontal spacing", + description: "Space between inline elements", code: { react: `
      Left @@ -126,6 +132,34 @@ export const spacerConfigurations: ComponentConfigurations = { Right +
      `, + }, + }, + { + id: "fill", + name: "Fill available space", + description: "Horizontal spacer that fills remaining width", + code: { + react: `
      + Label + + + + Value +
      `, + angular: `
      + Label + + + + Value +
      `, + webComponents: `
      + Label + + + + Value
      `, }, }, diff --git a/docs/src/data/configurations/spinner.ts b/docs/src/data/configurations/spinner.ts index c59d4a6312..8f2dbc4194 100644 --- a/docs/src/data/configurations/spinner.ts +++ b/docs/src/data/configurations/spinner.ts @@ -4,28 +4,28 @@ * Spinners indicate loading or processing states. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const spinnerConfigurations: ComponentConfigurations = { - componentSlug: 'spinner', - componentName: 'Spinner', - defaultConfigurationId: 'basic', + componentSlug: "spinner", + componentName: "Spinner", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic spinner', - description: 'Simple loading spinner', + id: "basic", + name: "Basic spinner", + description: "Simple loading spinner", code: { - react: ``, - angular: ``, - webComponents: ``, + react: ``, + angular: ``, + webComponents: ``, }, }, { - id: 'sizes', - name: 'Sizes', - description: 'Different spinner sizes', + id: "sizes", + name: "Sizes", + description: "Different spinner sizes", code: { react: ` @@ -42,31 +42,28 @@ export const spinnerConfigurations: ComponentConfigurations = { }, }, { - id: 'types', - name: 'Types', - description: 'Infinite and progress spinners', + id: "with-progress", + name: "With progress", + description: "Spinner showing determinate progress", code: { - react: ` -`, - angular: ` -`, - webComponents: ` -`, + react: ``, + angular: ``, + webComponents: ``, }, }, { - id: 'inverted', - name: 'Inverted', - description: 'Spinner for dark backgrounds', + id: "inverted", + name: "Inverted", + description: "Spinner for dark backgrounds", code: { react: `
      - +
      `, angular: `
      - +
      `, webComponents: `
      - +
      `, }, }, diff --git a/docs/src/data/configurations/tab.ts b/docs/src/data/configurations/tab.ts index 816e3f83b4..d7bd22a08d 100644 --- a/docs/src/data/configurations/tab.ts +++ b/docs/src/data/configurations/tab.ts @@ -4,18 +4,18 @@ * Tab is a child component of Tabs. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const tabConfigurations: ComponentConfigurations = { - componentSlug: 'tab', - componentName: 'Tab', - defaultConfigurationId: 'basic', + componentSlug: "tab", + componentName: "Tab", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic tab', - description: 'Single tab within Tabs component', + id: "basic", + name: "Basic tab", + description: "Single tab within Tabs component", code: { react: ` diff --git a/docs/src/data/configurations/table-sort-header.ts b/docs/src/data/configurations/table-sort-header.ts index 4af571e8cd..0f846f7235 100644 --- a/docs/src/data/configurations/table-sort-header.ts +++ b/docs/src/data/configurations/table-sort-header.ts @@ -4,18 +4,18 @@ * Sort headers for table columns, used within Table's thead. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const tableSortHeaderConfigurations: ComponentConfigurations = { - componentSlug: 'table-sort-header', - componentName: 'TableSortHeader', - defaultConfigurationId: 'basic', + componentSlug: "table-sort-header", + componentName: "TableSortHeader", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic sort header', - description: 'Sortable column header with name and direction', + id: "basic", + name: "Basic sort header", + description: "Sortable column header", code: { react: ` Name @@ -23,24 +23,67 @@ export const tableSortHeaderConfigurations: ComponentConfigurations = { angular: ` Name `, - webComponents: ` + webComponents: ` Name `, }, }, { - id: 'sort-order', - name: 'With sort order', - description: 'Sort header with sortOrder for multi-column sort priority display', + id: "directions", + name: "Sort directions", + description: "Ascending, descending, and unsorted states", + code: { + react: ` + Ascending + + + Descending + + + Unsorted +`, + angular: ` + Ascending + + + Descending + + + Unsorted +`, + webComponents: ` + Ascending + + + Descending + + + Unsorted +`, + }, + }, + { + id: "sort-order", + name: "With sort order", + description: "Sort header with sortOrder for multi-column sort priority display", code: { react: ` Name + + + Date `, angular: ` Name + + + Date `, - webComponents: ` + webComponents: ` Name + + + Date `, }, }, diff --git a/docs/src/data/configurations/table.ts b/docs/src/data/configurations/table.ts index 0ba682e78a..dd87a8972f 100644 --- a/docs/src/data/configurations/table.ts +++ b/docs/src/data/configurations/table.ts @@ -4,20 +4,20 @@ * Tables display data in rows and columns. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const tableConfigurations: ComponentConfigurations = { - componentSlug: 'table', - componentName: 'Table', - defaultConfigurationId: 'basic', + componentSlug: "table", + componentName: "Table", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic table', - description: 'Simple table with data', + id: "basic", + name: "Basic table", + description: "Simple table with data", code: { - react: ` + react: ` Name @@ -38,7 +38,7 @@ export const tableConfigurations: ComponentConfigurations = { `, - angular: ` + angular: ` Name @@ -59,8 +59,8 @@ export const tableConfigurations: ComponentConfigurations = { `, - webComponents: ` - + webComponents: ` +
      @@ -85,9 +85,9 @@ export const tableConfigurations: ComponentConfigurations = { }, }, { - id: 'striped', - name: 'Striped rows', - description: 'Alternating row colors for readability', + id: "striped", + name: "Striped rows", + description: "Alternating row colors for readability", code: { react: ` @@ -141,8 +141,8 @@ export const tableConfigurations: ComponentConfigurations = { `, - webComponents: ` -
      Name
      + webComponents: ` +
      @@ -172,11 +172,12 @@ export const tableConfigurations: ComponentConfigurations = { }, }, { - id: 'relaxed', - name: 'Relaxed variant', - description: 'More vertical padding for comfortable reading', + id: "relaxed", + name: "Size", + description: "Normal and relaxed padding comparison", code: { - react: ` + react: `Normal + @@ -193,8 +194,9 @@ export const tableConfigurations: ComponentConfigurations = { -`, - angular: ` + +Relaxed + @@ -211,110 +213,83 @@ export const tableConfigurations: ComponentConfigurations = { -`, - webComponents: ` -
      Item
      ServiceRegister a new or used vehicle
      ServiceRegister a new or used vehicle
      - - - - - - - - - - - - - - - - -
      ServiceDescription
      License renewalRenew your driver's license online
      Vehicle registrationRegister a new or used vehicle
      -
      `, - }, - }, - { - id: 'sticky-header', - name: 'Sticky header', - description: 'Header stays visible when scrolling', - code: { - react: ` +`, + angular: `Normal + - ID - Name - Department + Service + Description - 001 - Alice Johnson - Engineering - - - 002 - Bob Williams - Marketing + License renewal + Renew your driver's license online - 003 - Carol Davis - Finance + Vehicle registration + Register a new or used vehicle -
      `, - angular: ` + +Relaxed + - ID - Name - Department + Service + Description - 001 - Alice Johnson - Engineering - - - 002 - Bob Williams - Marketing + License renewal + Renew your driver's license online - 003 - Carol Davis - Finance + Vehicle registration + Register a new or used vehicle `, - webComponents: ` - + webComponents: `Normal + +
      - - - + + - - - + + + + + + + + +
      IDNameDepartmentServiceDescription
      001Alice JohnsonEngineeringLicense renewalRenew your driver's license online
      Vehicle registrationRegister a new or used vehicle
      +
      +Relaxed + + + + + + + + - - - + + - - - + +
      ServiceDescription
      002Bob WilliamsMarketingLicense renewalRenew your driver's license online
      003Carol DavisFinanceVehicle registrationRegister a new or used vehicle
      @@ -322,17 +297,16 @@ export const tableConfigurations: ComponentConfigurations = { }, }, { - id: 'full-width', - name: 'Full width', - description: 'Table that spans container width', + id: "constrained-width", + name: "Constrained width", + description: "Table with a fixed width", code: { - react: ` + react: ` Application ID Applicant Status - Submitted @@ -340,23 +314,20 @@ export const tableConfigurations: ComponentConfigurations = { APP-2024-001 John Smith Under review - Jan 15, 2024 APP-2024-002 Jane Doe Approved - Jan 14, 2024 `, - angular: ` + angular: ` Application ID Applicant Status - Submitted @@ -364,24 +335,21 @@ export const tableConfigurations: ComponentConfigurations = { APP-2024-001 John Smith Under review - Jan 15, 2024 APP-2024-002 Jane Doe Approved - Jan 14, 2024 `, - webComponents: ` - + webComponents: ` +
      - @@ -389,13 +357,11 @@ export const tableConfigurations: ComponentConfigurations = { - -
      Application ID Applicant StatusSubmitted
      APP-2024-001 John Smith Under reviewJan 15, 2024
      APP-2024-002 Jane Doe ApprovedJan 14, 2024
      @@ -403,16 +369,14 @@ export const tableConfigurations: ComponentConfigurations = { }, }, { - id: 'single-sort', - name: 'Single-column sorting', - description: 'Sortable columns using TableSortHeader (default single sort mode)', + id: "single-sort", + name: "Single-column sorting", + description: "Sortable columns using TableSortHeader (default single sort mode)", code: { react: ` console.log(detail)}> - - Name - + Name Status @@ -437,9 +401,7 @@ export const tableConfigurations: ComponentConfigurations = { angular: ` - - Name - + Name Status @@ -461,44 +423,53 @@ export const tableConfigurations: ComponentConfigurations = { `, - webComponents: ` - + webComponents: ` +
      - + - - - - - - - - - - + + + + +
      NameName Status Date
      John SmithActiveJan 15, 2024
      Jane DoePendingJan 16, 2024
      Alice JohnsonActive2024-01-15
      Charlie BrownPending2024-03-20
      Bob SmithActive2024-02-10
      Emma WilsonInactive2023-12-01
      David LeePending2024-01-30
      -
      `, +
      +`, }, }, { - id: 'multi-sort', - name: 'Multi-column sorting', - description: 'Sort by multiple columns with sortMode="multi" and sortOrder for priority', + id: "multi-sort", + name: "Multi-column sorting", + description: + 'Sort by multiple columns with sortMode="multi" and sortOrder for priority', code: { react: ` console.log(detail.sorts)}> + Name - Name - - - Status + Status Date @@ -521,11 +492,9 @@ export const tableConfigurations: ComponentConfigurations = { angular: ` + Name - Name - - - Status + Status Date @@ -545,29 +514,43 @@ export const tableConfigurations: ComponentConfigurations = { `, - webComponents: ` - + webComponents: ` +
      - - + + - - - - - - - - - - + + + + +
      NameStatusNameStatus Date
      John SmithActiveJan 15, 2024
      Jane DoePendingJan 16, 2024
      Alice JohnsonActive2024-01-15
      Charlie BrownPending2024-03-20
      Bob SmithActive2024-02-10
      Emma WilsonInactive2023-12-01
      David LeePending2024-01-30
      -
      `, +
      +`, }, }, ], diff --git a/docs/src/data/configurations/tabs.ts b/docs/src/data/configurations/tabs.ts index 3eb51c97fa..2983f96485 100644 --- a/docs/src/data/configurations/tabs.ts +++ b/docs/src/data/configurations/tabs.ts @@ -49,6 +49,28 @@ export const tabsConfigurations: ComponentConfigurations = {

      Historical data goes here.

      +`, + }, + }, + { + id: "segmented", + name: "Segmented variant", + description: "Pill/button style tabs", + code: { + react: ` + Daily view + Weekly view + Monthly view +`, + angular: ` + Daily view + Weekly view + Monthly view +`, + webComponents: ` + Daily view + Weekly view + Monthly view `, }, }, @@ -75,43 +97,84 @@ export const tabsConfigurations: ComponentConfigurations = { }, }, { - id: "segmented", - name: "Segmented variant", - description: "Pill/button style tabs", + id: "with-badge", + name: "With badge in heading", + description: "Tab heading with a badge using the heading slot", code: { - react: ` - Daily view - Weekly view - Monthly view + react: ` + + Your messages will appear here. + + Notifications }> + You have 3 unread notifications. + + + Manage your preferences. + `, - angular: ` - Daily view - Weekly view - Monthly view + angular: ` + + Your messages will appear here. + + + Notifications + You have 3 unread notifications. + + + Manage your preferences. + `, - webComponents: ` - Daily view - Weekly view - Monthly view + webComponents: ` + + Your messages will appear here. + + + Notifications + You have 3 unread notifications. + + + Manage your preferences. + `, }, }, { - id: "no-url-update", - name: "Without URL update", - description: "Tabs that do not update browser URL", + id: "disabled", + name: "Disabled tab", + description: "Tab that cannot be selected", code: { - react: ` - Settings panel - Preferences panel + react: ` + + This tab is active. + + + This content is not accessible. + + + This tab is also available. + `, - angular: ` - Settings panel - Preferences panel + angular: ` + + This tab is active. + + + This content is not accessible. + + + This tab is also available. + `, - webComponents: ` - Settings panel - Preferences panel + webComponents: ` + + This tab is active. + + + This content is not accessible. + + + This tab is also available. + `, }, }, @@ -130,7 +193,7 @@ export const tabsConfigurations: ComponentConfigurations = { Content 2 Content 3 `, - webComponents: ` + webComponents: ` Content 1 Content 2 Content 3 diff --git a/docs/src/data/configurations/temporary-notification.ts b/docs/src/data/configurations/temporary-notification.ts index fbdaf8916d..ac70544527 100644 --- a/docs/src/data/configurations/temporary-notification.ts +++ b/docs/src/data/configurations/temporary-notification.ts @@ -1,90 +1,152 @@ /** * TemporaryNotification Component Configurations * - * Temporary notifications appear briefly then dismiss. + * Temporary notifications appear briefly to confirm actions. + * Uses TemporaryNotification controller API from @abgov/ui-components-common. + * Requires a goa-temp-notification-ctrl container on the page. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const temporaryNotificationConfigurations: ComponentConfigurations = { - componentSlug: 'temporary-notification', - componentName: 'Temporary notification', - defaultConfigurationId: 'basic', + componentSlug: "temporary-notification", + componentName: "Temporary notification", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic notification', - description: 'Simple temporary message', + id: "basic", + name: "Basic notification", + description: "Simple temporary message", code: { - react: ` - Your changes have been saved. -`, - angular: ` - Your changes have been saved. -`, - webComponents: ` - Your changes have been saved. -`, + react: ` + + { + TemporaryNotification.show("You have a notification", { + type: "basic", + duration: "short", + }); +}}>Notification`, + angular: ` + +Notification + + +`, + webComponents: ` + +Notification + +`, }, }, { - id: 'types', - name: 'Notification types', - description: 'Different message types', + id: "types", + name: "Notification types", + description: "All available temporary notification types", code: { - react: ` - Action completed successfully. - - - New updates available. - - - Please review your submission. - - - Session expiring soon. -`, - angular: ` - Action completed successfully. - - - New updates available. - - - Please review your submission. - - - Session expiring soon. -`, - webComponents: ` - Action completed successfully. - - - New updates available. - - - Please review your submission. - - - Session expiring soon. -`, + react: ` + + TemporaryNotification.show("Basic message", { type: "basic" })} mb="xs">Basic + TemporaryNotification.show("Action completed.", { type: "success" })} mb="xs">Success + TemporaryNotification.show("Something went wrong.", { type: "failure" })}>Failure`, + angular: ` + +Basic +Success +Failure + + +`, + webComponents: ` + +Basic +Success +Failure + +`, }, }, { - id: 'with-actions', - name: 'With actions', - description: 'Notification with action buttons', + id: "with-progress", + name: "Progress and indeterminate", + description: + "Notifications for loading states (note: progress and indeterminate types may have rendering issues)", code: { - react: ` - File uploaded. View file -`, - angular: ` - File uploaded. View file -`, - webComponents: ` - File uploaded. View file -`, + react: ` + + { + const uuid = TemporaryNotification.show("Uploading file...", { type: "progress" }); + TemporaryNotification.setProgress(uuid, 65); +}} mb="xs">Progress + { + TemporaryNotification.show("Processing your request...", { type: "indeterminate" }); +}}>Indeterminate`, + angular: ` + +Progress +Indeterminate + + +`, + webComponents: ` + +Progress +Indeterminate + +`, }, }, ], diff --git a/docs/src/data/configurations/text-area.ts b/docs/src/data/configurations/text-area.ts index 84a7eb5794..6f603e5231 100644 --- a/docs/src/data/configurations/text-area.ts +++ b/docs/src/data/configurations/text-area.ts @@ -4,18 +4,18 @@ * Note: TextArea should be wrapped in FormItem for proper labeling. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const textAreaConfigurations: ComponentConfigurations = { - componentSlug: 'text-area', - componentName: 'Text area', - defaultConfigurationId: 'basic', + componentSlug: "text-area", + componentName: "Text area", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic example', - description: 'Text area wrapped in FormItem with label', + id: "basic", + name: "Basic example", + description: "Text area wrapped in FormItem with label", code: { react: ` @@ -29,9 +29,9 @@ export const textAreaConfigurations: ComponentConfigurations = { }, }, { - id: 'with-placeholder', - name: 'With placeholder', - description: 'Text area with placeholder text', + id: "with-placeholder", + name: "With placeholder", + description: "Text area with placeholder text", code: { react: ` @@ -45,9 +45,9 @@ export const textAreaConfigurations: ComponentConfigurations = { }, }, { - id: 'custom-rows', - name: 'Custom rows', - description: 'Text area with custom height', + id: "custom-height", + name: "Custom height", + description: "Text area with custom row count", code: { react: ` @@ -61,41 +61,66 @@ export const textAreaConfigurations: ComponentConfigurations = { }, }, { - id: 'character-count', - name: 'Character count', - description: 'Text area with character limit', + id: "character-count", + name: "Character count", + description: "Text area with character limit", code: { - react: ` - + react: ` + `, - angular: ` - + angular: ` + `, - webComponents: ` - + webComponents: ` + `, }, }, { - id: 'word-count', - name: 'Word count', - description: 'Text area with word limit', + id: "word-count", + name: "Word count", + description: "Text area with word limit", code: { - react: ` - + react: ` + `, - angular: ` - + angular: ` + `, - webComponents: ` - + webComponents: ` + `, }, }, { - id: 'states', - name: 'States', - description: 'Disabled, readonly, and error states', + id: "sizes", + name: "Sizes", + description: "Default and compact size variants", + code: { + react: ` + + + + +`, + angular: ` + + + + +`, + webComponents: ` + + + + +`, + }, + }, + { + id: "states", + name: "States", + description: "Disabled, readonly, and error states", code: { react: ` diff --git a/docs/src/data/configurations/text.ts b/docs/src/data/configurations/text.ts index 08f2b2684d..49c746f308 100644 --- a/docs/src/data/configurations/text.ts +++ b/docs/src/data/configurations/text.ts @@ -4,18 +4,18 @@ * Text component provides consistent typography styles. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const textConfigurations: ComponentConfigurations = { - componentSlug: 'text', - componentName: 'Text', - defaultConfigurationId: 'basic', + componentSlug: "text", + componentName: "Text", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic text', - description: 'Standard paragraph text', + id: "basic", + name: "Basic text", + description: "Standard paragraph text", code: { react: `This is a paragraph of text with default styling.`, angular: `This is a paragraph of text with default styling.`, @@ -23,76 +23,96 @@ export const textConfigurations: ComponentConfigurations = { }, }, { - id: 'headings', - name: 'Headings', - description: 'Different heading levels', + id: "heading-sizes", + name: "Heading sizes", + description: "All heading text sizes", code: { - react: `Heading 1 -Heading 2 -Heading 3 -Heading 4`, - angular: `Heading 1 -Heading 2 -Heading 3 -Heading 4`, - webComponents: `Heading 1 -Heading 2 -Heading 3 -Heading 4`, - }, - }, - { - id: 'heading-sizes', - name: 'Heading sizes', - description: 'Different heading text sizes', - code: { - react: `Heading XL + react: ` +Heading XL + Heading L + Heading M + Heading S -Heading XS`, - angular: `Heading XL + +Heading XS + +Heading 2XS +`, + angular: ` +Heading XL + Heading L + Heading M + Heading S -Heading XS`, - webComponents: `Heading XL + +Heading XS + +Heading 2XS +`, + webComponents: ` +Heading XL + Heading L + Heading M + Heading S -Heading XS`, + +Heading XS + +Heading 2XS +`, }, }, { - id: 'body-sizes', - name: 'Body sizes', - description: 'Different body text sizes', + id: "body-sizes", + name: "Body sizes", + description: "All body text sizes", code: { - react: `Body large text + react: ` +Body large text + Body medium text (default) + Body small text -Body extra small text`, - angular: `Body large text + +Body extra small text +`, + angular: ` +Body large text + Body medium text (default) + Body small text -Body extra small text`, - webComponents: `Body large text + +Body extra small text +`, + webComponents: ` +Body large text + Body medium text (default) + Body small text -Body extra small text`, + +Body extra small text +`, }, }, { - id: 'with-margins', - name: 'With margins', - description: 'Text with spacing', + id: "color", + name: "Color", + description: "Primary and secondary text colors", code: { - react: `Paragraph with bottom margin. -Paragraph with top and bottom margin.`, - angular: `Paragraph with bottom margin. -Paragraph with top and bottom margin.`, - webComponents: `Paragraph with bottom margin. -Paragraph with top and bottom margin.`, + react: `Primary color text (default) +Secondary color text`, + angular: `Primary color text (default) +Secondary color text`, + webComponents: `Primary color text (default) +Secondary color text`, }, }, ], diff --git a/docs/src/data/configurations/tooltip.ts b/docs/src/data/configurations/tooltip.ts index 7eca559b25..b8177f4c22 100644 --- a/docs/src/data/configurations/tooltip.ts +++ b/docs/src/data/configurations/tooltip.ts @@ -4,18 +4,18 @@ * Tooltips provide additional context on hover or focus. */ -import type { ComponentConfigurations } from './types'; +import type { ComponentConfigurations } from "./types"; export const tooltipConfigurations: ComponentConfigurations = { - componentSlug: 'tooltip', - componentName: 'Tooltip', - defaultConfigurationId: 'basic', + componentSlug: "tooltip", + componentName: "Tooltip", + defaultConfigurationId: "basic", configurations: [ { - id: 'basic', - name: 'Basic tooltip', - description: 'Simple tooltip on hover', + id: "basic", + name: "Basic tooltip", + description: "Simple tooltip on hover", code: { react: ` Hover me @@ -29,9 +29,9 @@ export const tooltipConfigurations: ComponentConfigurations = { }, }, { - id: 'positions', - name: 'Positions', - description: 'Tooltip placement options', + id: "positions", + name: "Positions", + description: "Tooltip placement options", code: { react: ` Top @@ -72,9 +72,9 @@ export const tooltipConfigurations: ComponentConfigurations = { }, }, { - id: 'with-icon-button', - name: 'With icon button', - description: 'Tooltip on an icon button', + id: "with-icon-button", + name: "With icon button", + description: "Tooltip on an icon button", code: { react: ` @@ -88,18 +88,36 @@ export const tooltipConfigurations: ComponentConfigurations = { }, }, { - id: 'hover-delay', - name: 'Hover delay', - description: 'Tooltip with custom hover delay', + id: "halign", + name: "Horizontal alignment", + description: "Tooltip alignment relative to the trigger", code: { - react: ` - Delayed tooltip + react: ` + Left + + + Center + + + Right `, - angular: ` - Delayed tooltip + angular: ` + Left + + + Center + + + Right `, - webComponents: ` - Delayed tooltip + webComponents: ` + Left + + + Center + + + Right `, }, }, diff --git a/docs/src/data/configurations/types.ts b/docs/src/data/configurations/types.ts index 783868787a..ad97fc82e0 100644 --- a/docs/src/data/configurations/types.ts +++ b/docs/src/data/configurations/types.ts @@ -6,7 +6,7 @@ * can browse via dropdown selector. */ -export type Framework = 'react' | 'angular' | 'webComponents'; +export type Framework = "react" | "angular" | "webComponents"; /** * A single configuration for a component. diff --git a/docs/src/data/configurations/work-side-menu.ts b/docs/src/data/configurations/work-side-menu.ts index 10c40d5717..bfb35371e1 100644 --- a/docs/src/data/configurations/work-side-menu.ts +++ b/docs/src/data/configurations/work-side-menu.ts @@ -38,21 +38,44 @@ export const workSideMenuConfigurations: ComponentConfigurations = {
      `, - webComponents: ` - + webComponents: ` + + + + + `, + }, + }, + { + id: "with-user-profile", + name: "With user profile", + description: "Menu showing user name and role", + code: { + react: ` navigate(path)} + primaryContent={ + <> + + + + } +/>`, + angular: ` + + + + +`, + webComponents: ` - - - - -`, + + +`, }, }, { @@ -98,34 +121,64 @@ export const workSideMenuConfigurations: ComponentConfigurations = { `, - webComponents: ` - - -
      - - - - - - - -
      -
      - - - `, + webComponents: ` +
      + + + + + + + +
      +
      `, + }, + }, + { + id: "secondary-menu", + name: "Secondary menu", + description: "Drilled-in menu with back navigation", + code: { + react: ` navigate(path)} + primaryContent={ + <> + + + + + + + + } +/>`, + angular: ` + + + + + + + + +`, + webComponents: ` + + + + + + +`, }, }, { - id: 'with-notifications', - name: 'With notifications', - description: 'Work menu with notification popover panel', + id: "with-notifications", + name: "With notifications", + description: "Work menu with notification popover panel", code: { react: ` Date: Tue, 31 Mar 2026 11:18:14 -0600 Subject: [PATCH 101/103] chore: Updating web-components from 1.x to 2.x --- docs/src/pages/get-started/migration-guide.astro | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/src/pages/get-started/migration-guide.astro b/docs/src/pages/get-started/migration-guide.astro index 7aa29380b9..06fbbcbe91 100644 --- a/docs/src/pages/get-started/migration-guide.astro +++ b/docs/src/pages/get-started/migration-guide.astro @@ -189,7 +189,10 @@ import DocumentationPageLayout from "../../layouts/DocumentationPageLayout.astro
      • New products should use DS 2.0
      • Active products should aim to migrate by September 2026
      • -
      • Web components 1.x receive limited fixes from March to September
      • +
      • + After launch, web components will move to version 2.x. Although this is a major + version update, it does not include breaking changes. +
      • Angular 4.x and React 6.x receive limited fixes or features from March to September From 5d88e17216bcde3b0a85bf2450b0e9b21a2698c0 Mon Sep 17 00:00:00 2001 From: mxsoco Date: Mon, 30 Mar 2026 20:36:45 -0600 Subject: [PATCH 102/103] fix(#3685): adjust width of "reveal" slot for checkbox and radio buttons --- apps/prs/angular/src/app/app.component.html | 4 + apps/prs/angular/src/app/app.routes.ts | 2 + .../routes/bugs/3685/bug3685.component.html | 230 +++++++++ .../src/routes/bugs/3685/bug3685.component.ts | 65 +++ apps/prs/react/src/app/app.tsx | 4 + apps/prs/react/src/main.tsx | 2 + apps/prs/react/src/routes/bugs/bug3685.tsx | 476 ++++++++++++++++++ .../src/components/checkbox/Checkbox.svelte | 3 +- .../components/radio-item/RadioItem.svelte | 5 +- 9 files changed, 788 insertions(+), 3 deletions(-) create mode 100644 apps/prs/angular/src/routes/bugs/3685/bug3685.component.html create mode 100644 apps/prs/angular/src/routes/bugs/3685/bug3685.component.ts create mode 100644 apps/prs/react/src/routes/bugs/bug3685.tsx diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index ced4988e6b..ea9e9da446 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -244,6 +244,10 @@ label="3614 IconButton Hitboxes" url="/bugs/3614" > + +

        3685 - Checkbox & Radio: Reveal width not aligned with item

        +

        Version 1

        + Add another item + +

        Fill in the information to create a new item

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cancel + Save new item + + +
        + + + + + + + + + + + + + + + + + + + Help text with a link. + + + + + + + + + + + + + + +

        Version 2 (Experimental)

        + Add another item + +

        Fill in the information to create a new item

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cancel + Save new item + + +
        +

        Regular size

        + + + + + + + + + + + + + + + + + + + Help text with a link. + + + + + + + + + + + + + + +

        Compact size

        + + + + + + + + + + + + + + + + + + + Help text with a link. + + + + + + + + + + + + + +
      \ No newline at end of file diff --git a/apps/prs/angular/src/routes/bugs/3685/bug3685.component.ts b/apps/prs/angular/src/routes/bugs/3685/bug3685.component.ts new file mode 100644 index 0000000000..3d84dd7f61 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3685/bug3685.component.ts @@ -0,0 +1,65 @@ +import { Component } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { + GoabButton, + GoabDropdown, + GoabDropdownItem, + GoabModal, + GoabTextArea, + GoabButtonGroup, + GoabCheckbox, + GoabCheckboxList, + GoabFormItem, + GoabInput, + GoabRadioGroup, + GoabRadioItem, +} from "@abgov/angular-components"; + + +@Component({ + standalone: true, + selector: "abgov-bug3685", + templateUrl: "./bug3685.component.html", + imports: [CommonModule, + GoabButton, + GoabDropdown, + GoabDropdownItem, + GoabModal, + GoabTextArea, + GoabButtonGroup, + GoabCheckbox, + GoabCheckboxList, + GoabFormItem, + GoabInput, + GoabRadioGroup, + GoabRadioItem, +], +}) +export class Bug3685Component { + open = false; + openTwo = false; + type: string | undefined = ""; + name = ""; + description = ""; + + toggleModal() { + this.open = !this.open; + } + + toggleModalTwo() { + this.openTwo = !this.openTwo; + } + + updateType(event: any) { + this.type = event.value; + } + + updateName(event: any) { + this.name = event.value; + } + + updateDescription(event: any) { + this.description = event.value; + } + +} diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index 57e8bb0bcc..04194782fb 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -233,6 +233,10 @@ export function App() { label="3614 IconButton Hitboxes" url="/bugs/3614" /> + diff --git a/apps/prs/react/src/main.tsx b/apps/prs/react/src/main.tsx index ef2aaf9bee..59a0862e04 100644 --- a/apps/prs/react/src/main.tsx +++ b/apps/prs/react/src/main.tsx @@ -53,6 +53,7 @@ import { Bug3498Route } from "./routes/bugs/bug3498"; import { Bug3607Route } from "./routes/bugs/bug3607"; import { Bug3505Route } from "./routes/bugs/bug3505"; import { Bug3614Route } from "./routes/bugs/bug3614"; +import { Bug3685Route } from "./routes/bugs/bug3685"; import { EverythingRoute } from "./routes/everything"; import { EverythingBRoute } from "./routes/everything-b"; @@ -153,6 +154,7 @@ root.render( } /> } /> } /> + } /> } /> } /> diff --git a/apps/prs/react/src/routes/bugs/bug3685.tsx b/apps/prs/react/src/routes/bugs/bug3685.tsx new file mode 100644 index 0000000000..66357854f4 --- /dev/null +++ b/apps/prs/react/src/routes/bugs/bug3685.tsx @@ -0,0 +1,476 @@ +import { useState } from 'react'; +import { + GoabFormItem, + GoabButton, + GoabButtonGroup, + GoabDropdown, + GoabDropdownItem, + GoabCheckbox, + GoabCheckboxList, + GoabModal, + GoabInput, + GoabRadioGroup, + GoabTextArea, + GoabRadioItem, +} from "@abgov/react-components"; + +export function Bug3685Route() { + const [open, setOpen] = useState(false); + const [openTwo, setOpenTwo] = useState(false); + const [type, setType] = useState(); + const [name, setName] = useState(); + const [description, setDescription] = useState(); + const [contactMethod, setContactMethod] = useState(""); + const [contactMethodTwo, setContactMethodTwo] = useState(""); + const [contactMethodThree, setContactMethodThree] = useState(""); + const [checkboxSelection, setCheckboxSelection] = useState([]); + const [checkboxSelectionTwo, setCheckboxSelectionTwo] = useState([]); + const [checkboxSelectionThree, setCheckboxSelectionThree] = useState([]); + + return ( +
      +

      3685 - Checkbox & Radio: Reveal width not aligned with item

      +

      Version 1

      + + setOpen(true)}> + Add another item + + + setOpen(false)}> + Cancel + + setOpen(false)}> + Save new item + + + } + > +

      Fill in the information to create a new item

      + + setType(e.value)} value={type}> + + + + + + setName(e.value)} + value={name} + name="name" + width="100%" + /> + + + setContactMethodTwo(e.value)} + > + + + + + + } + /> + + + + + setCheckboxSelectionTwo(e.value || [])} + > + + Help text with as a description. + + } + text="Travel" + value="travel-1" + /> + + + + + + } + /> + + + + setDescription(e.value)} + value={description} + /> + +
      + + setContactMethod(e.value)} + > + + + + + + } + /> + + + + + setCheckboxSelection(e.value || [])} + > + + Help text with as a description. + + } + text="Travel" + value="travel-0" + /> + + + + + + } + /> + + + +

      Version 2 (Experimental)

      +

      Regular size

      + + setOpenTwo(true)}> + Add another item + + + setOpenTwo(false)}> + Cancel + + setOpenTwo(false)}> + Save new item + + + } + > +

      Fill in the information to create a new item

      + + setType(e.value)} value={type}> + + + + + + setName(e.value)} + value={name} + name="name" + width="100%" + /> + + + setContactMethodTwo(e.value)} + > + + + + + + } + /> + + + + + setCheckboxSelectionTwo(e.value || [])} + > + + Help text with as a description. + + } + text="Travel" + value="travel-1" + /> + + + + + + } + /> + + + + setDescription(e.value)} + value={description} + /> + +
      + + setContactMethodTwo(e.value)} + > + + + + + + } + /> + + + + + setCheckboxSelectionTwo(e.value || [])} + > + + Help text with as a description. + + } + text="Travel" + value="travel-1" + /> + + + + + + } + /> + + + +

      Compact size

      + + setContactMethodThree(e.value)} + > + + + + + + } + /> + + + + + setCheckboxSelectionThree(e.value || [])} + > + + Help text with as a description. + + } + name="travel-2" + text="Travel" + value="travel-2" + /> + + + + + + } + /> + + +
      + + ); +} diff --git a/libs/web-components/src/components/checkbox/Checkbox.svelte b/libs/web-components/src/components/checkbox/Checkbox.svelte index f480ebf92b..8c2b535352 100644 --- a/libs/web-components/src/components/checkbox/Checkbox.svelte +++ b/libs/web-components/src/components/checkbox/Checkbox.svelte @@ -380,7 +380,6 @@ max-width: ${maxwidth}; display: flex; flex-direction: column; justify-content: flex-start; - align-items: flex-start; height: auto; /* Automatically adjusts to content */ min-height: 0; /* Ensures no unnecessary minimum height */ padding: 0; /* Remove padding if it's affecting height */ @@ -402,6 +401,7 @@ max-width: ${maxwidth}; label { display: flex; cursor: pointer; + align-self: flex-start; } /* Hover style when the user hovers over the label */ @@ -439,6 +439,7 @@ max-width: ${maxwidth}; border-left: 4px solid var(--goa-color-greyscale-200); padding: var(--goa-space-m); margin: var(--goa-space-2xs) 0 0 calc(var(--goa-space-s) - 2px); + box-sizing: border-box; } /* Container */ diff --git a/libs/web-components/src/components/radio-item/RadioItem.svelte b/libs/web-components/src/components/radio-item/RadioItem.svelte index b305b0cd18..0b11242336 100644 --- a/libs/web-components/src/components/radio-item/RadioItem.svelte +++ b/libs/web-components/src/components/radio-item/RadioItem.svelte @@ -310,7 +310,7 @@